Más contenido relacionado
La actualidad más candente (20)
Similar a 第2章アーキテクチャ (20)
Más de Kenta Hattori (20)
第2章アーキテクチャ
- 2. はじめに
• ソフトウェアアーキテクチャ
– 論理的な構成
– どのようにソフトウェアコンポーネントを構成す
るか
– どのように相互作用すべきか
• システムアーキテクチャ
– 物理的な実現
– 実際にどのように実現するか
– 実際のマシン上へのSWコンポーネントの配置
• 自律システム
– フィードバック制御ループ
2013/1/25 分散システム本読書会 2
- 3. 2.1 アーキテクチャスタイル
• アーキテクチャスタイルはコンポーネントの観点から定式化される
– コンポーネント間の接続方法
– コンポーネント間で交換されるデータ
– これらの要素がどのように共同して1つのシステムを構成するか
• コンポーネント
– 明確に定義されたインタフェースを持つ交換可能なソフトウェア(構
成単位)
• コネクタ
– コンポーネント間の通信、調整、協力を伝えるメカニズム
– 遠隔手続き呼出し(RPC)、メッセージパッシング、ストリーミング
データ
• 分散システムにおいて重要なアーキテクチャスタイル
– 階層型アーキテクチャ
– オブジェクトベースアーキテクチャ
– データ中心型アーキテクチャ
– イベントベースアーキテクチャ
2013/1/25 分散システム本読書会 3
- 4. 階層型アーキテクチャ
• コンポーネントは階層 N層
的に構成される
• Li層のコンポーネントが N-1層
下位のLi-1層のコンポー
ネントを呼び出すこと
要求フロー↓ ↑応答フロー
ができる
• 反対は許されない
2層
• ネットワークのコン
ポーネントで広く採用
1層
されている
• 要求は階層を下方に、
結果は上方に流れる分散システム本読書会
2013/1/25 4
- 5. オブジェクトベースアーキテク
チャ
• 階層型より緩やかな オブジェク オブジェク
構成 ト ト
• 各オブジェクトはコ
ンポーネントに対応 オブジェク メソッド
ト 呼出し
• 各コンポーネントは オブジェク
(遠隔)オブジェク ト
ト呼出しを通じて接 オブジェク
続される ト
2013/1/25 分散システム本読書会 5
- 7. イベントベースアーキテクチャ
• プロセスはイベントの コンポーネン コンポーネン
伝播を通して通信 ト ト
• 出版・購読システム イベント配送
– プロセスがイベントを出
版 イベントバス
– ミドルウェアは、それら 出版
イベントを購読したプロ コンポーネン
セスだけが受信すること ト
を保証
• プロセスが疎結合にな
るという利点がある
– 互いに明示的に参照する
2013/1/25 必要が無い 分散システム本読書会 7
- 8. 共有データ空間
• イベントベースアー コンポーネン コンポーネン
ト ト
キテクチャ+データ
中心型アーキテク データ配送 出版
チャ
• プロセスは時間的に 共有(永続)データ空
も分離される 間
– 通信中にアクティブで
なくてもよい
2013/1/25 分散システム本読書会 8
- 10. 2.2.1 集中型アーキテクチャ
• サーバ:
– ファイルサービスやデータベースサービスのよう
に特定のサービスを実装しているプロセス
• クライアント:
– サーバに要求を送信することでサーバからのサー
ビスを要求し,サーバの応答を待つプロセス
結果を待つ
クライアント 要求応答
動作
要求 応答
サーバ
サービス提供
時間
2013/1/25 分散システム本読書会 10
- 11. クライアントーサーバ間の通信
• コネクションレス型プロトコル(例:UDP)
– 利点:LANなど高信頼な環境では効率的である
– 欠点:伝送障害に耐えうるプロトコルを作るのが困
難
• 返答メッセージが来ない場合,クライアントに要求を再送信
させる
• ただし,要求メッセージと応答メッセージのどちらが失われ
たのかクライアント側では判別できないので繰り返し等価
(idempotent)でない要求には対応できない
• 高信頼コネクション型プロトコル(例:TCP)
– 利点:通信の信頼性があまり高くない広域システム
では良く動作する
– 欠点:要求と応答メッセージが小さい場合はコネク
2013/1/25
ションの接続・切断のコストがかかる
分散システム本読書会 11
- 12. アプリケーションの階層化
• 多くの人々は以下の3つの論理レベルに区
別することを提唱
1. ユーザインタフェース層
• ユーザとの対話を取り扱う部分
2. プロセッシング層
• アプリケーションの中核機能を含む真ん中の部分
3. データ層
• データベースやファイルシステム上で動作する部
分
• 永続性を持つ
2013/1/25 分散システム本読書会 12
- 13. インターネット検索エンジンの
例
ユーザインタフェー ユーザインタ
ス フェースレベル
キーワード表現 リストを含むHTML
HTML生成器
ランキングされた
クエリ生成器 プロセスレベル
ページタイトルの
ランキング リスト
アルゴリズム
データベースクエリ
メタ情報を持つ
Webページを持つ Webページのタイトル データレベル
データベース
2013/1/25 分散システム本読書会 13
- 14. 2層アーキテクチャ
3層レイヤをクライアントとサーバに分ける
シンクライアント ファットライアント
ユーザ ユーザ ユーザ ユーザ ユーザ
インタフェー インタフェー インタフェー インタフェー インタフェー
ス ス ス ス ス
アプリケー アプリケー アプリケー
ション ション ション
サーバマシン
ス
インタフェー データベース
ユーザ
クライアントマシン
アプリケー アプリケー
ション
ション ション
アプリケー
データベース データベース データベース データベース データベース
(a) (b) (c) (d) (e)
2013/1/25 分散システム本読書会 14
- 16. 3層アーキテクチャ
• 1つのサーバが複数のサーバに置き換えら
れ,異なるマシン上で実行される
• サーバがときにはクライアントとしての役割
を果たす
結果待ち
ユーザ
インタフェース
処理要求 応答結果
データ待ち
アプリケーション
サーバ
データ要求 応答データ
データベース
サーバ サービス提供
時間
2013/1/25 分散システム本読書会 16
- 17. 2.2.2 非集中型アーキテクチャ
• 垂直分散
– 機能単位を複数マシンで分散
• 水平分散
– 同一機能を複数マシンで分散
– 複数マシンで負荷を分散
– Cf. P2P(ピアツーピア)システム
• P2Pシステム
– P2Pを構成するプロセスはすべて同じ
– プロセス間の相互作用は対称的
• クライアントでもありサーバでもある(サーバント、servent)
– オーバーレイネットワーク
• プロセス間のネットワーク
• ルーティングしてプロセス間でメッセージ通信
2013/1/25 分散システム本読書会 17
- 18. 構造化P2Pアーキテクチャ
• オーバレイネットワークを決定的手続きで構成
• 分散ハッシュテーブル
– ハッシュキーは128ビット、または、160ビットなど
の広いID空間
– 複数ノードでハッシュテーブルを分割
• ノードのハッシュ値によりID空間を分割
– ある距離メトリックにもとづいてデータアイテムの
キーをノード識別子にマップするスキームを実装
• データをLOOKUPするとき、そのデータが割り当て
られているノードを返す
– データが割り当てられているノードにルーティング
する
2013/1/25 分散システム本読書会 18
- 19. Chord [Stoica et al., 2003]
• succ(k)は最小のノード
id≧k
• LOOKUP(k)でsucc(k)を
返す
• メンバシップ管理
– 前後のノードに知らせ
る
2013/1/25 分散システム本読書会 19
- 21. 非構造化P2Pアーキテクチャ
• ランダムグラフに似たオーバレイネット
ワークを構築することがもくひょう
• 各ノードは近隣ノードのリストを保持す
る
– リストはランダムに構築される
– 近隣ノードはライブノードを表す
– 近隣ノードのリストは部分ビューとも呼ばれ
る
• データもノード上にランダムに配置
– 特定のデータの位置を特定するために検索ク
2013/1/25 エリをフラッディング(ブロードキャスト) 21
分散システム本読書会
- 22. オーバレイネットワークのトポロ
ジ管理
• 部分ビューから注意深くエントリを選択し、
交換することで、特定のオーバレイネット
ワークのトポロジを構築しを維持することが
可能
2013/1/25 分散システム本読書会 22
- 23. 2階層非構造化P2Pシステムによる
特定のオーバレイネットワークの
生成
• サイズN×Nの論理的なグリッドを考える
• 各ノードはc個の最寄りの近隣リストを維持する
– 2つのノード(a1, a2), (b1, b2)の距離はd1+d2と定義
– ただし、di = min(N-|ai-bi|, |ai-bi|)
2013/1/25 分散システム本読書会 23
- 26. 協力的(collaborative)分散システム
• BitTorrentの例:
– 協力的なP2Pファイルダウンロード
• ファイルのダウンロードは,コンテンツを提供するノードだけが可能
– .torrentファイルはトラッカ(tracker)を示す。トラッカはファイルの
チャンクを保有するアクティブなノードを保持
– アクティブノードは現在ほかのファイルをダウンロードしているノー
ド
• 分かりやすい説明はここ:http://jp.bitcomet.com/doc/principles.htm
2013/1/25 分散システム本読書会 26
- 27. 2.3 アーキテクチャ vs ミドル
ウェア
• 実際のミドルウェアは特定のアーキテクチャに
従っている
– オブジェクト指向アーキテクチャ:CORBAなど
– イベントベースアーキテクチャ:TIB/Rendevous
• アプリケーションの設計が簡単になるという利点
• しかし、アプリ開発者が想い描いていたものに対
して、そのミドルウェアが最適でなくなるという
欠点
• ミドルウェアは特定のアプリケーション要件に適
応しやすくするべき
– 複数バージョンのミドルを作る
– より良い方法は、カスタマイズ容易にすること
2013/1/25 分散システム本読書会 27
- 28. 2.3.1 インタセプタ
• 通常の制御フローを中断
し、他の(アプリ固有)
コードを実行するもの
• 遠隔オブジェクト呼び出
しの例⇒
– オブジェクトBが複製され
ている場合でも、要求レ
ベルインタセプタがそれ
ぞれにinvokeを呼び出すこ
とで、アプリ側は気にし
なくて済む
– パラメータが巨大な配列
データの場合でもメッ
セージレベルインタセプ
タが分割してsendすれば
良い
2013/1/25 分散システム本読書会 28
- 29. 2.3.2 適応型ソフトウェアへの一般
的なアプローチ
• 3つの基本的なアプローチ
– 関心の分離
• 信頼性、パフォーマンス、セキュリティといった機能
外の部分を機能を実装したパーツから切り離す
• アスペクト指向ソフトウェア開発
– 自己反映計算(リフレクション)
• 自分自身を調べ、必要に応じてその動作を適応させる
プログラムの能力
– コンポーネントベース設計
• 合成によって適応をサポートする
• システムは静的(設計時)、あるいは動的(実行時)
に設定される
2013/1/25 分散システム本読書会 29
- 30. 2.3.3 議論
• 分散システムのためのソフトウェアアーキテクチャは大きくて複雑
– 分散透過性を提供する必要性からくる
– 同時にアプリケーションは分散透過性と相反するような非機能要件を
持つ
– 一般化と特殊化の相反する要求が、結果として高い柔軟性を持つミド
ルウェアをもたらす
• もっと単純なやり方に焦点をあてるべきではないか?
• 環境の変化に応じて、適応するようなソフトウェアはどこまで必要
なのだろうか?
– 適応的ソフトウェアを支持する強力な根拠は、多くの分散システムは
シャットダウンできないということ
• 残る課題は、例えば、リソース割り当てポリシーの切替などによっ
て、環境の変化に対応できるかどうか
– 設定を変える動作を指示するアルゴリズムが各コンポーネントに含ま
れる
– 人間の介在なしに可能か?
2013/1/25 分散システム本読書会 30
- 33. 2.4.2 例:Astrolabeによるシステム
モニタリング
• 非常に大規模な分散システムの汎用的なモニタリング
をサポートする
– システムの動作を観測する一般的なツールとして位置づけ
られる
・全てのホストはエージェントを実行
・エージェントはそのホストが含ま
れるゾーンで情報を収集
・ゾーン情報は全てのノードに
伝播する
2013/1/25 分散システム本読書会 33
- 34. 2.4.3 例:Globuleにおける複製戦略
の差別化
• 協調コンテンツ配信ネットワーク
– インターネット上に配置されたエンドユーザーサーバが協調し
て、パフォーマンスを最適化するようにWebページの複製を配
置する
– オリジンサーバは十分な要求が集まるとWhat-If分析を行う
• 複製ポリシーのコストを評価し、最善のものを実施する
2013/1/25 分散システム本読書会 34
- 35. 予測精度とトレースの長さの依存
関係
• ポリシーを評価する前に、どれくらい要求を
収集する必要があるか
2013/1/25 分散システム本読書会 35
- 36. 2.4.4 例:Jadeにおける自動コン
ポーネント修復管理
• 修復管理ドメイン
– 多くのノードから構成される
• 各ノードは複数のコンポーネントを伴うサーバに相当する
– ドメインにノードを追加したり切り離したりする責任を持つ
ノードマネージャが別に存在する
– 各ノードは故障検出器を備えていて、不具合が見つかるとノー
ドマネージャに報告する
• 修復手順の例:
– 障害のないノードと障害の発生したノードのコンポーネント間
でのバインドを終了する
– ノードマネージャはドメインに新規ノードを起動して追加する
ように要求する
– クラッシュしたノードと同じコンポーネントを持つ新規ノード
を構成する
– さきに終了した全てのバインドを再確立する
2013/1/25 分散システム本読書会 36
- 37. 2.5 まとめ
• ソフトウェアアーキテクチャ=ソフトウェアの論理的な構成
• システムアーキテクチャ=コンポーネントがどのように異なるマシ
ンに配置されるか
• アーキテクチャのスタイル
– レイヤ、オブジェクト指向、イベント指向、データスペース指向アー
キテクチャ
• クライアント-サーバモデル
– 集中アーキテクチャとなりやすい
• P2Pシステム
– プロセスは等しく振る舞う
– オーバレイネットワーク=ほかのピアの局所リストを持つ論理的な
ネットワーク
– 構造化P2Pと非構造化P2P
• 自己管理分散システム
– 一般的にフィードバック制御ループで構成
2013/1/25 分散システム本読書会 37