分散システムとは

情報学類 分散システム					2007年12月04日

                                       筑波大学システム情報工学研究科
                                       コンピュータサイエンス専攻, 電子・情報工学系
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/dsys-2007/2007-12-04
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/

■連絡事項

■今日の大事な話

■分散システム以前、分散システムではないコンピュータ

◆単体のコンピュータ(集中システム)

メインフレーム、大型計算機
ミニコンピュータ
ワークステーション
PC (Personal Computer)

◆メインフレームと端末

メインフレーム1台、端末n台

図? メインフレームと端末

文字端末の役目

「端末」は、メインフレーム(ホスト)と文字回線で接続されている。 電話回線等を使ったモデムによる接続。2400bps-9600bps。 IBMのものは、半二重。

◆単体のコンピュータのハードウェア

CPU、メモリ、I/O、OS、アプリケーション

図? 集中型システムのハードウェア

◆単体のコンピュータの性質

ハードウェアやオペレーティング・システムの働きで、次のようなことが(あ る程度のレベルで簡単に)実現できる。 分散システムでは、どれも難しい。

◆ファイルの内容の一貫性

Process1()
{
  write(file1,buf,bytes);
  ...
  ...
}
Process2()
{
  ...
  ...
  read(file1,buf,bytes);
}
Process3()
{
  ...
  ...
  read(file1,buf,bytes);
}
あるプロセスがwrite() した結果は、他のプロセスがread() したら即座に読め る。

◆ネットワーク

高速化、低価格化、間欠接続(ダイアルアップ)から常時接続への変化。

◆ネットワーク速度の感覚

交通機関ネットワーク
徒歩 4km/h64kbps 電話回線
自動車 40km/h640kbps ADSL(低速)
飛行機 800km/h10Mbps, ADSL(中速), 無線LAN
人工衛星(第一宇宙速度) 28440km/h450Mbps, イーサネット(100Mbps-1Gbps)

◆アプリケーション(ソフトウェア)

ハードウェアとソフトウェアの共進化(co-evolution)。 共進化は、もともとは生物用語。

■分散システムの目標

分散システムとは

最後の性質が大事である。

仮想的(virtual)
事実上の。実と同じように使える。
実体が「ない」ということが主ではない。 「仮想」は「透明性(透過性、transparency)」と 関係が深い。

◆分散システムの利点

◆分散システムの弱点

◆分散システムの設計目標

分散は、「離れていても心は1つ」を目指す。 そのためには、集中より遅くなっても許されることがある。 並列処理は、単体のシステムより遅いことは許されない。

◆スケーラビリティ

構成要素の数が増えた時にどうなるか。 10台で動くものが100台、1000台で動くか。

◆分散システムを実現するための技術

◆トレードオフ

完全を目指そうとすると、急激にコストが高くなる。

実用になり、かつ、利益に見合うコストで実現できる範囲を探すことが大事になる。

◆負荷分散

負荷分散(load sharing, load balancing)の分散と分散システムの分散は、意味が違う。

■透明性(透過性、transparency)

分散システムの目標は、プロセスや資源が複数のコンピュータにまたがってい る事実を、ユーザに対して隠蔽すること。

◆アクセス透明性(access transparency)

データ表現の違い、資源をアクセスする方法を隠す。

◆位置透明性(location transparency)

資源がどこにあるかを隠す。 利用者が資源の位置を意識しない。名前が大事。

◆移動透明性(migration transparency)

資源が別の位置に移動したことを隠す。 さらに、利用中に移動できれば、再配置透明性(relocation transparency)が実現できたという。

資源が移動しても、ユーザは気がつかない。 実行中に移動できればさらによい。

◆複製透明性(replication transparency)

資源が複製されていることを隠す。

スケーラビリティを高めるためにコピー(複製)を使う。 複数のコピーが存在することを隠したい。

◆並行透明性(concurrency transparency)

資源が複数の競合的なユーザにより共有されていることを隠す。

複数人が同時にファイル・サーバを使うような状況でも、複数人と気づかせな い。

◆障害透明性(failure transparency)

資源の障害と回復を隠す。

フォールト・トレランスで、かつ、ユーザに気がつかせない。分散システムで は、非常に難しい。反応が遅いことと落ちていることの区別がつかない。

◆永続透明性(persistence transparency)

(ソフトウェア)資源がメモリにあるのかディスクにあるのかを隠す。

分散でなくても、重要な話。

分散と永続は、関係が深い。

◆解放性(openness)

解放型の分散システム
文法と意味を記述した標準(standard)に従ってサービスを提供するシステム。
インタフェース記述言語(Interface Description Language, IDL)
(手続き呼出しの形の)サービスの文法の記述。引数、結果、エラーなど。 意味は、自然言語。
相互運用性(interoperability)
異なる製造元から供給された部品やシステムが、標準を満たしており、相互に接続・交換可能である。
移植性(portability)
システムA用に書かれたプログラムを、修正しないでシステムBで動作させる。

■分散アルゴリズム

◆(集中)アルゴリズム

(集中)システムで問題を解くための指令の集まり。

必要な情報が全てメモりに揃っていることを仮定している。 メモリへのアクセスは、高速で均質(アクセス時間に差がない)。

int x;
int y;
Process1()
{
    int u,v ;
    u = x ;
    v = y ;
}

◆分散アルゴリズム

要素間のメッセージの伝達の方法の集まり 大域的な時計を使う分散アルゴリズムもある。 NTP (Network Time Protocol) を使うと、かなり合う。

◆分散アルゴリズムの例

■ハードウェア

分散システムは、複数のコンピュータ(CPUとメモリ)を使う。 CPU とメモリの接続の仕方には、さまざまな種類がある。

◆共有メモリ型マルチプロセッサ(shared memory multiprocessor)

(CPU+Cache)*n+メモリ

図? 共有メモリ型マルチプロセッサ(バス共有)

◆LANに接続されたコンピュータ群

PC*3--hub

図? LANに接続されたPC

遠隔のメモリは、アクセスできない(no remote memory access)。 機種が違うこともある。

■ソフトウェア、オペレーティング・システム

◆ネットワーク・オペレーティング・システム(network operating system)

ネットワーク通信の機能を提供したオペレーティング・システム。 ネットワーク・オペレーティング・システムでは、利用者は、遠隔のコンピュー タを使うためには、明示的にコンピュータを示す必要がある。

注意:r系コマンドは、ネットワーク上を生パスワードが流れて危険なので、使われない。 その代わりに、ssh, slogin, scp が使われる。

現在、広く使われているオペレーティング・システムで、 ネットワーク通信機能があるものは、これに分類される。

◆ネットワーク・オペレーティング・システムでの分散アプリケーションの実行

ネットワークOSは複数、アプリケーションは1つ

図? ネットワークOSでのアプリケーションの実行

◆分散型オペレーティング・システム

ネットワーク・オペレーティング・システムが発展したもの。

目標

分散OSの種類

実装は困難。Microsoft でも Sun Microsystems でも作れない。

◆分散型オペレーティング・システムでの分散アプリケーションの実行

分散OSは1つ、アプリケーションは、集中用と分散

図? 分散OSでのアプリケーションの実行

◆現状の分散オペレーティング・システム的な機能

ファイル・サービス NFS (Network File System), SMB/CIFS
遠隔にあるファイルとローカル・ファイルを同じように扱える。
名前サービス NIS (Network Information System), LDAP (Lightweight Directory Access Protocol)
パスワード・ファイルを複数のコンピュータで共有できる。 一カ所で変更すると全てのコンピュータで変更される。

◆ミドルウェア

オペレーティング・システムとアプリケーションの間に入り、 (主に通信に関する)サービスを提供する。 下位層のオペレーティング・システムとは独立している。

種類

◆ミドルウェアを用いた分散アプリケーションの実行

OSは複数、ミドルウェアは1つ、アプリケーションは、1つ

図? ミドルウェアを用いた分散アプリケーションの実行

◆分散型プログラミング言語

集中システム用のプログラムと同じように書いたプログラムが、自動的に分散 アプリケーションになる。言語処理系が、ネットワークの存在や通信をさまざ まな度合いで隠す。

どこまで隠せば分散型プログラミング言語と呼んでもよいか? 「socket があれば、分散型プログラミング言語」とは、定義したくない。 永続言語との比較。


Last updated: 2008/01/15 13:02:48
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>