SlideShare una empresa de Scribd logo
1 de 25










アーキテクチャ
プロセス
通信
名前付け
同期
一貫性と複製
フォールトトレラント性
セキュリティ
まとめ


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

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



Enterprise Java Beans (EJB)



Globe分散共有オブジェクト



オブジェクトの「状態」は分散していない
インタフェースのみが分散


コンパイル時オブジェクト
◦ (Javaの場合) オブジェクトの分散を意識せず、Javaコードのみを見て
開発することができる
◦ 特定のプログラミング言語に依存してしまう



実行時オブジェクト
◦ 分散アプリケーションを書いたプログラミング言語から独立できる
◦ 遠隔オブジェクトを呼び出すためのラッパーとして機能する
オブジェクトアダプタを使用するのが一般的


永続オブジェクト
◦ サーバプロセスのアドレス空間に含まれていなくても存在し続ける
オブジェクト
◦ 永続オブジェクトを管理しているサーバは、オブジェクトの状態を補助
ストレージに格納し、終了することができる



一時オブジェクト
◦ サーバが管理している間だけ存在するオブジェクト
◦ サーバが終了するとオブジェクトは消滅する



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

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



Container : アプリケーション
サーバが実装する下位層への
サービスインタフェースを提供
する



RMI : 遠隔メソッド呼び出し
JDBC: データベースアクセス
JNDI: 名前付け
JMS: メッセージング





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

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



状態保持セッションビーン (Stateful session beans)
◦ クライアントの状態を保持するオブジェクト
◦ ライフタイムに制限がある



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



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

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



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

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



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



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



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



制御サブオブジェクト



オブジェクトサーバ
Ice実行時システム


分散オブジェクトをサポートするためのサーバ
サービスを提供するのはサーバ内のオブジェクト
それ自身ではサービスを提供しない



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




◦ オブジェクトのデータ・メソッドが分離しているか
◦ メソッドの実装が複数のオブジェクトで共有されているか
◦ オブジェクトの呼び出し方法







全てのオブジェクトが同じように見え、
オブジェクトを呼び出す方法は1つだけと仮定する
最初の呼び出し要求時に一時オブジェクトを生成し、
そのオブジェクトに結ばれるクライアントがなくなると消滅
サーバが立ち上がったとき、すべての一時オブジェクトを生成
サーバの各オブジェクトを固有のメモリセグメントに配置する
◦ 各オブジェクトはコードもデータも共有しない



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

スレッドの単位
◦ 単一スレッド制御
◦ オブジェクトごとにスレッドを持つ
◦ メソッドごとにスレッドを持つ



スレッドの寿命
◦ スレッドをリクエストごとに生成
◦ サーバがスレッドのプールを維持


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





サーバには異なる起動ポリシーを持つ
複数のObject Adapterが存在する
Object Adapter自体は各オブジェクトの
直接のインターフェースには関与しな
い


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



Communicator: 基本的リソースを管理するコンポーネント
◦ 上記例ではオブジェクトアダプタの生成に使用されている


オブジェクト指向分散システムで処理される通信方法について
◦ 遠隔クライアントに対してオブジェクトを呼び出す手段
◦ Remote Procedure Call (RPC) に基づく


(a) 暗黙的バインディング (implicit binding)
◦ クライアントはオブジェクトへのリファレンスのみを使ってメソッドを直接
呼び出す



(b) 明示的バインディング (explicit binding)
◦ クライアントはオブジェクトにバインドするために特別な関数を呼び出す


一番単純なオブジェクトリファレンス
◦ オブジェクトが存在するマシンのネットワークアドレスと
オブジェクトを管理するサーバを識別するエンドポイント、
どのオブジェクトへの指示かを含む
◦ サーバがクラッシュ->回復して異なったエンドポイントが割り当てられ
ると、リファレンスが無効になる



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

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



静的呼び出し (static invocation)
◦ 事前に定義されたインタフェース定義を使用する
◦ インタフェースが変わった場合は再コンパイルが必要
◦ fobject.append(int)



動的呼び出し (dynamic invocation)
◦ どのメソッドが遠隔オブジェクトで呼び出されるかを
アプリケーションが実行時に選択する
◦ invoke(fobject, id(append), int)






ローカルオブジェクトはオブジェクトそのものがコピーされ、
遠隔オブジェクトは参照がコピーされる
上記の違いから、ローカルオブジェクトと遠隔オブジェクトを区別
して扱わなければいけない (言語レベルでは隠蔽可能)
Java RMIはこのアプローチ


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

アーキテクチャ
プロセス
通信
名前付け
同期
一貫性と複製
フォールトトレラント性
セキュリティ
まとめ

Más contenido relacionado

Similar a Distributed Systems 第10章 Distributed Object-Based Systems

デブサミ2008 .NETの仕組み
デブサミ2008 .NETの仕組みデブサミ2008 .NETの仕組み
デブサミ2008 .NETの仕組みTakeshi Shinmura
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれMasataka MIZUNO
 
RoR周辺知識15項目
RoR周辺知識15項目RoR周辺知識15項目
RoR周辺知識15項目saiwaki
 
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)Akio Katayama
 
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-publicAmazon Web Services Japan
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-PE-BANK
 
090916 X D E V今だから理解する[
090916 X D E V今だから理解する[090916 X D E V今だから理解する[
090916 X D E V今だから理解する[Masami Suzuki
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/AndroidセキュアコーディングMasaki Kubo
 
Java SE 再入門
Java SE 再入門Java SE 再入門
Java SE 再入門minazou67
 
Oracle Coherence勉強会
Oracle Coherence勉強会Oracle Coherence勉強会
Oracle Coherence勉強会Toshiaki Maki
 
Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Yuki Hattori
 
Kasza smashing the_jars_j-corrected
Kasza smashing the_jars_j-correctedKasza smashing the_jars_j-corrected
Kasza smashing the_jars_j-correctedPacSecJP
 
Dep001 infrastructure as_code_!_linux_な人から見
Dep001 infrastructure as_code_!_linux_な人から見Dep001 infrastructure as_code_!_linux_な人から見
Dep001 infrastructure as_code_!_linux_な人から見Tech Summit 2016
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShiftEtsuji Nakai
 
Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01Ruo Ando
 
Cloudianの構築と運用の基礎 (Cloudian Summit 2012)
Cloudianの構築と運用の基礎 (Cloudian Summit 2012)Cloudianの構築と運用の基礎 (Cloudian Summit 2012)
Cloudianの構築と運用の基礎 (Cloudian Summit 2012)CLOUDIAN KK
 
Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018Uemura Yuichi
 

Similar a Distributed Systems 第10章 Distributed Object-Based Systems (20)

デブサミ2008 .NETの仕組み
デブサミ2008 .NETの仕組みデブサミ2008 .NETの仕組み
デブサミ2008 .NETの仕組み
 
20050903
2005090320050903
20050903
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
 
RoR周辺知識15項目
RoR周辺知識15項目RoR周辺知識15項目
RoR周辺知識15項目
 
AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)AWSマイスターシリーズReloaded(AWS Beanstalk)
AWSマイスターシリーズReloaded(AWS Beanstalk)
 
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public20120416 aws meister-reloaded-aws-elasticbeanstalk-public
20120416 aws meister-reloaded-aws-elasticbeanstalk-public
 
20061122
2006112220061122
20061122
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
 
090916 X D E V今だから理解する[
090916 X D E V今だから理解する[090916 X D E V今だから理解する[
090916 X D E V今だから理解する[
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
Java SE 再入門
Java SE 再入門Java SE 再入門
Java SE 再入門
 
Oracle Coherence勉強会
Oracle Coherence勉強会Oracle Coherence勉強会
Oracle Coherence勉強会
 
Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発Azure serverless!! azure functionsでサーバーを意識しない開発
Azure serverless!! azure functionsでサーバーを意識しない開発
 
Kasza smashing the_jars_j-corrected
Kasza smashing the_jars_j-correctedKasza smashing the_jars_j-corrected
Kasza smashing the_jars_j-corrected
 
Dep001 infrastructure as_code_!_linux_な人から見
Dep001 infrastructure as_code_!_linux_な人から見Dep001 infrastructure as_code_!_linux_な人から見
Dep001 infrastructure as_code_!_linux_な人から見
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
 
Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01Css2014 ruo ando_2014-10-23-01
Css2014 ruo ando_2014-10-23-01
 
Cloudianの構築と運用の基礎 (Cloudian Summit 2012)
Cloudianの構築と運用の基礎 (Cloudian Summit 2012)Cloudianの構築と運用の基礎 (Cloudian Summit 2012)
Cloudianの構築と運用の基礎 (Cloudian Summit 2012)
 
Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018
 

Último

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 

Último (9)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 

Distributed Systems 第10章 Distributed Object-Based Systems