25

Distributed Systems 第10章 Distributed Object-Based Systems

Embed Size (px)

Citation preview

Page 1: Distributed Systems 第10章 Distributed Object-Based Systems
Page 2: Distributed Systems 第10章 Distributed Object-Based Systems

アーキテクチャ

プロセス

通信

名前付け

同期

一貫性と複製

フォールトトレラント性

セキュリティ

まとめ

Page 3: Distributed Systems 第10章 Distributed Object-Based Systems

共通の呼び出し規約に従って動作するソフトウェア部品(オブジェクト)をネットワーク上の複数のコンピュータに配置し、それらを連携動作させることによりシステムを構築する

Page 4: Distributed Systems 第10章 Distributed Object-Based Systems

オブジェクト指向の分散システムの一般的アーキテクチャ

Enterprise Java Beans (EJB)

Globe分散共有オブジェクト

Page 5: Distributed Systems 第10章 Distributed Object-Based Systems

オブジェクトの「状態」は分散していない

インタフェースのみが分散

Page 6: Distributed Systems 第10章 Distributed Object-Based Systems

コンパイル時オブジェクト

◦ (Javaの場合) オブジェクトの分散を意識せず、Javaコードのみを見て開発することができる

◦ 特定のプログラミング言語に依存してしまう

実行時オブジェクト

◦ 分散アプリケーションを書いたプログラミング言語から独立できる

◦ 遠隔オブジェクトを呼び出すためのラッパーとして機能するオブジェクトアダプタを使用するのが一般的

Page 7: Distributed Systems 第10章 Distributed Object-Based Systems

永続オブジェクト

◦ サーバプロセスのアドレス空間に含まれていなくても存在し続けるオブジェクト

◦ 永続オブジェクトを管理しているサーバは、オブジェクトの状態を補助ストレージに格納し、終了することができる

一時オブジェクト

◦ サーバが管理している間だけ存在するオブジェクト

◦ サーバが終了するとオブジェクトは消滅する

ほとんどのオブジェクト指向分散システムは両方をサポートする

Page 8: Distributed Systems 第10章 Distributed Object-Based Systems

Javaで書かれた再利用可能コンポーネント(JavaBeans)の分散版

Container : アプリケーション

サーバが実装する下位層へのサービスインタフェースを提供する

RMI : 遠隔メソッド呼び出し

JDBC: データベースアクセス

JNDI: 名前付け

JMS: メッセージング

EJBサーバの一般的アーキテクチャ

Page 9: Distributed Systems 第10章 Distributed Object-Based Systems

状態不保持セッションビーン (Stateless session beans)◦ 一度だけ呼び出される一時オブジェクト

状態保持セッションビーン (Stateful session beans)◦ クライアントの状態を保持するオブジェクト

◦ ライフタイムに制限がある

エンティティビーン (Entity beans)◦ 永続オブジェクト

メッセージ駆動ビーン (Message-driven beans)◦ メッセージに対応するプログラムオブジェクト

Page 10: Distributed Systems 第10章 Distributed Object-Based Systems

オブジェクトの状態が複数のプロセス上に分散・複製される

例:それぞれ別のマシン上で実行している4つのプロセスによりオブジェクトが分散している

Page 11: Distributed Systems 第10章 Distributed Object-Based Systems

Globeのローカルオブジェクトを構成する4つのサブオブジェクト

セマンティクスサブオブジェクト◦ 分散共有オブジェクトが提供する機能

通信サブオブジェクト◦ 下位ネットワークへのインタフェース

複製サブオブジェクト◦ オブジェクトの実際の分散を担当

◦ セマンティクスサブオブジェクトが提供するメソッドがいつ実行されるべきかを制御

制御サブオブジェクト

Page 12: Distributed Systems 第10章 Distributed Object-Based Systems

オブジェクトサーバ

Ice実行時システム

Page 13: Distributed Systems 第10章 Distributed Object-Based Systems

分散オブジェクトをサポートするためのサーバ

サービスを提供するのはサーバ内のオブジェクト

それ自身ではサービスを提供しない

オブジェクトサーバにより異なる要素

◦ オブジェクトのデータ・メソッドが分離しているか

◦ メソッドの実装が複数のオブジェクトで共有されているか

◦ オブジェクトの呼び出し方法

Page 14: Distributed Systems 第10章 Distributed Object-Based Systems

全てのオブジェクトが同じように見え、オブジェクトを呼び出す方法は1つだけと仮定する

最初の呼び出し要求時に一時オブジェクトを生成し、そのオブジェクトに結ばれるクライアントがなくなると消滅

サーバが立ち上がったとき、すべての一時オブジェクトを生成

サーバの各オブジェクトを固有のメモリセグメントに配置する◦ 各オブジェクトはコードもデータも共有しない

オブジェクトのコードのみ共有する

Page 15: Distributed Systems 第10章 Distributed Object-Based Systems

スレッドの単位

◦ 単一スレッド制御

◦ オブジェクトごとにスレッドを持つ

◦ メソッドごとにスレッドを持つ

スレッドの寿命

◦ スレッドをリクエストごとに生成

◦ サーバがスレッドのプールを維持

Page 16: Distributed Systems 第10章 Distributed Object-Based Systems

Object Adapter

◦ 起動ポリシー(どのようにオブジェクトを呼び出すか)に沿ってオブジェクトをグループ化するメカニズム

サーバには異なる起動ポリシーを持つ複数のObject Adapterが存在する

Object Adapter自体は各オブジェクトの

直接のインターフェースには関与しない

Page 17: Distributed Systems 第10章 Distributed Object-Based Systems

Iceでのオブジェクトサーバ生成例

Communicator: 基本的リソースを管理するコンポーネント

◦ 上記例ではオブジェクトアダプタの生成に使用されている

Page 18: Distributed Systems 第10章 Distributed Object-Based Systems

オブジェクト指向分散システムで処理される通信方法について

◦ 遠隔クライアントに対してオブジェクトを呼び出す手段

◦ Remote Procedure Call (RPC) に基づく

Page 19: Distributed Systems 第10章 Distributed Object-Based Systems

(a) 暗黙的バインディング (implicit binding)

◦ クライアントはオブジェクトへのリファレンスのみを使ってメソッドを直接呼び出す

(b) 明示的バインディング (explicit binding)

◦ クライアントはオブジェクトにバインドするために特別な関数を呼び出す

Page 20: Distributed Systems 第10章 Distributed Object-Based Systems

一番単純なオブジェクトリファレンス

◦ オブジェクトが存在するマシンのネットワークアドレスとオブジェクトを管理するサーバを識別するエンドポイント、どのオブジェクトへの指示かを含む

◦ サーバがクラッシュ->回復して異なったエンドポイントが割り当てられると、リファレンスが無効になる

改善版

◦ サーバからエンドポイントへの割り当てを記録したエンドポイント表を持つ位置サーバを設置する

Page 21: Distributed Systems 第10章 Distributed Object-Based Systems

遠隔メソッド呼び出し (Remote Method Invocation, RMI)◦ RPCと違って、システム全体に有効なオブジェクトリファレンスを提供する

静的呼び出し (static invocation)◦ 事前に定義されたインタフェース定義を使用する

◦ インタフェースが変わった場合は再コンパイルが必要

◦ fobject.append(int)

動的呼び出し (dynamic invocation)◦ どのメソッドが遠隔オブジェクトで呼び出されるかを

アプリケーションが実行時に選択する

◦ invoke(fobject, id(append), int)

Page 22: Distributed Systems 第10章 Distributed Object-Based Systems

ローカルオブジェクトはオブジェクトそのものがコピーされ、遠隔オブジェクトは参照がコピーされる

上記の違いから、ローカルオブジェクトと遠隔オブジェクトを区別して扱わなければいけない (言語レベルでは隠蔽可能)

Java RMIはこのアプローチ

Page 23: Distributed Systems 第10章 Distributed Object-Based Systems

非同期メソッド呼び出し (asynchronous method invocation) の2つの形式◦ コールバックモデル

◦ ポーリングモデル

Page 24: Distributed Systems 第10章 Distributed Object-Based Systems
Page 25: Distributed Systems 第10章 Distributed Object-Based Systems

アーキテクチャ

プロセス

通信

名前付け

同期

一貫性と複製

フォールトトレラント性

セキュリティ

まとめ