Document

クイズ


非同期システムにおいて,1プロセスがクラッシュ故
障する可能性がある場合,次のアルゴリズムで非ブ
ロッキング原子コミットが解けないことを示せ
アルゴリズム
 V(=Yes
or No)を高信頼ブロードキャスト
 全プロセスから値を受信した場合


すべてYesならコミットを決定
そうでなければアボートを決定
 全プロセスから受信する前に一定時間T経過した場合:

アボートを決定
3.5 プロセス多重化

プロセスを多重化し故障に対処する手法

Stateless Server
 状態を持たないサーバ(静的に与えられたデータ
の読み出しのみを実行)


多重化が容易
Stateful Server
 状態を持つサーバ

多重化には,複雑な機構が必要
多重化サーバ
op(arg)
Client
process pi
Invocation
ok(res)
Response
Nonreplicated server x
x
Replicated server x
Replica x1
Replica x2
Replica x3
例.FIFOキュー
enqueue(a)
Client
process pi
dequeue()
Invocation
ok(res)
Response
Replicated server x
Replica x1
Replica x2
Replica x3
Invocation
Client
process pj
enqueue(b)
dequeue()
Response
ok’(res’)
FIFO Queue
Service
Erroneous Execution
enqueue(a)
dequeue()
Client
process pi
ok(b)
Replica x1
Replica x2
ok(a)
ab
ba
Replica x3
ok(b)
Client
process pj
enqueue(b)
dequeue()
ok (a)
FIFO Queue
Service
多重化のアプローチ

3.5.1 能動的多重化 (Active replication)
 全Replicaが同じ処理を実行
P
p1
Q
p3
p2

3.5.3 受動的多重化 (Passive replication)
 1つのReplicaのみが処理を実行
P
p1
Q
Update
p2
Update
p3
3.5.1 能動的多重化
op(arg)
Client
process pi
Invocations
ok(res)
Responses
Replica x1
Replica x2
Replica x3

Atomicity (原子性)


Order (順序)


命令が実行されるなら,正常な全Replicaが実行
同じ順序で命令を処理
Determinism (決定性)
原子性,順序

満たされない場合
 状態の不整合が起こる
Client
process pi
Replica x1
Replica x2
Replica x3
Client
process pj
状態が
異なる
原子性,順序

正常なすべてのReplicaに,同じ順序でメッ
セージを配送する手段が必要
→ 原子ブロードキャスト
Client
process pi
Replica x1
Replica x2
Replica x3
Client
process pj
状態が
一致
決定性

決定性 Determinism
 初期状態と,それまでの処理の過程から一意に
結果が定まること
 各replicaの処理は決定的(deterministic)でなけ
ればならない


そうでなければ状態の一貫性が無くなる.
非決定性の要因
 例.マルチスレッド
多重化とグループ通信

グループ通信機能を下部に用いることで,容
易に多重化を実現
アプリケーション
受容 (deliver)
受信(receive)

グループ通信
原子ブロードキャスト等
送信
オペレーティングシステム
グループ通信システムの例
 ISIS,
Horus (Cornell University)
(多重化のための)グループ通信

順番を保つために,受信しても一旦bufferingするこ
とが必要
 受信 (receipt)
 ノードがメッセージを受け取ること
 受容 (delivery)
 プロセスがメッセージを渡すこと (受容,配送)
p1
Sender
Sender
B
A
p2
delivery A, B delivery A, B
receipt A, B
Network
receipt B, A
3.5.2 原子ブロードキャスト
プロセス={P1, P2, …}
 条件

 停止性:
正常なPiがabcast(m)したら,いずれPi
はdeliver(m)
 一律合意: あるPiがdeliver(m)したなら,正常など
のプロセスPjもdeliver(m)
 妥当性: deliver(m)したなら,abcast(m)済み
 全順序: Pi, Pjがdeliver(m)しており,Piがそれよ
り前にdeliver(m’)しているなら,Pjもそれ以前に,
deliver(m’)
コンセンサスを用いた原子ブロード
キャスト

受信したメッセージの集合を提案値として,定
期的にコンセンサス問題を解く
コンセサス
a
propose({b})
P1
decide({a,b})
{b}
propose({a,b})
P2
decide({a,b})
{a,b}
propose({a,b}) decide({a,b})
P3
{a,b}
b
3.5.3 受動的多重化

1つのReplicaのみが実際には処理を実行
 レプリカの動作は非決定的でもよい
Client
process pi
Invocation
Response
Server x
Primary replica x1
Update
Ack
Backup replica x2
Backup replica
x3
Update
Ack
主プロセスの故障1
op(arg)
Client
process pi
Invocation
Prim(x) = x1
Invocation
Prim(x) = x2
A
Primary replica x1
Backup replica x2
W
Update
Backup → Primary
Backup replica x3

新しい主プロセスを決定
主プロセスの故障2
op(arg)
Client
process pi
ok(res)
Invocation
with invID
Invocation
with invID
Response
B
Primary replica x1
Backup replica
x2
Update
Backup replica x3


Updateを受信したBackupと受信していない
Backupが存在→ Replicaの状態の不一致
グループ通信機能が必要
3.7 分散チェックポインティング

チェックポインティングとロールバックリカバリ
(2.2.2)
 定期的に状態を信頼できる記憶装置に保存し,
故障の際にその情報を利用して以前の正常な状
態に回復する手法

単一プロセスなら実現は容易
Rollback
time
Process
Checkpoint
Checkpoint
分散システムにおけるチェックポイン
ティング

分散システムでは通信を考慮する必要がある
P1
P2
m1
m2
P3

Inconsistentな(整合性のない)状態
 孤児メッセージ(Orphan

message)の存在
送信していないのに受信されたメッセージ
分散システムにおけるチェックポイン
ティング

In-transit message
 送信したが受信されていないメッセージ
P1
P2
P3

m1
m2
Consistentな(整合性のある)状態


実際に起こりうる状態
In-transit messageは,通常のメッセージ喪失と同様に,通信プロトコ
ルにより対処できる
ドミノ効果 (Domino Effect)
c1,1
P1
P2
P3
c1,2
c2,1
c3,1
c1,3
c2,2
c3,2
c2,3
c3,3
c2,4
c3,4
Recovery line

回復線 (Recovery Line)
 孤児メッセージを含まないチェックポイントの集合

ドミノ効果
 リカバリラインがドミノ倒しのように後退してしまう現象

ドミノ効果を起こさないようなCheckpointの取り方が
必要
分散チェックポインティングの種類

非連携 Uncoordinated
 各プロセスが非同期的にチェックポイントを取得
 ドミノ効果の危険

連携 Coordinated
 プロセスが協調してチェックポイントを取得
 ドミノ効果を防止

通信誘導 Communication-Induced
 メッセージのやり取りのパターンを基づいて,ドミノ効果が
起こらないようにチェックポイントを取得
連携チェックポインティング
時間同期を利用したアルゴリズム


同期のとれたクロックを使用
| Ci(t) - Cj(t) |  e
一定時間p毎にチェックポイントを取得
Orphan Messageが起こるシナリオ
e
p
P1
P2
p
連携チェックポインティング
時間同期を利用したアルゴリズム

チェックポイント後,時間e 経過するまで送信をしな
い
T
e
T+e
P1
P2
T
通信誘導チェックポインティング


メッセージのやり取りのパターンを基づいて,無用
(Useless)チェックポイント が発生しないようにチェッ
クポイントを取得
無用チェックポイント
 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
Z-Paths, Z-Cycles
Z-Path
m1, …, mn はCi,xからCj,yへのZ-Path

 m1はCi,x
以降に送信(プロセスPi)
 l = 1, …, n-1:

mlの受信と,ml+1の送信について,直前のチェックポイントが同じ
 mnをCj,y 以前に受信
c1,1
P1
c2,1
(プロセスPj)
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
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
P3
c3,2 m3
m5
c3,3
c2,4
m6
c3,4
通信誘導チェックポインティングの例
Z-Cycleを作らないようにする.
 例.論理時計の利用
 チェックポイントを取得したら
lc := lc+1
 送信メッセージmにはlcを時刻印として添付(tc(m))
 メッセージmを受信した際,tc(m) >lcならlc:= tc(m)

Idea
 Z-Pathの時刻印が単調増加ならZ-Cycleにはならない
P1
P2
P3
2
1
1
2
2
m1
4
3
3
m2
m3
m4
m5
4
4
m6
5
通信誘導チェックポインティングの例

Idea
 Z-Pathの時刻印が単調増加ならZ-Cycleにはならない

方法
 受け取ったメッセージ(m2)より小さい時刻印のメッセージ
(m1)を送信していたら,m2を受容する前にチェックポイント
を取る
P1
m2
P2
P3
P1
m2
P2
m1
ts(m1) ≥ ts(m2)
P3
m1
ts(m1) < ts(m2)
通信誘導チェックポインティングの例

Idea
 Z-Pathの時刻印が単調増加ならZ-Cycleにはならない

方法
 受け取ったメッセージより小さい時刻印のメッセージを送信
していたら,deliverする前にチェックポイントを取る
P1
P2
P3
2
1
1
2
2
m1
4 5
3
3
m2
m3
m4
m5
4
4
m6