アットウィキロゴ

基本コンセプト

TOPへ

基本コンセプト

講義ページ

講義資料


アーキテクチャ

・分散システムは最も複雑なソフトウェアシステムである。

・日々ソフトウェアアーキテクチャの研究が進んでいる。

・分散システムに適したアーキテクチャパラダイムは?

 - Layers

 - Client-server


Layers

基本的な考え方

 ・複雑なシステムをLayersとservicesによって構成する。

  - layer : とても密接な関係のある機能の集まり

  - service : 上のレイヤーへ提供される機能

 ・Layer構造をとったアーキテクチャの例

  - オペレーティングシステム(カーネル等)

  - コンピュータのネットワークプロトコルアーキテクチャ

分散システムにおける典型的なLayer構造

  Application
  Middleware
Opereting System
  Computer      

 

 ・プラットフォーム : ハードウェアやOS

  - WindowsNT / Pentium Processor

  - Solaris / SPARC processor

 

 ・ミドルウェア : プラットフォームのレベルの異種性を気にさせないことを達成

  - 通信や資源の共有が可能に

  - 例

   ・CORBA (OMG)

   ・DCOM (Microsoft)

   ・ODP (ITU - T/ISO)

   ・Java Remote Method Invocation (SUN)

  - 注意:すべての機能に関した通信がぼかせるわけではない。


Client-Server

基本的なモデル(1つのサーバ 対 たくさんのクライアント)

 ・Client:違うPCにてデータアクセス、資源の使用、プログラムの実行をしたがってるプロセス

 ・Server:データやClientとServerの間の共有資源の管理をするプロセス。また、資源にアクセスする許可をClientに出したり、プログラムの実行をするプロセス。

 ・例

  - httpサーバ : Clientがページをリクエストし、Serverがページを送る。

 ・キャッシングサービス(プロキシサーバ)

  - 頻繁にアクセスされるWebページをキャッシング

 

他のモデル

 ・複数のサーバから構成されるモデル

  - パフォーマンスと信頼性が高い

 

インターフェース

 ・Client-Serverアーキテクチャの使用用途にソフトウェアアーキテクチャは影響される。

  - ClientとServerの間で同期しなければいけないメカニズムは何なのか。

  - どのようなリクエストやレスポンスが容認されるのか。

設計で頑張らなきゃいけない点

 ・サービスのクオリティ

  - パフォーマンス(レスポンス・スループット等)、信頼性、柔軟性

   スループット:データのかたまりを1秒でどれくらい送れるか。

 ・信頼性

  - エラーを起こしてもシステムがダウンせず、正しく動き続ける

  - セキュリティ


相互に作用するモデル

分散システム

 ・分散した複数のプロセス

 ・互いに通信することで繋がっている。

分散アルゴリズム

 ・プロセス間の通信は同期式

パフォーマンス系の用語

 ・レイテンシ : プログラムからプログラムの通信にかかる時間

 ・スループット : データの塊を1秒で何個送れるか。

 ・BandWidth : データを1秒でどれくらい送れるか。

 ・Delay Jitter : データが来たときに、遅く来たり早く来たりするズレのこと。

Synchronous(同期式)分散システム : 通信にかかる時間に上限がある。

Asynchronous(非同期式)分散システム : 通信にかかる時間に上限がない(インターネット)

 

Event Ordering

 ・E1とE2が同プロセスで、E1がE2より先に起きたなら E1→E2

 ・E1がE2にメッセージを送る E1→E2


Failure(障害)

Omission Failure(データが壊れている)

 ・Process Omission Failure : プロセスのクラッシュ

  - タイムアウトを利用してプログラムがクラッシュしているか検出。が、返答を求めても永遠時間かかるかもしれない。

     タイムアウト : 大丈夫か?大丈夫か?と聞き続ける。

  - Fail-stopはまだ実現されてない。

 ・Communication Omission : メッセージが送られて来ない

  - 考えうる原因

   ・ネットワークの通信エラー

   ・受信側のバッファオーバーフロー

Arbitrary Failure(どんなものでも障害と捕らえる)


プロセス間通信(Interprocess Communication)

通信するもの

 ・共有メモリ

 ・メッセージパッシング : 言語拡張かAPIcall

IPCの原理

 ・Concurrent Program : 擬似並列と本物の並列、両方に対応。

IPCにおける相手先の指定

 ・Direct Naming : 相手を指定する。

 ・Global Naming : 相手を指定しない。

 ・Mailbox: 分散コンピュータのどこかにある。多くの場合ポートと言う考え方を採用。どの分散コンピュータからでも受信可能。

Semantics of MessagePassing

 ・Blocking

  non-Blocking:メッセージパッシングによってプロセスが遅れることはない。

 ・Synchronization

  - asynchronousメッセージパッシング:non-Blocking。受け取り側が受信しなくても、送り手がデータを送ることができる。バッファがあることが前提。メモリはいくらでもあると仮定している。

  - synchronousメッセージパッシング:受信側が受信準備OKにならないと送信できない

  - buffered message passing : メモリの上限がある

 

Data Representation(データの表現方法)

 ビッグインディアン・リトルインディアンなどの話。

 ユーザが何も考えないでOKにする

 ・Unmarshalling : ネットワークからもってきたデータをローカルのデータにする

 ・Marshalling : ローカルのデータをネットワークのデータに変換する

最終更新:2005年01月17日 02:15
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。