Upload
ichiro-takahashi
View
469
Download
3
Embed Size (px)
Citation preview
たかはしいちろう @tichi73
2013/06/28
6.1 クロック同期:実際の時間に基づく同期
6.2 論理クロック:相対的な順序に基づく同期
6.3 相互排他
6.4 ノードの全地球測位
6.5 選任アルゴリズム
6.6 まとめ
すべてのコンピュータの物理クロックが完全に同期できていればいいけど、結構大変、というか無理
でも実際には、ノード間のイベントの順序や依存関係がわかれば十分ということも多い。そこで論理クロックという考えが登場
順序関係に注目 ◦ Lamportの論理クロック ◦ 全順序マルチキャスト
依存関係に注目 ◦ ベクトルクロック ◦ 因果的順序マルチキャスト
集中アルゴリズム
非集中アルゴリズム
分散アルゴリズム
トークンリングアルゴリズム
分散型相互排他アルゴリズムの分類 ◦ トークンベース方式
概要:トークンという特殊なメッセージをパスし、トークンを受け取ったときだけ共有リソースにアクセスが許される方式
利点:スターベイションやデッドロックを避けやすい
欠点:トークンを喪失したときの復旧が複雑
◦ パーミッションベース方式
概要:最初にアクセスしようとするプロセスが他のプロセスの許可を要求する方式。
許可を得る方法に様々な方法があり、本節では、そのうちのいくつかを紹介する
概要 ◦ 1つのプロセスがコーディネータとして選任される
◦ 共有リソースにアクセスしたいプロセスは、コーディネータにその許可を求めるメッセージを送信する
他のプロセスがアクセスしていないならば、許可を与える返答を返す。その返答を受け取ると要求したプロセスはアクセスできる
他のプロセスがアクセス中の場合、コーディネータは応答しない。リソースが開放されたときに、許可を与える返答を行なう
特徴 ◦ 利点:単純、容易、公平
◦ 欠点:コーディネータがSPOF、コーディネータがボトルネック
概要 ◦ 各リソースは 𝑛 重に複製されていることを仮定する ◦ 各レプリカは独自のコーディネータを持つ
◦ あるプロセスがリソースにアクセスするには、コーディネータの過半数 𝑚 > 𝑛/2 の賛同を必要とする。(アクセスを許可しないときはその旨を通知する)
◦ コーディネータは故障からの復旧時に、以前の状態を考慮する必要がない(任意の時点でリセットすることができる)
特徴 ◦ 投票の正しさを損なう確率は十分低い(計算は面倒なので省略)
◦ アクセスが拒否されたときランダム時間後に再試行するが、多くのノードがリソースにアクセスしようとすると、どのノードも十分な投票を得られなくなり、利用率が急速に低下する
概要 ◦ イベントの全順序が保たれることを仮定する
◦ あるプロセスが共有リソースにアクセスしようとするとき、リソースの名前、自分のプロセス番号、タイムスタンプ(現在の論理時間)、を含むメッセージを作成し、すべてのプロセスに送信する
◦ メッセージの送信は信頼できると仮定する
◦ あるプロセスが別のプロセスからの要求メッセージを受信したとき、受信者のリソースに対する状態に応じて動作する 受信者がアクセス中(またはアクセス予定)でなければOKを返す
受信者がアクセス中であれば、何も返答しない
受信者がアクセスしようとしていて、まだできていなければ、メッセージの論理時間を比較して、低いほうが勝つ。
アルゴリズムの動作 a. プロセス0と2が同時に共有リソースにアクセスしようとする
b. プロセス0が最低のタイムスタンプを持っているので勝つ
c. プロセス0が完了するとOKを送信して、2がアクセスできる
特徴 ◦ 利点
デッドロックやスターベイションなしに相互排他ができる 故障単一箇所性(SPOF)が存在しない
◦ 欠点 故障n箇所性の問題が生じる: どれかのプロセスがクラッシュすると応答できなくなり、この無応答はアクセス許可の拒否と解釈され、すべての後続の要求をブロックしてしまう
◦ 問題1:アルゴリズムの改良が必要 要求が入ると許可または許可拒否の返答を送信する 応答が帰らないと宛先がダウンしたと判断する 拒否が返答されると後続のOKメッセージを待つ
◦ 問題2:マルチキャストグループのメンバリスト維持が必要 ◦ 問題3:すべての要求を扱わせるとボトルネックになる(要改良)
結論:「使い物になりません」 ◦ 集中型に比べ、速度が遅く、複雑で、高コストで、ロバスト性も低い
概要 ◦ ネットワークを論理的にリング構成にして、各プロセスはリングにおけるある位置を割り当てることとする
◦ リング位置はネットワークアドレスまたはその他の手段の数値的順序に配置される(順序は問題ない)
◦ 各プロセスは自分の後の次は誰かを知っている ◦ リングが初期化されるとプロセス 0 にトークンが与えられる
◦ トークンはプロセス k からプロセス k+1 へ、P2Pで送られる
◦ トークンを得たプロセスはリソースにアクセスできる。リソースの解放後にはトークンを次のプロセスに渡す
特徴 ◦ 問題: トークンが喪失したとき再作成されなければならないが、喪失の検出は難しい(トークンが1時間現れなくても喪失とは限らない)
◦ 改善策:トークン受け取りの確認通知を行なうことで、次のプロセスのダウンを検出できるようにする(ダウンしたプロセスはスキップする)
4つのアルゴリズムの比較 ◦ 集中型が最も簡単で最も効率的
◦ 分散型はメッセージ数が多くなる(プロセス数が多い場合)
◦ アクセスまでの遅延時間は許可の応答を得るまでのメッセージ数となるが、トークンリングでは0からn-1まである
◦ 非集中型以外はクラッシュの場合の問題を持っているが、非集中型はスターベイションの恐れがある
アルゴリズム アクセスに要する
メッセージ数 アクセスまでの遅延時間
問題
集中型 3 2 コーディネータのクラッシュ
非集中型 3mk, k=1,2... 2m スターベイション、低効率
分散型 2(n-1) 2(n-1) プロセスのどれかのクラッシュ
トークンリング 1から∞ 0からn-1 トークンの喪失、プロセスのクラッシュ
m=コーディネータ数、k=試行回数、n=プロセス数
ノードの全地球測位
概要 ◦ ノード数が多くなると、他のノードの追跡が困難になる
◦ ルーティング、マルチキャスト、データの配置、探索などの分散アルゴリズムを実行する場合に、他のノードの知識が重要になる
◦ この節では、時間的事項に関連した組織化について述べる
幾何オーバーレイ・ネットワーク ◦ 各ノードは𝑚次元幾何空間における位置を与えられる
◦ 最も単純な例は、ノード間の距離がノード間伝達遅れに対応する場合である。2つのノード𝑃および𝑄が与えられたとき、あるメッセー
ジが𝑃から𝑄へ(あるいは逆方向に)伝達するのにどれくらい時間がかかるかに、距離 𝑑(𝑃, 𝑄) が影響する
◦ サーバ 𝑂 のWebを複数のサーバ 𝑆1, 𝑆2, … , 𝑆𝑘 に複製しているとして、クライアント 𝐶 の要求に対してサーバ 𝑂 は 𝐶 に最も近いサーバに宛先を変更する
◦ 各レプリカの幾何的位置とクライアントの幾何的位置が既知ならば、 𝑂 は距離𝑑(𝐶, 𝑆𝑖)が最小になるサーバ 𝑆𝑖 を選択できる
◦ この選択はローカル処理のみで可能で、実際の伝達遅れについて調べる必要はない
位置ベースルーティング ◦ 位置情報のみを用いたメッセージの転送方法
例:宛先に最も近い隣にメッセージを転送させる
◦ ローカル情報のみを使用するので、通常のルーティングアルゴリズムのように、ネットワーク中の全ノードにリンク情報を伝播させる必要はない
◦ 𝑚次元幾何的空間のノード位置測位には、𝑚 + 1の距離測定値が必要になる(計算方法などGPSで既出なので省略
◦ しかし、異なるノード間で測定された距離は必ずしも整合しない
位置ベースルーティング
距離の不整合を完全に解決することは不可能。なぜなら、インターネットの伝達遅れの計測値は、「三角不等式」を満たしていない。すなわち、𝑑 𝑃, 𝑅 ≤ 𝑑 𝑃, 𝑄 + 𝑑(𝑄, 𝑅) を常に満たすわけではない
この対策の一つとしては、ランドマークと知られている 𝐿 個の特別なノード 𝑏1, 𝑏2, … , 𝑏𝐿 を用いる。ランドマークは互いの間での伝送
遅れ 𝑑(𝑏𝑖 , 𝑏𝑗) を計測しておく。
実質的に中心となるノードは各ランドマークの座標を計算し、次の誤差累積関数を最小にすることを探索する
𝑑 𝑏𝑖 , 𝑏𝑗 − 𝑑 (𝑏𝑖 , 𝑏𝑗)
𝑑(𝑏𝑖 , 𝑏𝑗)
2𝐿
𝑗=𝑖+1
𝐿
𝑖=1
すなわち、、、
すいません、理解不足です
_人人人人人人人人人人人人人_ > よくわかりませんでした! <  ̄YYYYYYYYYYYYY ̄
伝統的な選任アルゴリズム
無線環境における選任
大規模システムにおける選任
選任アルゴリズムとは
◦ 多くの分散アルゴリズムでは、コーディネータとして、イニシエータとして、またはその他の特別な役割を果たす1つのプロセスを必要とする
◦ どのプロセスが特別な責任を果たすかは問題ではなく、プロセスのうちの1つが責任を果たさなければならない、すなわち、コーディネータの選任が問題となる
◦ すべてのプロセスが同等な特性をもつならば、各プロセスが一意的な数(たとえばネットワークアドレス)を持つと仮定して、それが最も大きなプロセスをコーディネータとして指名する
◦ 選任アルゴリズムとは、それを見つける方法である
ブリーアルゴリズム(ガキ大将アルゴリズム) ◦ コーディネータが応答しないと気がついたあるプロセス 𝑃 は選任
(election)を起動する。 𝑃は自分より高い数値を持つすべてのプロセスに対して、𝐸𝐿𝐸𝐶𝑇𝐼𝑂𝑁 メッセージを送信する
だれからも応答がなければ、𝑃 はコーディネータになる
𝑃より高い数値のプロセスから応答があれば、交代して終了する
◦ 受信側の動作 いつでも低い数値の協力者から 𝐸𝐿𝐸𝐶𝑇𝐼𝑂𝑁 メッセージを受信する
受信者は自分が生きていて交代可能なら 𝑂𝐾 メッセージを返す
受信者はまだ選任を開催していなければ、開催する
◦ 勝利宣言 最終的に1つのプロセスだけが残り、新しいコーディネータとなる
新コーディネータは他のプロセスに 𝐶𝑂𝑂𝑅𝐷𝐼𝑁𝐴𝑇𝑂𝑅 メッセージを送る
ブリーアルゴリズムの動作の様子
リングアルゴリズム(トークンは利用しない) ◦ 各プロセスはリング状に順序付けされていると仮定する
◦ コーディネータが機能していないと気がついたプロセスは、自分の番号を含む 𝐸𝐿𝐸𝐶𝑇𝐼𝑂𝑁 メッセージを、自分のサクセッサに送信する
◦ メッセージを受信したプロセスは、メッセージ中に自分のプロセス番号を追加して次のサクセッサに送信する
◦ サクセッサがダウンしている場合、送信者はそのサクセッサをスキップしてリングに沿った次のメンバに送信する
◦ メッセージは1周して選任を開始したプロセスに戻ってくるので、メッセージタイプを 𝐶𝑂𝑂𝑅𝐷𝐼𝑁𝐴𝑇𝑂𝑅 に変更して、もう一度回覧される。この回では誰がコーディネータで誰が新しいリングのメンバであるのかが知らされる
リングアルゴリズムの動作の様子 ◦ プロセス7のクラッシュに、5と2が気がついて選任を開始する
◦ アルゴリズムが2周するが、どちらもプロセス6が勝利する
無線環境での伝統的な選任アルゴリズムの問題点 ◦ 現実的でない仮定に基づいている
メッセージの伝達は信頼性が高い
ネットワークのトポロジは変化しない
◦ 特にアドホックネットワークで成り立たない
アドホックネットワークで動作できるように開発された選任のためのプロトコルは少ない
[Vasudevan et al., 2004] ではノードの故障やネットワーク分割に対応する解決策を提案している
[Vasudevan et al., 2004] のアルゴリズム ◦ ネットワーク内の開催元(source)は、どのノードも近隣ノードに
𝐸𝐿𝐸𝐶𝑇𝐼𝑂𝑁 メッセージを送信して、選任プロセスを開催(initiate)することができる
◦ ノードが最初に 𝐸𝐿𝐸𝐶𝑇𝐼𝑂𝑁 メッセージを受信すると、送信者を親と認識し、次に親以外の直近のすべての近隣ノードに 𝐸𝐿𝐸𝐶𝑇𝐼𝑂𝑁 メッセージを送信する。肯定応答(acknowledge)を待つ
◦ ノードが親に肯定応答を返すとき、親にとって最もリーダーにふさわしいノードを示す情報(最善ノード)を含める
◦ ノードが親以外から 𝐸𝐿𝐸𝐶𝑇𝐼𝑂𝑁 メッセージを受信すると肯定応答を返すだけである(最善ノード情報を含まない)
◦ 最善ノードを決めるため、各ノードは自身の「容量」を示す情報を持つ(バッテリ残量やその他リソース量から算出しておく)
◦ 最終的に選任を開催したノードは、どのノードがリーダとして選択されるのに相応しいかを知り、その情報をすべてのノードにブロードキャストする
A) 初期状態:ノードは容量とラベルaからjを持つ
B) ノードaが選任を開催:ノードbとjにブロードキャスト
C) bはcとgにブロードキャスト。gはjより先にbから受信
D) eはgから最初にブロードキャストを受信
E) すべてのノードに𝐸𝐿𝐸𝐶𝑇𝐼𝑂𝑁メッセージが伝搬された状態
F) 最善ノードの報告→hが最善なリーダと判定される
大規模システムにおける選任
◦ 今まで述べたアルゴリズムは比較的小規模分散システムに適用する。また選任されるノードは単一としてきた
◦ 大規模システム、ピアツーピアネットワークにおけるスーパーピアの場合のように、複数のノードが選択されなければならない状況もある。ここではスーパーピアの選択について議論する
◦ スーパーピアの選択についての要件 [Lo et al., 2005]
通常のノードはスーパーピアへのアクセスの伝達遅れは小さいこと
スーパーピアはオーバーレイネットワーク上に平等に分布していること
オーバーレイネットワーク上の全ノード数に対してスーパーピア数の比率が定まっていること
定まった通常ノードの数より多くをスーパーピアは扱わないこと
DHTベースシステムの場合 ◦ 基本的考え方はスーパーピアのための識別子空間の部分を確保すること ◦ 各ノードはランダムで一様の 𝑚 ビットの識別子を受信する。最初の 𝑘 ビットでスーパーピアを識別することにする
◦ 𝑁 個のスーパーピアを必要とするならば、どのキーも最初の log2 𝑁 ビットがこれらのノードを識別するのに使用される
◦ 𝑚 = 8, 𝑘 = 3 の小規模Chordシステムを考える。特別のキー 𝑝 に対応するノードを探索するとき、そのパターンに対応するノードへ探索要求へのルートを決定することができる
𝑝 𝐴𝑁𝐷 11100000
◦ これがスーパーピアとして扱われる。各ノードの識別子は次の探索を行い、
𝑖𝑑 𝐴𝑁𝐷 11100000 が自分自身にルートされているかで、スーパーピアかどうかチェックできる
_人人人人人人人人人人_ > よくわかりません! <  ̄YYYYYYYYYY ̄
𝑚 次元幾何空間におけるノード測位に基づく方法 ◦ オーバーレイ上で 𝑁 個のスーパーピアを平等に配置することを仮定する
◦ 基本的な考え方: 総数 𝑁 個のトークンを 𝑁 個のランダムに選ばれたノードに広げていく
どのノードも1つ以上のトークンを保持できない
各トークンは他のトークンを押し出す働きをする
すべてのトークンが同じ排斥力を発揮するならば、それらは互いに押し出し合って、幾何空間に平等に広がっていく
◦ この方法はトークンを保持するノードは他のトークンについて学習することを必要とする
◦ 排斥力による2次元空間におけるトークンの移動
AおよびBからの排斥力を合成した力の方向に、Cの持つトークンはノードDへと移動する
まとめ
まとめ1 ◦ 同期とは、適切なことを適切な時間に行わせること
◦ 分散システムおよびコンピュータネットワークにおける問題は、グローバルに共有できるクロックの表記法がないこと
◦ 分散システムでクロックを同期させる方法は、すべてクロック値を交換することに基づいている。通信遅延の変動を扱う方法がクロック同期アルゴリズムの正確さを決めている
◦ 同期に関連してノード測位の問題がある。ノード間の伝達遅れの正確な計測として幾何的距離が使用可能なように 𝑚 次元空間においてノードの座標を割り付けることである。これはGPSにおける位置と時間を決定する方法に類似している
◦ 多くの場合重要なのは絶対的な時間でなく、関連したイベントが正しい順序で起きることである。Lamportの論理クロックやベクトルクロックが適用できる
まとめ2 ◦ 同期アルゴリズムの重要なものの1つに、分散相互排他アルゴリズムがある
◦ 最大1つのプロセスのみが共有リソースにアクセスするよう、アクセスが誰の番かを管理するコーディネータを使用する
◦ 完全に分散したアルゴリズムも存在するが、通信とプロセスの故障に影響を受けやすいという欠点がある
◦ コーディネータを固定しない場合、複数のプロセスの誰がコーディネータになるかを決定しなければならない。その決定は選任アルゴリズムによってなされる
◦ 選任アルゴリズムはコーディネータがクラッシュした場合に主に利用されるが、ピアツーピアネットワークにおけるスーパーピアの選択にも適用される