考虑以下流程:
提议者准备一条信息,得到一个承诺,发送一个有价值的建议,得到接受。都很好。
在接受后,另一个提议者会出现并准备一个带有higer id的消息,相同的流程将继续进行。
这是paxos算法的单循环的有效流吗?或者这实际上是多个帕克斯?
发布于 2020-12-11 20:01:08
在接受后,如果另一个投标人出现并准备一条消息,它将收到至少一个包含先前接受的值的答复。然后,Paxos规则要求第二个投标人必须提出先前接受的值。它要建议的值被第一个值覆盖。这确保只能为Paxos算法的单个实例选择单个值。
发布于 2020-12-12 15:27:14
这取决于您的意思是“可以在给定的Paxos中固定多个值”,还是指“任何给定节点都可以接受多个值”。
根据@Rakis所接受的答案,您不能获得多个固定到某个位置的值。然而,由于消息丢失,在位置固定之前,可以让节点接受一个以上的值到一个位置。
要理解这种情况是如何发生的,我们可以想象任意消息丢失,任意节点崩溃。例如,节点{A, B, C, D, E}
与A
领导。它发出准备,得到多数响应,发出accept(Va)
,然后崩溃,永远不会恢复。由于丢失了消息,节点B
只能看到接受消息。节点E
超时并发出准备。由于消息丢失,这只能由节点C
、D
和E
看到。节点E
具有大多数响应,但不知道节点A
发送并由节点B
接受的值Va
。它可以自由选择自己的价值并发行accept(Ve)
。这一次,所有的信息都会传出去。节点B
与节点C
、D
和E
一起接受Ve
。
在这种情况下,算法固定的唯一值是Ve
。然而,节点B
接受两个不同的值Va
和Vb
。
回答你的问题是这个多帕克斯,答案是否定的。有关mutltipaxos的说明,请参见这个答案。注意,将事物称为Paxos
和Multi-Paxos
是没有帮助的。在他的2019年讲座中,发明者谈到了用于修复单个值的最小算法的Single Synod Algorithm
。然后,实际可行的算法是扩展从一个稳定的领导者中选择多个值。关于这个问题,请见这个职位。如果你正在参加这个题目的考试,你可能需要坚持旧的令人困惑的术语。
https://stackoverflow.com/questions/65237017
复制相似问题