Fault-Tolerant Computing Systems #8 Distributed Systems Pattara Leelaprute Computer Engineering Department Kasetsart University [email protected] 1 Basic Concepts of Distributed Systems Distributed Systems (分散システム) Networkを通して通信可能な複数のノードから構 成 以下のものを持たない Shared memory Clock 2 System Model (at the logical level of applications) Model 複数のプロセス(process)から構成される. 各プロセスはメッセージ通信によって情報を送受できる どのプロセスとも通信可 各Channel は FIFO 各プロセスは共通のクロックを持たない. 各プロセスの処理の速度は可変である. メッセージの遅延の大きさは可変である. 分散システムに特有の様々な問題が生じる. 3 Fault Model Crash Fault 故障したプロセスは停止 aka Fail-stop fault Byzantine Fault 任意の動作 Crash Faults Byzantine Faults 4 7.2 Ordering of Events and Logical Clocks Event(イベント)のOrdering(順序付け) 必要性 例.複数のプロセスが協調して同じ順番で要求を処理 する必要がある場合 (Ricart-Agrawala mutual exclusion algorithmなど) 困難さ 共通のClockがない メッセージ遅延,プロセス実行速度が可変 5 Partial Ordering of Events Happened before relation (→で表記) 同一プロセス上での生起順と,メッセージの送受から規定 される,分散システム上のevent間での因果関係 Irreflexive partial order relation (非反射的半順序関係) (a, a) R が成り立たない (irreflexivity, 非反射律) (a, b) R, (b, c) R (a, c) R (transitivity, 推移律) Partial order relation (半順序関係) Relation (関係) ・・・ 要素のtuple(組)の集合 Partial order relation (半順序関係) (a, a) R (reflexivity, 反射律) (a, b) R, (b, a) R a = b (antisymmetry 反対称律) (a, b) R, (b, c) R (a, c) R (transitivity, 推移律) 6 Partial Ordering of Events Happened before relation (→で表記) 1~3を満たす最小の関係 1. 2. 3. 同じプロセスでaがbより先に起こったならa→b 同じメッセージについてaが送信,bが受信ならa→b a→bかつb→cならばa→c 注. Reflexiveではない P1 P2 e11 e21 e12 e22 e23 e11 → e12 e21 → e22 e21 → e23 e22 → e23 e11 → e22 e21 → e12 e11 → e23 7 Partial Ordering of Events Happened before relation (→で表記) Concurrent (並行) a→bもb→a も成り立たない (例.e11 と e21 ) Causality a→bなら,a causally affects b. P1 P2 e11 e21 e12 e22 e23 e11 → e12 e21 → e22 e21 → e23 e22 → e23 e11 → e22 e21 → e12 e11 → e23 8 Logical Clocks Logical Clock (論理時計) 整数Ci:各プロセスPiのevent aのlogical clock値 Happen-before relation に矛盾しない時間 a,b, a→b ならば Ci(a) < Cj(b) P1 e11 e12 e13 e14 (1) (2) (3) (4) e15 e16 (5) (6) e17 (7) Clock values P2 (1) (2) (3) e21 e22 e23 (4) e24 (7) e25 9 Logical Clocks ルール 同じプロセスでa,bが連続して起こったら Ci(b) := Ci(a) + 1 2. メッセージには送信イベントの時刻をtimestamp (時刻印) tmとして付加.受信イベントaは Ci(a) := max(Ci(a), tm + 1) a,b, a→b ならば Ci(a) < Cj(b) !? e11 e12 e13 e14 e15 e16 e17 P1 1. (1) (1) (2) (5) (6) tm=6 tm=2 tm=4 (3) (4) e21 e22 e23 Clock values P2 (2) (3) tm=2 (4) e24 (7) (7) e25 10 Total Ordering 同じLogical Clock値を持つイベントの解消 Total (a, a) R (reflexivity, 反射律) (a, b) R, (b, a) R a = b (antisymmetry 反対称律) (a, b) R, (b, c) R (a, c) R (transitivity, 推移律) a,b, (a, b) Rまたは (b, a) R (totalness, 完全律) order relation (全順序関係) Logical Clock + プロセスID (Pi) P1 Clock values P2 e11 e12 e13 e14 (1) (1.1) (2) (3) (4) (2.1) (3.1) (4.1) (1.2) (1) (2.2) (2) e21 e22 e15 e16 (3.2) (3) e23 (5) (6) (6.1) (5.1) (4.2) (4) e24 e17 (7) (7.1) (7.2) (7) e25 11 7.3 Clock Synchronization プロセスの持つ``physical’’ clockの値を一定の誤差の範囲 に保つこと Hardware clock : H1 P1 00:00:00 P2 H2 00:00:00 10:00:00 Clock: C1 := H1 +CORR1 10:00:25 C2 := H2 +CORR2 | Ci(t) - Cj(t) | b を満たすように,メッセージを交換して, CORRiを計算 Ci(t) :時刻(real-time)tにおけるPiのクロック 12 Clock Synchronization 考慮すべき要素 Clockの故障 2. Clockのスピードの差 3. メッセージ遅延 1. A 1:00 B 1:00 1:05 1:10 A 1:10 1:05 (a) 正常 C 1:00 B 1:00 2:55 1:10 1:15 1:10 C (b) BがByzantine 故障 (“Dual-faced”) 13 Clock Synchronization 考慮すべき要素 Clockの故障 2. Clockのスピードの差 3. メッセージ遅延 1. Hi(t): 時刻(real-time)tにおけるPiのHardware Clock r 仮定: dH (t) Hi(t) i dt -1<r 通常定数ρは10-5程度 r 1-r t 14 Fault-Tolerant Clock Synchronization Algorithm 例.Lundelius-Welch and Lynch, 1988 間隔DT毎にメッセージ交換を行いクロック値 を調整 DT P1 t [(1-r)DT, (1+r)DT] P2 15 Lundelius-Welch – Lynch Algorithm 1. Clockの故障 nをプロセス数, fを耐えられる故障の数とした時 3f+1n 3. メッセージ遅延 時間の範囲[-, +]内に収まると仮定 P1 t P2 0 16 Lundelius-Welch – Lynch Algorithm DT毎,各プロセスは全プロセスにメッセージを送信 送信から時間(1 + r)(b + +)が経つまで他のプロセスのメッ セージを受信し,受信時間を記録 own clock realtime b :前回の同期で保障されているズレの上限 + :メッセージ遅延の最大値 (1 + r)(b + +) DT P1 [(1-r)DT, (1+r)DT] A2 A5 A3 ≥ b + + P2 17 Lundelius-Welch – Lynch Algorithm DT P1 [(1-r)DT, (1+r)DT] T A2 (1 + r)(b + +) A5 A3 ≥ b + + AV := メッセージ到着時刻A2 A3 ・・・の大きい方と小さい方から f 個の値を除いた残りの値の中間点 T AV A A A A A A A f=2 CORR := CORR + (T + – AV) | Ci(t) - Cj(t) | b 4+ 4rDT f=2 18 19 Chapter 8. Checkpointing and RollBack Recovery 定期的に状態を信頼できる記憶装置に保存 し,故障の際にその情報を利用して以前の正 常な状態に回復する手法 単一プロセスなら実現は容易 Rollback time Process Checkpoint Checkpoint 20 Roll-Back Recovery in MessagePassing Systems 分散システムでは通信を考慮する必要がある P1 P2 m1 m2 P3 Inconsistentな(整合性のない)状態 Orphan messageの存在 送信していないのに受信されたメッセージ 21 Roll-Back Recovery in MessagePassing Systems In-transit message 送信したが受信されていないメッセージ P1 P2 P3 m1 m2 Consistentな(整合性のある)状態 実際に起こりうる状態 In-transit messageは,通常のmessage lossと同様に,通信プロトコ ル(communication protocol)により対処できる 22 Rollback and Domino Effect c1,1 P1 P2 P3 c1,2 c2,1 c3,1 c1,3 c2,2 c3,2 c2,3 c2,4 c3,3 c3,4 Recovery line Recovery Line (リカバリライン) Orphan Messageを含まないチェックポイントの集合 Domino Effect (ドミノ効果) リカバリラインがドミノ倒しのように後退してしまう現象 ドミノ効果を起こさないようなCheckpointの取り方が 必要 23 Checkpointing Uncoordinated (非連携) Checkpointing 各プロセスが非同期的にチェックポイントを取得 Domino Effectの危険 Coordinated (連携) Checkpointing プロセスが協調してチェックポイントを取得 Domino Effectを防止 Communication-Induced Checkpointing メッセージのやり取りのパターンを基づいて,Domino Effectが起こらないようにチェックポイントを取得 24 Two-Phase Checkpointing Scheme Initiator Q 1. 2. tentative checkpointを取得し,他のプロセスに通知. 他のプロセスがtentative checkpointを取得したことを 確認したら, tentative checkpoint を permanent checkpoint とする. Phase 2が完了するまで,通信は停止する. Q P1 No Orphan Message P2 25 Two-Phase Checkpointing Scheme Initiator Q以外 1. 2. Qのメッセージを受信したら,tentative checkpointを取得 し,Qに通知. Qから再度メッセージを受信したら,tentative checkpoint を permanent checkpoint とし,Qに通知. Phase 2が完了するまで,送信は停止する. Q P1 No Orphan Message P2 26 Checkpointing using Synchronized Clocks 同期のとれたクロックを使用 | Ci(t) - Cj(t) | b 一定時間p毎にチェックポイントを取得 Orphan Messageが起こるシナリオ b p P1 p P2 27 Preventing Orphan Messages チェックポイント後,時間β経過するまで送信をしな い kp b kp + b P1 P2 28 Communication-Induced Checkpointing (CIC) メッセージのやり取りのパターンを基づいて, Useless Checkpointが発生しないようにチェックポ イントを取得 Useless Checkpoint Recoveryに利用できないチェックポイント c1,1 P1 c2,1 c1,2 c1,3 c2,2 m2 m4 c2,3 P2 c3,1 m1 P3 (例.C3,3) c3,2 m3 m5 c3,3 c2,4 m6 c3,4 29 Z-Paths, Z-Cycles Z-Path m0, m1, …, mn はCi,xからCj,yへのZ-Path Ci,x → sendi(m0) (→: happened-before relation) l = 0, …, n-1: deliverk(ml)とsendk(ml+1)が同じCheckpoint Interval,または deliverk(ml) → sendk(ml+1) deliverk(mn) →Cj,y (deliver: 受信したメッセージを実際に使うこと) c1,1 P1 c2,1 c1,2 c1,3 c2,2 m2 m4 c2,3 P2 c3,1 m1 P3 c3,2 m3 m5 c3,3 c2,4 m6 c3,4 30 Z-Paths, Z-Cycles Z-Cycle 一つのチェックポイントに対するZ-Path Useless Checkpointの必要充分条件 c1,1 P1 c2,1 c1,2 c1,3 c2,2 m2 m4 c2,3 P2 c3,1 m1 c3,2 m3 m5 c3,3 c2,4 m6 c3,4 P3 31 CIC Scheme Z-Cycleを作らないようにする. 例.Logical Clockの利用 チェックポイントを取得したら lc := lc+1 送信メッセージmにはlcをtimestampとして添付(tc(m)) メッセージmを受信した際,tc(m) >lcならlc:= tc(m) Idea Z-Pathのtimestampが単調増加ならZ-Cycleにはならない P1 P2 P3 2 1 1 2 2 m1 4 3 3 m2 m3 m4 m5 5 4 4 m6 32 A CIC Scheme Idea Z-Pathのtimestampが単調増加ならZ-Cycleにはならない 方法 受け取ったメッセージ(m2)より小さいtimestampのメッセー ジ(m1)を送信していたら,m2をdeliverする前にチェックポイ ントを取る P1 m2 P2 P3 P1 m2 P2 m1 m2 ts(m2) ≤ ts(m1) P3 m1 ts(m2) > ts(m1) 33 A CIC Scheme Idea Z-Pathのtimestampが単調増加ならZ-Cycleにはならない 方法 受け取ったメッセージより小さいtimestampのメッセージを 送信していたら,deliverする前にチェックポイントを取る P1 P2 P3 2 1 1 2 2 m1 4 5 3 3 m2 m3 m4 m5 4 4 m6 34
© Copyright 2024 ExpyDoc