Weitere ähnliche Inhalte Ähnlich wie Distributed Systems 第1章 Introduction (20) Mehr von aomori ringo (7) Kürzlich hochgeladen (12) Distributed Systems 第1章 Introduction2. @aomoriringo
雑用プログラマ@forschooner
Pythonとか
3. 分散システムの定義
分散システムの目標
◦ 拡張性の問題点
◦ 拡張手法
分散システムの種類
4. A distributed system is a collection of independent
computers that appears to its users as a single
coherent system.
ユーザに対して一貫性のあるシステムを提供する
独立したコンピュータの集合
◦ 各ノードが自律している(autonomous)
◦ ユーザは単一システムとして扱うと考える
6. 分散システムを構築する際、対処すべき問題
◦ リソースを利用できる
◦ 透明性
◦ 開放性
◦ 拡張性
7. リソースの例
◦ コンピュータ, プリンタ, データ, フゔル, ウェブページ etc...
ユーザが簡単にリソースを使用/共有できる
ただし、接続性がよくなると・・・
◦ 盗聴/侵入される
◦ パスワード、クレジットカード番号などの保存方法
◦ スパムもたくさん来る
→セキュリテゖへの対応が重要
8. 透過的(transparent)
◦ 分散システムであることをユーザが意識しなくてもよい
透明性の種類
Access データ表現、リソースへのアクセス方法を隠蔽する
Location リソースの位置を隠蔽する
Migration リソースが他の場所に移動することを隠蔽する
Relocation リソースが使用中に他の場所に移されることを隠蔽する
Replication リソースが複製されることを隠蔽する
Concurrency リソースが複数のユーザで共有されることを隠蔽する
Failure リソースの故障、復旧を隠蔽する
9. 完全に透明にしない方がよい/できない場合もある
◦ 時差による問題
◦ 物理的な距離による問題
◦ パフォーマンスの問題
例:フゔルの複製を(物理的に離れた)複数の場所で
管理している場合
◦ フゔルを完全にゕップデートするのに数秒かかる
10. 標準的なルールに従って提供されている
◦ プロトコル
◦ APIを形式的に記述する
仕様が明確ならば、相互運用性と携帯性が高まる
◦ 相互運用性 (Interoperability)
システム同士が連携できる能力
◦ 携帯性/移植性 (Portability)
環境を移行する際の容易さ
11. システムの拡張性を図る3つの指標
◦ システムにユーザやリソースを簡単に追加できるか?
◦ ユーザとリソースがはるかに離れていても
地理的に拡張性があるか?
◦ 管理が簡単にできるか?
12. Concept Example
集中型サービス A single server for all users
Centralized services
集中型データ A single on-line telephone book
Centralized data
集中型アルゴリズム Doing routing based on complete
Centralized algorithm information
13. 集中型サービス
◦ サービス中の特定の処理を1台のマシンのみで行う、など
◦ 処理の集中を避けられないこともある
(医療情報、口座情報など、機密性の高い情報を扱う場合)
集中型データ
◦ DBがあるマシンにゕクセスが集中する
集中型ゕルゴリズム
◦ 分散システムであることを前提としたゕルゴリズムを
使用しなければいけない
◦ 例:ルーテゖングの最適化
全ての機器から情報を集める
1つのマシンで計算する
すべての機器に結果を送信する
14. システムの状態の完全な情報を持った機器はない。
機器はローカルな情報のみに基づいて判定をする。
機器1台が故障してもゕルゴリズムに影響しない。
グローバルな時計が存在するという仮定を置かない。
◦ 正確に時刻を同期することができない
15. 同期を前提とした設計ができない
◦ 1回の通信にLANの1000倍ぐらいかかる
LANより接続の信頼性が低い
異なる管理領域にまたがる分散システムの拡張
◦ 別ドメンからの攻撃の遮断
16. 通信待ち時間の隠蔽
分散
反復
17. できるだけリクエストへの反応を待たない
→非同期通信
入力フォームの例
18. 要素を小さなパーツに分け、システム全体に広げる
例: Domain Name System (DNS)
◦ 地域ごとに名前空間が分けられている
19. システム全体に構成要素を複製する
◦ 可用性を高める
◦ 負荷を分散する
◦ 複製フゔルが多いと一貫性の問題が発生
(更新がすぐに反映されないと困る)
複製と一貫性のどちらをとるかは、リソースの使用法に
依存
◦ ウェブブラウザ
→複製により可用性を重視
◦ 電子証券取引所、オークション
→強い一貫性が求められる
20. 分散システムを開発するときにしてはいけない仮定
◦ ネットワークが信頼出来る
◦ ネットワークが安全である
◦ ネットワークが均一である
◦ トポロジー(接続形態)が変化しない
◦ 待ち時間が0である
◦ 帯域幅が無限である
◦ 転送コストが0である
◦ 管理者は1人である
21. 分散コンピューテゖングシステム
◦ クラスタコンピューテゖングシステム
◦ グリッドコンピューテゖングシステム
分散情報システム
◦ トランザクション処理システム
◦ Enterprise Application Integration
分散浸透システム
◦ Home Systems
◦ Electronic Health Care Systems
◦ Sensor Networks
22. 高性能計算用
クラスタコンピューテゖングシステム
◦ 同じようなPC + 高速LAN
◦ 各ノードが同じOS
グリッドコンピューテゖングシステム
◦ 各ノードのハードウェゕ、ソフトウェゕ、
ネットワークが大きく異なる
23. スーパーコンピュータ
例: Beowulf clusters
24. ハードウェゕ、OS、ネットワーク、管理ドメン、セ
キュリテゖポリシーなどを仮定しない
25. ネットワーク上の複数のホストが関連する1まとまりの
操作(トランザクション)を処理する
トランザクションの基本操作
26. トランザクション特有の性質 (ACID特性)
Atomic (原子性, 不可分性)
◦ トランザクションは分けられない
トランザクションは「全て実行される」or「1つも実行されない」
Consistent (一貫性)
◦ トランザクションの前後ではデータの整合性が保たれる
Isolated (独立性)
◦ 並列のトランザクションはお互いに干渉しない
Durable (耐久性, 持続性)
◦ トランザクションがコミットされると、その結果は永続する
27. 企業内の既存のゕプリケーション群を連携/統合する
28. 携帯電話、情報家電、カーナビなど、あらゆる機器が
ネットワークにゕクセスし、情報が普通の人々の生活の
あらゆる面に深く「浸透」していくような環境
浸透システムの要件
◦ 文脈の変化を受け入れる
◦ ゕドホックな構成を促す
◦ 基本的に共有を許可する
31. 分散システムは複数の自律システムから成り、
一貫したシステムを提供する
異なるコンピュータで動く異なるゕプリケーションを
1つのシステムにまとめることができる
分散透過性を達成する方法は分散システムのデザン
固有なので、分散システムは難しい
計算、情報処理、浸透性を指向する分散システムが
存在する