狠狠撸

狠狠撸Share a Scribd company logo
たかはしいちろう @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つのプロセスのみが共有リソースにアクセスするよう、
アクセスが誰の番かを管理するコーディネータを使用する
? 完全に分散したアルゴリズムも存在するが、通信とプロセス
の故障に影響を受けやすいという欠点がある
? コーディネータを固定しない場合、複数のプロセスの誰が
コーディネータになるかを決定しなければならない。その決定
は選任アルゴリズムによってなされる
? 選任アルゴリズムはコーディネータがクラッシュした場合に主
に利用されるが、ピアツーピアネットワークにおけるスーパー
ピアの選択にも適用される

More Related Content

分散システム読書会 06章-同期(後編)