Distributed system “解释”;自由选择的另一个优势:完全异步协议协议;
请任何人在“”中澄清第3步(见下文): 进程p:初始值xpDistributed system “解释”;自由选择的另一个优势:完全异步协议协议;,distributed-system,consensus,paxos,raft,Distributed System,Consensus,Paxos,Raft,请任何人在“”中澄清第3步(见下文): 进程p:初始值xp 步骤0:设置r:=1 步骤1:向所有进程发送消息(1,r,xp) 步骤2:等待收到N-t类型为(1,r,x)的消息。如果超过N/2条消息具有相同的值v,则将消息(2,r,v,D)发送到所有进程。否则,向所有进程发送消息(2,r,?) 步骤3:等待N-t类型为(2,r)的消息到达。 (a) 如果有一条D消息(2,r,v,D),则设置xp:=v (b) 如果超过tD-消息,则决定v (c) 否则设置xp=1或0的概率为1/2 步骤4:
- 步骤0:设置
r:=1
- 步骤1:向所有进程发送消息
(1,r,xp)
- 步骤2:等待收到
类型为N-t
的消息。如果超过(1,r,x)
N/2条
消息具有相同的值
,则将消息v
发送到所有进程。否则,向所有进程发送消息(2,r,v,D)
(2,r,?)
- 步骤3:等待
类型为N-t
的消息到达。(2,r)
- (a) 如果有一条D消息
,则设置(2,r,v,D)
xp:=v
- (b) 如果超过
D-消息,则决定t
v
- (c) 否则设置
或xp=1
的概率为1/20
- (a) 如果有一条D消息
- 步骤4:设置
并转至步骤1r:=r+1
v
”。否则,它会发出一个信息:它并没有下定决心
最后,在第三步中,我们检查是否有超过t
的“决定性”消息(如果t
节点的消息不会被传递,则至少会有一条“决定性”消息)。但我不明白为什么只有当我们只收到一条D-message时才设置xp:=v
。接收两个D消息属于3c,在这种情况下,我们将随机值分配给v。为什么?
为什么我们不能这样描述第三步:
- (a) 如果没有D消息,则以1/2的概率设置
或xp=1
0
- (b) 如果超过
D-消息,则决定t
v
- (c) 否则设置
xp:=v
If there is one D-message (2, r, v, D) then set xp := v
它的意思不是“正好一个”,而是“至少一个”。这可以从第三步稍作修改的示例中推断出来:
wait for messages of the form (P, k, ∗) from n − f processes {“∗” can be 0, 1 or ?}
if received at least f + 1 (P, k, v) with the same v != ? then decide(v)
if at least one (P, k, v) with v != ? then x ← v else x ← 0 or 1 randomly {query r.n.g.}