1 / 20

3.3 非同期システムにおける合意

3.3 非同期システムにおける合意. 仮定 故障 クラッシュ故障のみ 通信 送ったメッセージはいつか届く 扱う問題 コンセンサス問題 ビザンチン将軍問題より簡単. 3.3  コンセンサス問題. プロセス ={P1, P2, …} Pi (i=1,2,..): propose(vi), Pi (i=1,2,..): decide(w i ) 条件 停止性 合意 : Pi, Pj が正常なら, w i = w j 妥当性 : Pi が正常のとき, w i = vj  となる Pj が存在 (j=i でもよい). propose(1).

gilles
Télécharger la présentation

3.3 非同期システムにおける合意

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3.3 非同期システムにおける合意 • 仮定 • 故障 • クラッシュ故障のみ • 通信 • 送ったメッセージはいつか届く • 扱う問題 • コンセンサス問題 • ビザンチン将軍問題より簡単

  2. 3.3 コンセンサス問題 • プロセス={P1, P2, …} • Pi (i=1,2,..): propose(vi), • Pi (i=1,2,..): decide(wi) • 条件 • 停止性 • 合意: Pi, Pjが正常なら,wi = wj • 妥当性: Piが正常のとき,wi= vj となるPjが存在(j=iでもよい)

  3. propose(1) decide(3) A propose(3) propose(2) B C decide(3) decide(3) propose(1) A decide(3) propose(3) B C propose(2) decide(3)

  4. コンセンサスの応用 • 非ブロッキング原子コミット (3.4.4) • 原子ブロードキャスト (3.5.2) • プロセス多重化 (3.5) • データ多重化 (3.6)

  5. 非同期システムでのコンセンサス • 無理 • FLP不可能性 (FLP impossibility result) • 1プロセスのクラッシュ故障でも不可能 • 故障ノードと遅いノードとを区別できない Di Di Di Di P1 P1 Dto Dto ! ! P2 P2 Dto Dto 時間 時間 (a) (b)

  6. 非同期システムでのコンセンサス • まず停止性以外の条件を満たすことを考える • 合意: Pi, Pjが正常なら,wi = wj • 妥当性: Piが正常のとき,wi = vj となるPjが存在 • Chandra-Touegアルゴリズム • 各プロセスが4ステップからなるラウンドを繰り返し実行 • 調停者プロセスによって決定する値が定まった場合,その値を高信頼ブロードキャスト

  7. 高信頼ブロードキャスト • ブロードキャスト • 全ノードにメッセージを伝えること • 高信頼ブロードキャスト • 故障が起きても,正常な全ノードにつたわるか,どのノードにも伝わらない A R-deliver(m) A A R-bcast(m) B C B C B C R-deliver(m) R-deliver(m)

  8. 高信頼ブロードキャストアルゴリズム R-bcast(m) • R-bcast(m)を実行: • send(m) to 全ノード • R-deliver(m) • mを受信: • if (mを初めて受信) • send(m) to 全ノード • R-deliver(m) P1 P2 P3 P4 R-bcast(m) P1 P2 P3 P4

  9. P1 P2 P3 Chandra-Touegアルゴリズムステップ1 • 調停者プロセスに,候補となる値(e)と,その値を得たラウンド番号(u)を送信する • 巡回調停者 • ラウンド1: P1 → ラウンド2: P2 →ラウンド3: P3 →ラウンド4: P1 → v1,0 propose(v1) e1:= v1 u1:= 0 v2,0 r1:= 1 propose(v2) e2:= v2 u2:= 0 v3,0 r2:= 1 propose(v3) e3:= v3 u3:= 0 r3:= 1

  10. P1 P2 P3 Chandra-Touegアルゴリズムステップ2 • 調停者は過半数のプロセスからのメッセージを待ち,最も新しいもの(uの値が大きいもの)を選び,全てのプロセスにそのvの値を送信する • 調停者以外のプロセスは何も行わない v1,0 v1 e1:= v1 u1:= 0 v1 v2,0 r1:= 1 e2:= v2 u2:= 0 v3,0 v1 r2:= 1 e3:= v3 u3:= 0 r3:= 1

  11. P1 P2 P3 Chandra-Touegアルゴリズムステップ3 • メッセージを受け取った場合,e,uを更新し,ackを調停者に送信する • e:= 受信した値,u:=現在のラウンド番号r • 故障していると判断した場合,nackを調停者に送信する e1:= v1 u1:= 1 v1,0 Ack v1 e1:= v1 u1:= 0 v1 Ack v2,0 r1:= 1 e2:= v2 e2:= v1 u2:= 0 u2:= 1 v3,0 v1 Ack r2:= 1 e3:= v3 e3:= v1 u3:= 0 u3:= 1 r3:= 1

  12. P1 P2 P3 Chandra-Touegアルゴリズムステップ4 • 調停者は過半数のプロセスからの返信を待つ • すべてAckなら,値を高信頼ブロードキャスト • Nackが一つでもあれば,ステップ1へ戻る • 調停者以外のプロセスはステップ1へ戻る e1:= v1 v1を高信頼ブロードキャスト u1:= 1 v1,0 Ack decide(v1) v1 e1:= v1 u1:= 0 v1 Ack v2,0 decide(v1) r1:= 1 r2:= 2 e2:= v2 e2:= v1 u2:= 0 u2:= 1 v3,0 v1 Ack r2:= 1 decide(v1) e3:= v3 e3:= v1 r3:= 2 ラウンド 1 ラウンド 2 u3:= 0 u3:= 1 r3:= 1

  13. P1 P2 P3 Chandra-Touegアルゴリズムステップ3 故障と判断した場合 • メッセージを受け取った場合,e,uを更新し,ackを調停者に送信する • 故障していると判断した場合,nackを調停者に送信する e1:= v1 v1を高信頼ブロードキャスト v1,0 Ack u1:= 1 v1 v1 v1 v2,0 v1 Ack Nack v2,0 e2:= v1 v1を高信頼ブロードキャスト u2:= 2 Ack v1 v1 v3,0 v1,1 Ack e3:= v1 ラウンド 2 ラウンド 1 u3:= 1

  14. P1 P2 P3 Chandra-Touegアルゴリズム耐故障性 • ステップ2,ステップ4で,調停者は過半数のプロセスからのメッセージで動作する • 1/2未満のプロセスの故障に耐性がある u1:= 1 v1を高信頼ブロードキャスト v1,0 Ack v1 e1:= v1 u1:= 0 v1 Ack v2,0 r1:= 1 r2:= 2 e2:= v2 e2:= v1 u2:= 0 u2:= 1 v3,0 v1 r2:= 1 e3:= v3 ラウンド 1 u3:= 0 r3:= 1

  15. P1 P2 P3 合意 Pi: decide(wi) 合意: Pi, Pjが正常なら,wi = wj e1:= v1 v1を高信頼ブロードキャスト v1,0 Ack u1:= 1 • 高信頼ブロードキャストするラウンドでは,過半数のプロセスが値を更新 • 更新される値は,過半数のプロセスで,最も新しい(最近更新された)値 • 過半数同士の集合には共通プロセスが存在 • ブロードキャスト後は,常にその値が更新値として選ばれる v1 v1 v1 v2,0 v1 Ack Nack v2,0 e2:= v1 v1を高信頼ブロードキャスト u2:= 2 Ack v1 v1 v3,0 v1,1 Ack e3:= v1 ラウンド 2 ラウンド 1 u3:= 1

  16. 一律合意 Uniform Agreement 一律合意が満たされる • 合意 • Pi, Pjが正常なら,wi = wj • 一律合意 • 故障プロセスPiについても,decide(wi)を実行したなら,wi = wj 一律合意ではない propose(1) propose(1) A A decide(3) decide(2) B C B C propose(2) propose(2) propose(3) propose(3) decide(3) decide(2) decide(3) decide(3)

  17. P1 P2 P3 停止性 • 進行しない場合 • Step 3で故障した調停者を故障と判定しない場合 • タイムアウトで対処可能 • 動き続ける場合 • Step 3で故障と判定することが続く場合 Ack Nack Nack Nack Nack

  18. 停止性 • 正常な調停者プロセスを,正常だと判断できるラウンドに達すればよい. • 何らかの同期に関する仮定が必要 • (FLP不可能性) • 部分的同期性の例 (3.3.4) • メッセージの遅延,命令の実行時間に上限があるがその値が分かっていない

  19. 故障検出 • 部分的同期性の例 • メッセージの遅延,命令の実行時間に上限があるがその値が分かっていない Di Di Di Di Di P1 Dto Dto ! ! P2 Dto Dto Dto := Dto+a 遅延を短めに見積もりすぎ 検出に失敗した場合,タイムアウト時間を延長

  20. その他 • 結局,コンセンサスが解ける条件は,故障検出能力に依存 • 障害検出器 failure detector (3.3.4) • 形式的に故障検出能力を定義したもの • コンセンサス • 将来的強(eventually strong)以上が必要 • ビザンチン将軍問題(クラッシュ故障のみ) • 完全が必要 • その他のアルゴリズム • Paxos (3.3.5)

More Related