SlideShare una empresa de Scribd logo
1 de 37
第2章 アーキテクチャ

 分散システム本読書会
 2013年1月25日(金)
はじめに
• ソフトウェアアーキテクチャ
      – 論理的な構成
      – どのようにソフトウェアコンポーネントを構成す
        るか
      – どのように相互作用すべきか
• システムアーキテクチャ
      – 物理的な実現
      – 実際にどのように実現するか
      – 実際のマシン上へのSWコンポーネントの配置
• 自律システム
      – フィードバック制御ループ
2013/1/25      分散システム本読書会       2
2.1 アーキテクチャスタイル
• アーキテクチャスタイルはコンポーネントの観点から定式化される
      – コンポーネント間の接続方法
      – コンポーネント間で交換されるデータ
      – これらの要素がどのように共同して1つのシステムを構成するか
• コンポーネント
      – 明確に定義されたインタフェースを持つ交換可能なソフトウェア(構
        成単位)
• コネクタ
      – コンポーネント間の通信、調整、協力を伝えるメカニズム
      – 遠隔手続き呼出し(RPC)、メッセージパッシング、ストリーミング
        データ
• 分散システムにおいて重要なアーキテクチャスタイル
      –     階層型アーキテクチャ
      –     オブジェクトベースアーキテクチャ
      –     データ中心型アーキテクチャ
      –     イベントベースアーキテクチャ

2013/1/25              分散システム本読書会          3
階層型アーキテクチャ
• コンポーネントは階層                  N層
  的に構成される
• Li層のコンポーネントが                N-1層
  下位のLi-1層のコンポー
  ネントを呼び出すこと
                     要求フロー↓          ↑応答フロー
  ができる
• 反対は許されない
                              2層
• ネットワークのコン
  ポーネントで広く採用
                              1層
  されている
• 要求は階層を下方に、
     結果は上方に流れる分散システム本読書会
2013/1/25                                4
オブジェクトベースアーキテク
       チャ
• 階層型より緩やかな              オブジェク     オブジェク
  構成                       ト         ト

• 各オブジェクトはコ
  ンポーネントに対応      オブジェク      メソッド
                   ト        呼出し
• 各コンポーネントは                        オブジェク
  (遠隔)オブジェク                          ト
  ト呼出しを通じて接              オブジェク
  続される                     ト




2013/1/25   分散システム本読書会                 5
データ中心型アーキテクチャ
• プロセスが共有リポジトリを通して通信
  する
• 多くのネットワークアプリケーションは、
  共有分散ファイルシステムのファイルを
  利用して通信を行う
• Webベースのアプリケーションは、Web
  ベースの共有データサービスを利用する


2013/1/25   分散システム本読書会   6
イベントベースアーキテクチャ
• プロセスはイベントの             コンポーネン    コンポーネン
  伝播を通して通信                  ト         ト

• 出版・購読システム                   イベント配送
  – プロセスがイベントを出
    版                          イベントバス

  – ミドルウェアは、それら                   出版
    イベントを購読したプロ                コンポーネン
    セスだけが受信すること                   ト
    を保証
• プロセスが疎結合にな
  るという利点がある
      – 互いに明示的に参照する
2013/1/25 必要が無い  分散システム本読書会             7
共有データ空間
• イベントベースアー             コンポーネン      コンポーネン
                           ト           ト
  キテクチャ+データ
  中心型アーキテク           データ配送                出版
  チャ
• プロセスは時間的に                  共有(永続)データ空
  も分離される                          間

      – 通信中にアクティブで
        なくてもよい




2013/1/25       分散システム本読書会                 8
2.2 システムアーキテクチャ
• コンポーネントの相互作用と配置の方法

• 集中型アーキテクチャ
• 非集中型アーキテクチャ
• ハイブリッドアーキテクチャ




2013/1/25   分散システム本読書会   9
2.2.1 集中型アーキテクチャ
• サーバ:
      – ファイルサービスやデータベースサービスのよう
        に特定のサービスを実装しているプロセス
• クライアント:
      – サーバに要求を送信することでサーバからのサー
        ビスを要求し,サーバの応答を待つプロセス
                 結果を待つ
 クライアント                            要求応答
                                    動作
            要求                応答

    サーバ
                 サービス提供
                              時間
2013/1/25        分散システム本読書会          10
クライアントーサーバ間の通信
• コネクションレス型プロトコル(例:UDP)
 – 利点:LANなど高信頼な環境では効率的である
 – 欠点:伝送障害に耐えうるプロトコルを作るのが困
   難
   • 返答メッセージが来ない場合,クライアントに要求を再送信
     させる
   • ただし,要求メッセージと応答メッセージのどちらが失われ
     たのかクライアント側では判別できないので繰り返し等価
     (idempotent)でない要求には対応できない
• 高信頼コネクション型プロトコル(例:TCP)
      – 利点:通信の信頼性があまり高くない広域システム
          では良く動作する
      – 欠点:要求と応答メッセージが小さい場合はコネク
2013/1/25
          ションの接続・切断のコストがかかる
                   分散システム本読書会     11
アプリケーションの階層化
• 多くの人々は以下の3つの論理レベルに区
  別することを提唱
      1. ユーザインタフェース層
            • ユーザとの対話を取り扱う部分
      2. プロセッシング層
            • アプリケーションの中核機能を含む真ん中の部分
      3. データ層
            • データベースやファイルシステム上で動作する部
              分
            • 永続性を持つ
2013/1/25           分散システム本読書会         12
インターネット検索エンジンの
       例
            ユーザインタフェー                        ユーザインタ
                ス                            フェースレベル

キーワード表現                   リストを含むHTML


                        HTML生成器
                                     ランキングされた
      クエリ生成器                                  プロセスレベル
                                     ページタイトルの
                     ランキング           リスト
                    アルゴリズム
データベースクエリ
                         メタ情報を持つ
Webページを持つ                Webページのタイトル         データレベル
データベース


2013/1/25               分散システム本読書会                13
2層アーキテクチャ
3層レイヤをクライアントとサーバに分ける
            シンクライアント                 ファットライアント

  ユーザ         ユーザ      ユーザ          ユーザ      ユーザ
インタフェー      インタフェー   インタフェー       インタフェー   インタフェー
   ス           ス        ス            ス        ス
                      アプリケー        アプリケー    アプリケー
                       ション          ション      ション
サーバマシン
  ス
インタフェー                                     データベース
 ユーザ
                                           クライアントマシン
アプリケー       アプリケー
                        ション
 ション         ション
                       アプリケー


データベース      データベース   データベース       データベース   データベース

      (a)     (b)       (c)         (d)      (e)
2013/1/25            分散システム本読書会                    14
多層アーキテクチャ
• 3層アーキテクチャの例

            ユーザインタフェース               Webクライアント




             アプリケーション                アプリケーションサーバ




              データベース                 データベースサーバ



2013/1/25               分散システム本読書会                 15
3層アーキテクチャ
• 1つのサーバが複数のサーバに置き換えら
  れ,異なるマシン上で実行される
• サーバがときにはクライアントとしての役割
  を果たす
                           結果待ち
ユーザ
インタフェース
            処理要求                           応答結果
                           データ待ち
アプリケーション
サーバ
                   データ要求           応答データ
データベース
サーバ                   サービス提供
                                      時間
2013/1/25            分散システム本読書会                   16
2.2.2 非集中型アーキテクチャ
• 垂直分散
      – 機能単位を複数マシンで分散
• 水平分散
      – 同一機能を複数マシンで分散
      – 複数マシンで負荷を分散
      – Cf. P2P(ピアツーピア)システム
• P2Pシステム
      – P2Pを構成するプロセスはすべて同じ
      – プロセス間の相互作用は対称的
            • クライアントでもありサーバでもある(サーバント、servent)
      – オーバーレイネットワーク
            • プロセス間のネットワーク
            • ルーティングしてプロセス間でメッセージ通信

2013/1/25              分散システム本読書会            17
構造化P2Pアーキテクチャ
• オーバレイネットワークを決定的手続きで構成
• 分散ハッシュテーブル
      – ハッシュキーは128ビット、または、160ビットなど
        の広いID空間
      – 複数ノードでハッシュテーブルを分割
            • ノードのハッシュ値によりID空間を分割
      – ある距離メトリックにもとづいてデータアイテムの
        キーをノード識別子にマップするスキームを実装
• データをLOOKUPするとき、そのデータが割り当て
  られているノードを返す
      – データが割り当てられているノードにルーティング
        する
2013/1/25             分散システム本読書会     18
Chord [Stoica et al., 2003]
                           • succ(k)は最小のノード
                             id≧k
                           • LOOKUP(k)でsucc(k)を
                             返す
                           • メンバシップ管理
                              – 前後のノードに知らせ
                                る




2013/1/25            分散システム本読書会               19
CAN [Ratnasamy et al., 2001]
• 空間としてN次元トーラスを使用




2013/1/25             分散システム本読書会           20
非構造化P2Pアーキテクチャ
• ランダムグラフに似たオーバレイネット
  ワークを構築することがもくひょう
• 各ノードは近隣ノードのリストを保持す
  る
 – リストはランダムに構築される
 – 近隣ノードはライブノードを表す
 – 近隣ノードのリストは部分ビューとも呼ばれ
   る
• データもノード上にランダムに配置
      – 特定のデータの位置を特定するために検索ク
2013/1/25 エリをフラッディング(ブロードキャスト) 21
                 分散システム本読書会
オーバレイネットワークのトポロ
        ジ管理
• 部分ビューから注意深くエントリを選択し、
  交換することで、特定のオーバレイネット
  ワークのトポロジを構築しを維持することが
  可能




2013/1/25   分散システム本読書会   22
2階層非構造化P2Pシステムによる
  特定のオーバレイネットワークの
         生成
• サイズN×Nの論理的なグリッドを考える
• 各ノードはc個の最寄りの近隣リストを維持する
      – 2つのノード(a1, a2), (b1, b2)の距離はd1+d2と定義
      – ただし、di = min(N-|ai-bi|, |ai-bi|)




2013/1/25           分散システム本読書会                 23
スーパーピア
• 非構造化P2Pでは,探索要求がフラッディングなので,ネット
  ワークが拡大すると問題が生じる
• CDN(コンテンツ配送ネットワーク)等の応用ではコンテン
  ツを高速に発見したいという要求がある
• インデックスを維持し
  たりブローカとして動作
  するスーパーピアと呼ば
  れるノードを導入




2013/1/25    分散システム本読書会       24
2.2.3 ハイブリッドアーキテク
          チャ
• エッジサーバシステム
      – サーバがネットワークのエッジに置かれる




2013/1/25     分散システム本読書会      25
協力的(collaborative)分散システム
• BitTorrentの例:
      – 協力的なP2Pファイルダウンロード
            • ファイルのダウンロードは,コンテンツを提供するノードだけが可能
      – .torrentファイルはトラッカ(tracker)を示す。トラッカはファイルの
        チャンクを保有するアクティブなノードを保持
      – アクティブノードは現在ほかのファイルをダウンロードしているノー
        ド
• 分かりやすい説明はここ:http://jp.bitcomet.com/doc/principles.htm




2013/1/25               分散システム本読書会                        26
2.3 アーキテクチャ vs ミドル
             ウェア
• 実際のミドルウェアは特定のアーキテクチャに
  従っている
      – オブジェクト指向アーキテクチャ:CORBAなど
      – イベントベースアーキテクチャ:TIB/Rendevous
• アプリケーションの設計が簡単になるという利点
• しかし、アプリ開発者が想い描いていたものに対
  して、そのミドルウェアが最適でなくなるという
  欠点
• ミドルウェアは特定のアプリケーション要件に適
  応しやすくするべき
      – 複数バージョンのミドルを作る
      – より良い方法は、カスタマイズ容易にすること

2013/1/25         分散システム本読書会           27
2.3.1 インタセプタ
• 通常の制御フローを中断
  し、他の(アプリ固有)
  コードを実行するもの
• 遠隔オブジェクト呼び出
  しの例⇒
      – オブジェクトBが複製され
        ている場合でも、要求レ
        ベルインタセプタがそれ
        ぞれにinvokeを呼び出すこ
        とで、アプリ側は気にし
        なくて済む
      – パラメータが巨大な配列
        データの場合でもメッ
        セージレベルインタセプ
        タが分割してsendすれば
        良い
2013/1/25          分散システム本読書会   28
2.3.2 適応型ソフトウェアへの一般
         的なアプローチ
• 3つの基本的なアプローチ
      – 関心の分離
            • 信頼性、パフォーマンス、セキュリティといった機能
              外の部分を機能を実装したパーツから切り離す
            • アスペクト指向ソフトウェア開発
      – 自己反映計算(リフレクション)
            • 自分自身を調べ、必要に応じてその動作を適応させる
              プログラムの能力
      – コンポーネントベース設計
            • 合成によって適応をサポートする
            • システムは静的(設計時)、あるいは動的(実行時)
              に設定される


2013/1/25           分散システム本読書会           29
2.3.3 議論
• 分散システムのためのソフトウェアアーキテクチャは大きくて複雑
      – 分散透過性を提供する必要性からくる
      – 同時にアプリケーションは分散透過性と相反するような非機能要件を
        持つ
      – 一般化と特殊化の相反する要求が、結果として高い柔軟性を持つミド
        ルウェアをもたらす
• もっと単純なやり方に焦点をあてるべきではないか?
• 環境の変化に応じて、適応するようなソフトウェアはどこまで必要
  なのだろうか?
      – 適応的ソフトウェアを支持する強力な根拠は、多くの分散システムは
        シャットダウンできないということ
• 残る課題は、例えば、リソース割り当てポリシーの切替などによっ
  て、環境の変化に対応できるかどうか
      – 設定を変える動作を指示するアルゴリズムが各コンポーネントに含ま
        れる
      – 人間の介在なしに可能か?


2013/1/25         分散システム本読書会              30
2.4 分散システムにおける自己管理
• 自律コンピューティング
      – 自動的に変化に適応できる高レベルのフィー
        ドバック制御システムとしての分散システム
        を構成すること
      – 自己管理、自己治癒、自己設定、自己最適化
        など




2013/1/25     分散システム本読書会       31
2.4.1 フィードバック制御モデル
• 論理的構成:




2013/1/25   分散システム本読書会   32
2.4.2 例:Astrolabeによるシステム
           モニタリング
• 非常に大規模な分散システムの汎用的なモニタリング
  をサポートする
      – システムの動作を観測する一般的なツールとして位置づけ
        られる


・全てのホストはエージェントを実行
・エージェントはそのホストが含ま
 れるゾーンで情報を収集
・ゾーン情報は全てのノードに
 伝播する




2013/1/25       分散システム本読書会       33
2.4.3 例:Globuleにおける複製戦略
            の差別化
• 協調コンテンツ配信ネットワーク
      – インターネット上に配置されたエンドユーザーサーバが協調し
        て、パフォーマンスを最適化するようにWebページの複製を配
        置する
      – オリジンサーバは十分な要求が集まるとWhat-If分析を行う
            • 複製ポリシーのコストを評価し、最善のものを実施する




2013/1/25              分散システム本読書会         34
予測精度とトレースの長さの依存
        関係
• ポリシーを評価する前に、どれくらい要求を
  収集する必要があるか




2013/1/25   分散システム本読書会   35
2.4.4 例:Jadeにおける自動コン
            ポーネント修復管理
• 修復管理ドメイン
      – 多くのノードから構成される
            • 各ノードは複数のコンポーネントを伴うサーバに相当する
      – ドメインにノードを追加したり切り離したりする責任を持つ
        ノードマネージャが別に存在する
      – 各ノードは故障検出器を備えていて、不具合が見つかるとノー
        ドマネージャに報告する

• 修復手順の例:
      – 障害のないノードと障害の発生したノードのコンポーネント間
        でのバインドを終了する
      – ノードマネージャはドメインに新規ノードを起動して追加する
        ように要求する
      – クラッシュしたノードと同じコンポーネントを持つ新規ノード
        を構成する
      – さきに終了した全てのバインドを再確立する
2013/1/25              分散システム本読書会          36
2.5 まとめ
• ソフトウェアアーキテクチャ=ソフトウェアの論理的な構成
• システムアーキテクチャ=コンポーネントがどのように異なるマシ
  ンに配置されるか
• アーキテクチャのスタイル
      – レイヤ、オブジェクト指向、イベント指向、データスペース指向アー
        キテクチャ
• クライアント-サーバモデル
      – 集中アーキテクチャとなりやすい
• P2Pシステム
      – プロセスは等しく振る舞う
      – オーバレイネットワーク=ほかのピアの局所リストを持つ論理的な
        ネットワーク
      – 構造化P2Pと非構造化P2P
• 自己管理分散システム
      – 一般的にフィードバック制御ループで構成


2013/1/25         分散システム本読書会              37

Más contenido relacionado

La actualidad más candente

Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnightYahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo!デベロッパーネットワーク
 

La actualidad más candente (20)

運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか運用に自動化を求めるのは間違っているだろうか
運用に自動化を求めるのは間違っているだろうか
 
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
 
地理分散DBについて
地理分散DBについて地理分散DBについて
地理分散DBについて
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
事例で学ぶApache Cassandra
事例で学ぶApache Cassandra事例で学ぶApache Cassandra
事例で学ぶApache Cassandra
 
データセンターネットワークでのPrometheus活用事例
データセンターネットワークでのPrometheus活用事例データセンターネットワークでのPrometheus活用事例
データセンターネットワークでのPrometheus活用事例
 
20221117_クラウドネイティブ向けYugabyteDB活用シナリオ
20221117_クラウドネイティブ向けYugabyteDB活用シナリオ20221117_クラウドネイティブ向けYugabyteDB活用シナリオ
20221117_クラウドネイティブ向けYugabyteDB活用シナリオ
 
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnightYahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
Yahoo! JAPANが持つデータ分析ソリューションの紹介 #yjdsnight
 
Google Cloud Dataflow を理解する - #bq_sushi
Google Cloud Dataflow を理解する - #bq_sushiGoogle Cloud Dataflow を理解する - #bq_sushi
Google Cloud Dataflow を理解する - #bq_sushi
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
Qiita Night 足場固めからやるマイクロサービス
Qiita Night 足場固めからやるマイクロサービスQiita Night 足場固めからやるマイクロサービス
Qiita Night 足場固めからやるマイクロサービス
 
トランザクションの設計と進化
トランザクションの設計と進化トランザクションの設計と進化
トランザクションの設計と進化
 
なぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのかなぜ「マイクロサービス“化”」が必要なのか
なぜ「マイクロサービス“化”」が必要なのか
 
Adaptive Cardsへの招待
Adaptive Cardsへの招待Adaptive Cardsへの招待
Adaptive Cardsへの招待
 
Awsでつくるapache kafkaといろんな悩み
Awsでつくるapache kafkaといろんな悩みAwsでつくるapache kafkaといろんな悩み
Awsでつくるapache kafkaといろんな悩み
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!
 
20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API20221111_JPUG_CustomScan_API
20221111_JPUG_CustomScan_API
 
ドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドラインドメインオブジェクトの設計ガイドライン
ドメインオブジェクトの設計ガイドライン
 
KafkaとAWS Kinesisの比較
KafkaとAWS Kinesisの比較KafkaとAWS Kinesisの比較
KafkaとAWS Kinesisの比較
 

Destacado

分散システム読書会 06章-同期(前編)
分散システム読書会 06章-同期(前編)分散システム読書会 06章-同期(前編)
分散システム読書会 06章-同期(前編)
Ichiro TAKAHASHI
 
分散システム読書会 13章-分散協調ベースシステム
分散システム読書会 13章-分散協調ベースシステム分散システム読書会 13章-分散協調ベースシステム
分散システム読書会 13章-分散協調ベースシステム
Ichiro TAKAHASHI
 
分散システム読書会 06章-同期(後編)
分散システム読書会 06章-同期(後編)分散システム読書会 06章-同期(後編)
分散システム読書会 06章-同期(後編)
Ichiro TAKAHASHI
 
P2Pネットワークを利用した分散ファイルシステムの開発
P2Pネットワークを利用した分散ファイルシステムの開発P2Pネットワークを利用した分散ファイルシステムの開発
P2Pネットワークを利用した分散ファイルシステムの開発
shiftky
 

Destacado (13)

分散システム読書会 06章-同期(前編)
分散システム読書会 06章-同期(前編)分散システム読書会 06章-同期(前編)
分散システム読書会 06章-同期(前編)
 
Distributed Systems 第1章 Introduction
Distributed Systems 第1章 IntroductionDistributed Systems 第1章 Introduction
Distributed Systems 第1章 Introduction
 
分散システム読書会 13章-分散協調ベースシステム
分散システム読書会 13章-分散協調ベースシステム分散システム読書会 13章-分散協調ベースシステム
分散システム読書会 13章-分散協調ベースシステム
 
分散システム読書会 06章-同期(後編)
分散システム読書会 06章-同期(後編)分散システム読書会 06章-同期(後編)
分散システム読書会 06章-同期(後編)
 
P2Pネットワークを利用した分散ファイルシステムの開発
P2Pネットワークを利用した分散ファイルシステムの開発P2Pネットワークを利用した分散ファイルシステムの開発
P2Pネットワークを利用した分散ファイルシステムの開発
 
第2回 分散システム本読書会
第2回 分散システム本読書会第2回 分散システム本読書会
第2回 分散システム本読書会
 
Treasure Data Summer Internship 2016
Treasure Data Summer Internship 2016Treasure Data Summer Internship 2016
Treasure Data Summer Internship 2016
 
並列データベースシステムの概念と原理
並列データベースシステムの概念と原理並列データベースシステムの概念と原理
並列データベースシステムの概念と原理
 
Treasure Data Summer Internship Final Report
Treasure Data Summer Internship Final ReportTreasure Data Summer Internship Final Report
Treasure Data Summer Internship Final Report
 
Treasure Data Summer Internship Final Report
Treasure Data Summer Internship Final ReportTreasure Data Summer Internship Final Report
Treasure Data Summer Internship Final Report
 
Paxos
PaxosPaxos
Paxos
 
Embulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderEmbulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loader
 
Naming
NamingNaming
Naming
 

Similar a 第2章アーキテクチャ

CloudStack Overview(OSC2012Kansai@Kyoto)
CloudStack Overview(OSC2012Kansai@Kyoto)CloudStack Overview(OSC2012Kansai@Kyoto)
CloudStack Overview(OSC2012Kansai@Kyoto)
Satoshi Shimazaki
 
Data Center As A Computer 2章前半
Data Center As A Computer 2章前半Data Center As A Computer 2章前半
Data Center As A Computer 2章前半
Akinori YOSHIDA
 
Aws summits2014 エンタープライズ向けawscdpネットワーク編
Aws summits2014 エンタープライズ向けawscdpネットワーク編Aws summits2014 エンタープライズ向けawscdpネットワーク編
Aws summits2014 エンタープライズ向けawscdpネットワーク編
Boss4434
 
TokyoWebMining#18_nukamu
TokyoWebMining#18_nukamuTokyoWebMining#18_nukamu
TokyoWebMining#18_nukamu
nukamu
 

Similar a 第2章アーキテクチャ (20)

CloudStack Overview(OSC2012Kansai@Kyoto)
CloudStack Overview(OSC2012Kansai@Kyoto)CloudStack Overview(OSC2012Kansai@Kyoto)
CloudStack Overview(OSC2012Kansai@Kyoto)
 
20181120 HowtoFlow
20181120 HowtoFlow20181120 HowtoFlow
20181120 HowtoFlow
 
DeNA データプラットフォームにおける 自由と統制のバランス【DeNA TechCon 2020 ライブ配信】
DeNA データプラットフォームにおける 自由と統制のバランス【DeNA TechCon 2020 ライブ配信】DeNA データプラットフォームにおける 自由と統制のバランス【DeNA TechCon 2020 ライブ配信】
DeNA データプラットフォームにおける 自由と統制のバランス【DeNA TechCon 2020 ライブ配信】
 
ディペンダブルなクラウドコンピューティング基盤を目指して
ディペンダブルなクラウドコンピューティング基盤を目指してディペンダブルなクラウドコンピューティング基盤を目指して
ディペンダブルなクラウドコンピューティング基盤を目指して
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境
 
クラウドデザイン パターンに見る クラウドファーストな アプリケーション設計 Data Management編
クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編クラウドデザイン パターンに見るクラウドファーストなアプリケーション設計 Data Management編
クラウドデザイン パターンに見る クラウドファーストな アプリケーション設計 Data Management編
 
Data Center As A Computer 2章前半
Data Center As A Computer 2章前半Data Center As A Computer 2章前半
Data Center As A Computer 2章前半
 
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティSaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
SaaS/クラウドコンピューティングでのオープンソース活用とセキュリティ
 
20020713
2002071320020713
20020713
 
自律連合型基盤システムの構築
自律連合型基盤システムの構築自律連合型基盤システムの構築
自律連合型基盤システムの構築
 
Aws summits2014 エンタープライズ向けawscdpネットワーク編
Aws summits2014 エンタープライズ向けawscdpネットワーク編Aws summits2014 エンタープライズ向けawscdpネットワーク編
Aws summits2014 エンタープライズ向けawscdpネットワーク編
 
Ia20120118 kaneda
Ia20120118 kanedaIa20120118 kaneda
Ia20120118 kaneda
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
TokyoWebMining#18_nukamu
TokyoWebMining#18_nukamuTokyoWebMining#18_nukamu
TokyoWebMining#18_nukamu
 
マイニング探検会#10
マイニング探検会#10マイニング探検会#10
マイニング探検会#10
 
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたA 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
 
WindowsAzureの長所を活かすクラウド アプリ開発(PDF版)
WindowsAzureの長所を活かすクラウド アプリ開発(PDF版)WindowsAzureの長所を活かすクラウド アプリ開発(PDF版)
WindowsAzureの長所を活かすクラウド アプリ開発(PDF版)
 
.NETアプリのクラウド移行~Azure Service Fabricを丁寧に
.NETアプリのクラウド移行~Azure Service Fabricを丁寧に.NETアプリのクラウド移行~Azure Service Fabricを丁寧に
.NETアプリのクラウド移行~Azure Service Fabricを丁寧に
 
Wakame-vnet / Open Source Project for Virtual Network & SDN
Wakame-vnet / Open Source Project for Virtual Network & SDNWakame-vnet / Open Source Project for Virtual Network & SDN
Wakame-vnet / Open Source Project for Virtual Network & SDN
 
SQL Azure のシームレスな管理
SQL Azure のシームレスな管理SQL Azure のシームレスな管理
SQL Azure のシームレスな管理
 

Más de Kenta Hattori

Más de Kenta Hattori (20)

オブジェクト指向入門2
オブジェクト指向入門2オブジェクト指向入門2
オブジェクト指向入門2
 
オブジェクト指向入門1
オブジェクト指向入門1オブジェクト指向入門1
オブジェクト指向入門1
 
オブジェクト指向入門10
オブジェクト指向入門10オブジェクト指向入門10
オブジェクト指向入門10
 
オブジェクト指向入門9
オブジェクト指向入門9オブジェクト指向入門9
オブジェクト指向入門9
 
オブジェクト指向入門8
オブジェクト指向入門8オブジェクト指向入門8
オブジェクト指向入門8
 
オブジェクト指向入門7
オブジェクト指向入門7オブジェクト指向入門7
オブジェクト指向入門7
 
オブジェクト指向入門6
オブジェクト指向入門6オブジェクト指向入門6
オブジェクト指向入門6
 
オブジェクト指向入門5
オブジェクト指向入門5オブジェクト指向入門5
オブジェクト指向入門5
 
オブジェクト指向入門4
オブジェクト指向入門4オブジェクト指向入門4
オブジェクト指向入門4
 
オブジェクト指向入門3
オブジェクト指向入門3オブジェクト指向入門3
オブジェクト指向入門3
 
ソフトウェア・テスト入門2
ソフトウェア・テスト入門2ソフトウェア・テスト入門2
ソフトウェア・テスト入門2
 
ソフトウェア・テスト入門1
ソフトウェア・テスト入門1ソフトウェア・テスト入門1
ソフトウェア・テスト入門1
 
ソフトウェア・テスト入門8
ソフトウェア・テスト入門8ソフトウェア・テスト入門8
ソフトウェア・テスト入門8
 
ソフトウェア・テスト入門7
ソフトウェア・テスト入門7ソフトウェア・テスト入門7
ソフトウェア・テスト入門7
 
ソフトウェア・テスト入門6
ソフトウェア・テスト入門6ソフトウェア・テスト入門6
ソフトウェア・テスト入門6
 
ソフトウェア・テスト入門5
ソフトウェア・テスト入門5ソフトウェア・テスト入門5
ソフトウェア・テスト入門5
 
ソフトウェア・テスト入門4
ソフトウェア・テスト入門4ソフトウェア・テスト入門4
ソフトウェア・テスト入門4
 
ソフトウェア・テスト入門3
ソフトウェア・テスト入門3ソフトウェア・テスト入門3
ソフトウェア・テスト入門3
 
アルゴリズムとデータ構造15
アルゴリズムとデータ構造15アルゴリズムとデータ構造15
アルゴリズムとデータ構造15
 
アルゴリズムとデータ構造14
アルゴリズムとデータ構造14アルゴリズムとデータ構造14
アルゴリズムとデータ構造14
 

Último

The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
 

Último (7)

The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 

第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
  • 6. データ中心型アーキテクチャ • プロセスが共有リポジトリを通して通信 する • 多くのネットワークアプリケーションは、 共有分散ファイルシステムのファイルを 利用して通信を行う • Webベースのアプリケーションは、Web ベースの共有データサービスを利用する 2013/1/25 分散システム本読書会 6
  • 7. イベントベースアーキテクチャ • プロセスはイベントの コンポーネン コンポーネン 伝播を通して通信 ト ト • 出版・購読システム イベント配送 – プロセスがイベントを出 版 イベントバス – ミドルウェアは、それら 出版 イベントを購読したプロ コンポーネン セスだけが受信すること ト を保証 • プロセスが疎結合にな るという利点がある – 互いに明示的に参照する 2013/1/25 必要が無い 分散システム本読書会 7
  • 8. 共有データ空間 • イベントベースアー コンポーネン コンポーネン ト ト キテクチャ+データ 中心型アーキテク データ配送 出版 チャ • プロセスは時間的に 共有(永続)データ空 も分離される 間 – 通信中にアクティブで なくてもよい 2013/1/25 分散システム本読書会 8
  • 9. 2.2 システムアーキテクチャ • コンポーネントの相互作用と配置の方法 • 集中型アーキテクチャ • 非集中型アーキテクチャ • ハイブリッドアーキテクチャ 2013/1/25 分散システム本読書会 9
  • 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
  • 15. 多層アーキテクチャ • 3層アーキテクチャの例 ユーザインタフェース Webクライアント アプリケーション アプリケーションサーバ データベース データベースサーバ 2013/1/25 分散システム本読書会 15
  • 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
  • 20. CAN [Ratnasamy et al., 2001] • 空間としてN次元トーラスを使用 2013/1/25 分散システム本読書会 20
  • 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
  • 24. スーパーピア • 非構造化P2Pでは,探索要求がフラッディングなので,ネット ワークが拡大すると問題が生じる • CDN(コンテンツ配送ネットワーク)等の応用ではコンテン ツを高速に発見したいという要求がある • インデックスを維持し たりブローカとして動作 するスーパーピアと呼ば れるノードを導入 2013/1/25 分散システム本読書会 24
  • 25. 2.2.3 ハイブリッドアーキテク チャ • エッジサーバシステム – サーバがネットワークのエッジに置かれる 2013/1/25 分散システム本読書会 25
  • 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
  • 31. 2.4 分散システムにおける自己管理 • 自律コンピューティング – 自動的に変化に適応できる高レベルのフィー ドバック制御システムとしての分散システム を構成すること – 自己管理、自己治癒、自己設定、自己最適化 など 2013/1/25 分散システム本読書会 31
  • 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