• 検索結果がありません。

分散システムの概要

N/A
N/A
Protected

Academic year: 2021

シェア "分散システムの概要"

Copied!
48
0
0

読み込み中.... (全文を見る)

全文

(1)

分散システムの概要・

アーキテクチャ

分散システム

2015年10月5日

(2)

分散システムの定義

• 単一

の(single)

一貫

した(coherent)システム

見なせる,独立した

(independent)コン

ピュータの集合

– 自立(autonomous)したコンピュータからなる – 利用者(プログラム)は単一システムと見なせる

• 独立したコンピュータの協調が必要

– どのように協調するかが分散システム構築のポ イント – コンピュータの種別(性能,能力)は問わない • スパコンからセンサーまで

(3)

分散システムの*特徴*

• コンピュータの差,コンピュータ間の通信はユーザ から隠蔽 • 一貫した(consistent)均一な(uniform)なアクセス • 原理的には拡張,スケールが比較的容易 – 独立したコンピュータだから – ただし,実際にどのように構成しているかは隠蔽する必要 がある • いつでも利用可能(continuously available) – 一部が故障した,修理された,追加されたとしても利用者 には気づかせない

(4)

分散システムのソフトウェア階層の例

• 計算機の非均質性(heterogeneity)とネットワークに対 応するため,アプリケーションとローカルOSの間のミド ルウェアとしてしばしば実装される アプリ1 アプリ2 アプリ3 分散システム(ミドルウェア)

OS1 OS2 OS3 OS4

ネットワーク

• 各アプリケーションに同一のインターフェースを提供 • 分散アプリケーションが相互に通信する手段を提供 • ハードウェア,OSの違いを可能な限り隠蔽

(5)

4つの目標

• 簡単に利用可能

• 分散していることを十分隠蔽

• オープン

(6)

簡単に利用可能に

• 遠隔の資源を簡単に利用できるように – 制御され,効率的に共有 • 資源:プリンタ,コンピュータ,ストレージ,データ, ファイル,Webページ,ネットワーク,… • 資源共有の理由 – それぞれにプリンタを購入し維持するより複数ユーザで 共有した方が経済的 – スパコン,高性能ストレージ,イメージセッタなど高価な機 器の共有

(7)

資源共有の例

• インターネットプロトコル(IP)により共同作業,情報交換が容 易に – 単純な標準プロトコルにより,ファイル,メール,音楽,ビデオ交換が 容易に – グループウェアにより地理的に離れたグループでの共同編集,テレコ ンなどが可能に – お店に行くことなしにネット購入も可能に • セキュリティが問題に – 通信の盗聴や介入に対する対策が必要 – パスワードなど暗号化されずクリアテキストで送信(http, ftp, telnet 等),サーバに格納されることも – カード保有者である証拠を見せることなくカード番号で購入する – ユーザの好みを知るためなど通信履歴の追跡を許可なく行う – スパムメールなど無用の通信からの対策

(8)

分散透明性

(Distribution Transparency)

• 目標

– プロセスや資源が複数のコンピュータに分散して いることを隠すこと

• 単一のコンピュータのように振る舞う=

透明

(Transparent)である

(9)

透明性の種類

透明性 意味 アクセス データ表現の違い,データアクセス方法の違いを 隠蔽(エンディアンなど) 位置 資源がどこにあるか隠蔽。ネーミングが鍵(位置 が名前に含まれない論理名) 移動 資源が移動したことを隠蔽 再配置 使用中に移動したことを隠蔽 複製 資源の複製があることを隠蔽 並行性 複数ユーザで共有されていることを隠蔽。一貫性 を保つ 障害 障害と復帰を隠蔽 [ISO, 1995]

(10)

透明性の程度

• 完全な透明性の確保はいいことではない! • 時差,通信遅延を隠すことはできない – 光速は越えられない • 透明性の程度とシステムの性能はトレードオフの関係 – 最終的に失敗する前に何度もリトライ。そのため反応が遅くなる – 大陸をまたぐ複製。更新を伝えるだけで秒オーダ • 組込やユビキタスシステムでは分散を見せるほうがよい – ノートPCでプリントアウトする場合,国が異なる本部の空いているプ リンタより近くの忙しいプリンタのほうが良い • 分散を見せることにより,より効率的な利用も可能 • 設計では完全な透明性は良い目標だがそのコストは恐ろしく 大きい。性能と分かり易さは重要。

(11)

Openness

• オープンな分散システム=標準規格に従いサービスを提供 するシステム – 標準通信プロトコル(フォーマット,内容,メッセージの意味) • 分散システムはインターフェースで定義されることが多い – サービスのインターフェース記述にIDL(Interface Definition Language)を利用 – サービスの名前,引数の型,返値,例外 • オープンシステムの目標 – 相互運用性(Interoperability)=異なる実装でも仕様に従っていれば お互いに利用可能 – ポータビリティ(Portability)=システムA用の実装をシステムBで無修 正のまま利用 – 拡張性(Extensibility)=コンポーネント追加,変更が容易

(12)

ポリシの分離

• システムの柔軟性のためには,比較的小さく,簡単に変更可 能なコンポーネントで分散システムを構成するのがよい – システム内部のインターフェースの定義と相互作用の記述が必要 • 一つの巨大プログラムで実装されるモノリシックなアプローチ は,コンポーネントの変更が難しく,クローズなシステムとな りやすい(一般論) • 分散システムの変更要求は,しばしばコンポーネントのポリ シの変更 – 内容によるWebキャッシュの例:列車の時刻表は残したいが刻々と 変わる高速道路の現在の交通状況は残したくない • ポリシとメカニズムの分離が必要 – 様々なパラメータ,あるいはポリシの記述を可能に

(13)

スケーラビリティ

• 最も重要なデザインゴール

• 三つの次元(Clifford Neuman, 1994)

– サイズー利用者や資源の数(信頼性、性能) – 距離ーシステムが分散している距離(信頼性、性 能) – 管理ー独立した組織の数(変更の容易さ、ポリシ の衝突)

• 一次元以上スケーラブルなシステムは,ス

ケールアップすると性能に影響することがあ

(14)

スケーラビリティの問題(1)

• サイズに関するスケーラビリティを考えた場合 – 集中型サービス(多数ユーザに対応できない) – 集中型データ(大規模データに対応できない) – 集中型アルゴリズム(分散データの収集,配布で破綻) は避けなければならない • 非集中型アルゴリズムは以下の点で集中型と異な る – どのノードもシステム全体の情報を知らない – 局所的な情報で決定する – ノードの故障はアルゴリズムに影響しない – 絶対時計(グローバルクロック)は仮定しない

(15)

スケーラビリティの問題(2)

• 地理的なスケーラビリティの問題

– LANでは同期通信で問題ない(~数百us)が WANでは大問題(~数百ms) – LANは高信頼,マルチキャストも可だがWANは パケットロスがあり,一対一が基本 • サービス発見はLANだとブロードキャストすればよい が,広域だと地球規模,数十億人規模でスケールする 設計が必要 – 集中型のシステムはWANの遅延,低信頼性によ り資源の有効利用ができない

(16)

スケーラビリティの問題(3)

• 複数の管理ドメインをまたがる分散システム

– 資源の利用法,管理,セキュリティなどポリシの 違いを吸収する必要がある – 通常,組織の管理者は信頼するが,他の組織の 管理者を同様に信頼できるか? – 他の組織のユーザに対して異なる権限,アクセス 制御が必要? – 他組織の信頼できないプログラムの実行

(17)

スケールするための技術

• 通信遅延隠蔽 – 遠隔のサービスの返答を待たない=非同期通信 – 通信量を減らす • クライアントにサーバ側処理(入力チェックなど)を移動 • 分散 – 要素を分割して分散させる – DNSの例:階層的なドメイン名を重複のないゾーンに分割。それぞれ のゾーンは単一サーバで処理 – WWWの例:文書を分散格納しているからスケールする • 複製 – 可用性の向上,負荷分散,通信遅延隠蔽 – キャッシュ:通常オンデマンドでクライアント主導 – 複製間の一貫性制御:強さは利用形態(Web vs auction)による

(18)

落とし穴

• 起こしやすい間違った仮定

– ネットワークは高信頼である – ネットワークはセキュアである – ネットワークは均一である – ネットワークトポロジは変化しない – ネットワーク遅延はない – ネットワークバンド幅は無限である – 通信のコストはない – 管理者は一人

(19)

概要のまとめ

• 分散システムは,複数の

自立

した計算機を

単一

一貫

したシステムとして

みせる

– 複数計算機で実行されているアプリケーションを統合 – 設計次第ではネットワークのサイズに応じてスケール 可能 – ソフトウェアの複雑さ,性能の低下,セキュリティの問 題も考慮する必要がある

• 分散透明性

の実現は分散システムの目標であ

るが

– 透明性の程度と性能はトレードオフの関係

• ネットワークの間違った仮定

(20)

分散システムのアーキテクチャ

• ソフトウェアアーキテクチャ

– どのようなソフトウェアコンポーネントで構成され,ど のように相互作用が行われるか – アーキテクチャのスタイル

• システムアーキテクチャ

– 集中アーキテクチャ – 分散アーキテクチャ – ハイブリッドアーキテクチャ

• 自立的システム(

autonomic systems)

– フィードバック制御

(21)

用語

• コンポーネント(

component)

– 明確に定義された(well-defined)インターフェー スを持つ交換可能な(ソフトウェアの)構成単位

• コネクタ(

connector)

– コンポーネント間の通信,調整,協力を伝えるメカ ニズム – 遠隔手続き呼出し(RPC),メッセージパッシング, データストリーミングなど

(22)

レイヤアーキテクチャ

Layered Architectures)

• 層状アーキテクチャ,階層アーキテクチャ

• レイヤ

iはレイヤi-1

を呼び出せる

• ネットワークの

コンポーネントで

よく利用される

レイヤN レイヤN-1 … レイヤ2 レイヤ1 リクエスト のフロー レスポンス のフロー

(23)

オブジェクトベースアーキテクチャ

Object-based Architectures)

• より疎な構成

• オブジェクトがコンポーネント

• 遠隔手続き呼出し

Object Object Object Object Object メソッド 呼出し

(24)

データセンタアーキテクチャ

Data-centered Architectures)

• 共有レポジトリ

により通信を行う

• 多くのネットワークアプリケーションは,共有

分散ファイルシステムの

ファイル

を利用して

通信を行う

Webベースのアプリケーションは,Webベース

の共有データサービスを利用する

(25)

イベントベースアーキテクチャ

Event-based Architectures)

• イベントの伝搬で通信する

• 発行・購読(

Publish/subscribe)システム

– 購読しているプロセスにイベントを発行する – 疎結合(loosely coupled)型プロセス – 参照分離(Referentially decoupled) • お互いに参照する必要はない パブリッシュ(発行) イベント伝達

(26)

共有データスペース

Shared Data Spaces)

• データセンタアーキテクチャとイベントベース

アーキテクチャの組合せ

• プロセスは時間的にも分離

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

SQL,ファイル

データ伝達 パブリッシュ(発行)

(27)

システムアーキテクチャ

• システムアーキテクチャ

– コンポーネントの相互作用と配置の方法

• クライアントサーバモデル

クライアント サーバ 返事待ち リクエスト 返事 サービス実行 時間

(28)

クライアントサーバモデル

• コネクションレスの通信(例:UDP,user datagram protocol)

– LANなど高信頼な環境では効率的 – クライアントはメッセージ(サービスと引数)をサーバに送信, サーバは返事を送信 – 信頼性のない環境,リクエストorレスポンスが失われる可能性 • リクエストの再送信→サービスを二度実行する可能性 • 「銀行口座から100万円引き出す」などは困る • 「残高照会」などは何度実行してもよい=idempotentな操作 • 信頼性のあるコネクション指向の通信(例:TCP,

transmission control protocol)

– 広域環境のような低信頼な環境

– コネクションを確立してリクエストを発行 – コネクション(再)接続のコスト

(29)

アプリケーションのレイヤリング

• (データベースをアクセスする)クライアント

サーバアプリケーションは三層の階層からな

– ユーザインタフェース層(user-interface level) • クライアント(キャラクタ,グラフィックス) – 処理層(processing level) • それぞれのアプリケーション処理 – データ層(data level) • ファイルシステム,データベース • 永続性(persistency)をもつ

(30)

インターネット検索エンジンの例

ユーザインタフェース クエリ生成 Webページのデータベース ランキング アルゴリズム HTML生成 ユーザ インタフェース層 処理層 データ層 キーワード式 データベース クエリ メタ情報付きの Webページのタイトル ランク付リスト リストを含むHTMLのページ

(31)

二層アーキテクチャ

• 三層レイヤをクライアントとサーバに分ける

ユーザインタフェース アプリケーション データベース 機種依存のUI処理 UI処理全体 ある程度のアプリケーション 処理(編集やフォームチェックなど) アプリケーション処理全体 (共有ファイルシステム利用など) ある程度のデータ処理も (クライアントキャッシュなど) シン クライアント (管理コスト小) ファット クライアント

(32)

多層アーキテクチャ

ユーザインタフェース アプリケーション データベース Webクライアント (複数) アプリケーション サーバ (複数) データベース サーバ (例)

(33)

分散アーキテクチャ

• 垂直分散(vertical distribution) – 機能単位を複数マシンで分散 • 水平分散(horizontal distribution) – 同一機能を複数マシンで分散 – 複数マシンで負荷を分散 – Cf. P2P(peer-to-peer)システム • P2Pシステム – (概念的には)P2Pを構成するプロセスは同一 – プロセス間の相互作用は対称的,クライアントでもありサーバ でもある(サーバント,servent) – オーバレイネットワーク(overlay network) • プロセス間のネットワーク。ルーティングしてプロセス間でメッセージ 通信

(34)

構造化

P2Pアーキテクチャ

• オーバレイネットワークを決定的手続きで構成

• 分散ハッシュ表(

distributed hash table, DHT)を

構成

– ハッシュキーは128ビット(MD5),160ビット(SHA1)な どの広いID空間 – 複数のノードでハッシュ表を分割 • ノードのハッシュ値によりID空間を分割

• データを

LOOKUPするとき,そのデータが割当て

られているノードを返す

– データが割当てられているノードにルーティングする

(35)

Chord [Stoica et al., 2003]

0 4 8 12 2 6 10 14 1 3 5 7 9 11 13 15 実際のノード { 0, 1 } { 2, 3, 4 } { 5, 6, 7 } { 8, 9, 10, 11, 12 } {13, 14, 15 } 担当データキー • succ(k)は最小のノードid≥k • LOOKUP(k)でsucc(k)を返す (アルゴリズムは後の講義だ が,O(log N)ステップで検索) • メンバシップ管理 (前後のノードに知らせる)

(36)

非構造化

P2Pアーキテクチャ

• 乱数アルゴリズムでオーバレイネットワークを

構築

• データもランダムに配置

• 検索はリクエストをフラッディング(ブロード

キャスト)

• ランダムグラフの生成が目標

– それぞれのノードが,生きているノードの内ランダ ムにcノードの情報を知っている

(37)

スーパピア(

Superpeers)

• 非構造P2Pではデータ検索は基本フラッディングなた め,ピア数の増加に対し問題がある • CDN(コンテンツデリバリネットワーク)等の応用ではコ ンテンツを高速に発見したいという要求がある • インデックスを保持し,ブローカ(仲介)となるノード= スーパピアの導入(cf. Sun JXTA) スーパピア 通常のピア スーパピアネットワーク

(38)

ハイブリッドアーキテクチャ

• 協力的(

collaborative)分散システム

BitTorrentファイル共有システム[Cohen, 2003]

– 協力的なP2Pファイルダウンロード • ファイルのダウンロードは,コンテンツを提供するノー ドだけが可能 – .torrentファイルはトラッカ(tracker)を示す。トラッ カはファイルのチャンクを保有するアクティブな ノードを保持 – アクティブノードは現在ほかのファイルをダウン ロードしているノード

(39)

アーキテクチャのまとめ

• ソフトウェアアーキテクチャ=ソフトウェアの論理的な構成 • システムアーキテクチャ=コンポーネントがどのように異な るマシンに配置されるか • アーキテクチャのスタイル – レイヤ,オブジェクト指向,イベント指向,データスペース指向 アーキテクチャ • クライアントサーバモデル – 集中アーキテクチャとなりやすい • P2Pシステム – プロセスは等しく振る舞う – オーバレイネットワーク=ほかのピアの局所リストを持つ論理 的なネットワーク – 構造化P2Pと非構造化P2P

(40)

サーバ設計における一般的なこと

• サーバ

– クライアントからのリクエストを待ち,実行する

• 反復サーバ(

iterative server)

– サーバがリクエストを実行し,レスポンスを返す

• 並行サーバ(

concurrent server)

– 別のスレッドorプロセスにリクエストを依頼 – 直ちに次のリクエストを待つ

(41)

分散システムにおけるスレッド

• プロセスをブロックさせないでブロッキングシ

ステムコールを呼べる

• 複数のコネクションの管理に有用

• マルチスレッドクライアント

– 広域ネットワークの遅延(数百ミリ秒~数秒)隠蔽 – (例)Webブラウザ • ページ内複数ドキュメントの並列受信 • 受信しながら表示

(42)

マルチスレッドサーバ

• 典型的なマルチスレッドサーバの例

オペレーティングシステム サーバ ディスパッチャ スレッド ワーカ スレッド1 ワーカ スレッド2 ワーカ スレッド3 ネットワーク からの要求 ワーカスレッドに要求をディスパッチ スレッドプール

(43)

サーバのコンタクト先

• クライアントはサーバのエンドポイント(

end

point)orポート(port)にリクエストを発行

TCP,UDPのポート番号

– Internet Assigned Numbers Authority (IANA)が管 理

範囲 種類 備考

0~1023 Well Known Ports 登録なしに利用不可

UNIXではroot権限が必要

1024~49151 Registered Ports 登録なしに利用不可

49152~65535 Dynamic and/or Private

(44)

代表的なポート番号

キーワード (サービス)

番号 説明

ftp-data 20/tcp, 20/udp, 20/sctp File Transfer [Default Data]

ftp 21/tcp, 21/udp, 21/sctp File Transfer [Control]

ssh 22/tcp, 22/udp, 22/sctp Secure Shell, RFC 4251, 4960

telnet 23/tcp, 23/udp Telnet

smtp 25/tcp, 25/udp Simple mail transfer

http 80/tcp, 80/udp, 80/sctp World Wide Web HTTP

imap 143/tcp, 143/udp Internet Message Access Protocol

https 443/tcp, 443/udp, 443/sctp http protocol over TLS/SSL

imaps 993/tcp, 993/udp Imap4 protocol over TLS/SSL

http://www.iana.org/assignments/port-numbers http://www.rfc-editor.org/

(45)

HTTPサーバへのアクセス例

$ telnet www.tsukuba.ac.jp 80 Trying 130.158.69.246... Connected to www.tsukuba.ac.jp. Escape character is '^]'. GET /index.html HTTP/1.0 HTTP/1.1 200 OK

Date: Mon, 14 Dec 2009 22:37:09 GMT Server: Apache/2.2.3 (CentOS)

Content-Length: 451 Connection: close

Content-Type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML>

</HTML>

Connection closed by foreign host.

HTTPサーバへの リクエスト HTTPサーバからの レスポンス telnetコマンドでwww.tsukuba.ac.jpの port 80/TCPに接続 (リターンを2回) HTTPサーバが接続を切断

(46)

その他の事項

• 割込 – 例:FTPサーバへの大きなファイル転送を取り消したい – コネクションの切断 – Out-of-band(OOB)データの送信 • サーバでシグナル割込がかかる • 状態 – ステートレスサーバ • クライアントの状態をサーバ側で保持しない。クライアントとは関係な く状態を変更 • FTP,HTTP,NFSv2,NFSv3 – ステートフルサーバ • 状態を持つ。クライアントが状態を消去する • 性能向上のため。障害時の復旧を考える必要がある • NFSv4

(47)

セッション状態(

session state)

• 単一ユーザの状態を一定の期間保持

– 永遠ではない – 失われてもまたやり直せばよい

Webブラウザのクッキー(cookie)

– クライアント側にサーバの状態を保持 – 消去してもまたやり直せばよい

(48)

サーバ設計に関するまとめ

• マルチスレッドクライアント、マルチスレッド

サーバ

– ブロッキングI/O操作を行いながらCPUを活用 – ただし、データ競合を起こさないよう並列性の制 御が必要

• 反復サーバと並行サーバ

• コンタクト先

• 割込、状態

参照

関連したドキュメント

 通常,2 層もしくは 3 層以上の層構成からなり,それぞれ の層は,接着層,バリア層,接合層に分けられる。接着層に は,Ti (チタン),Ta

の点を 明 らか にす るに は処 理 後の 細菌 内DNA合... に存 在す る

第四系更新統の段丘堆積物及び第 四系完新統の沖積層で構成されて おり、富岡層の下位には古第三系.

この分厚い貝層は、ハマグリとマガキの純貝層によって形成されることや、周辺に居住域が未確

法制執務支援システム(データベース)のコンテンツの充実 平成 13

購読層を 50以上に依存するようになった。「演説会参加」は,参加層自体 を 30.3%から

廃棄物の再生利用の促進︑処理施設の整備等の総合的施策を推進することにより︑廃棄物としての要最終処分械の減少等を図るととも

  他人か ら産業廃棄物 の処理 (収集運搬、処 分)の 委託を 受けて 、その