如果Paxos算法被修改为接受者接受第一个值或最近的值,那么该方法是否会失败?

时间:2015-02-28 10:00:59

标签: algorithm paxos

我试图推理并理解算法是否在这些情况下失败但似乎无法找到他们愿意的例子。

如果他们不这样做,为什么不遵循其中任何一个?

2 个答案:

答案 0 :(得分:3)

不要忘记,在后几轮中,领导者可能会提出与前几轮不同的价值观。因此,第一条消息的值可能不正确。

此外,消息可能会重新排序。 (考虑一个脱机的节点,然后重新联机以查找以随机顺序发送的消息。)最近的消息可能不是最近发送的消息。

最后,不要忘记领导者的变化。接受者越快地确信它是错误的领导者就越好。

答案 1 :(得分:0)

不考虑算法在这种情况下是否失败,而是考虑到如果每个节点看到丢失,延迟或重新排序的不同消息,那么节点是否接受第一个接收到的第一个节点是否正确?显然答案是否定的。

该算法旨在在" first"不能通过查看消息的时间戳来决定,因为不同机器上的时钟可能不同步。该算法被设计为在节点之间的网络路径,距离和拥塞可能不同时工作。节点可能崩溃并重新启动,否则挂起并继续使事情变得更加充满敌意"。

因此,一个五节点集群可以让所有两个节点都尝试成为领导者,并且所有三个节点都看到一个随机排序,其中领导者消息是"首先"。那么在这种情况下,正确的答案是什么?该算法具有正确的"根据其规则回答,确保在所有“敌对”条件下保持一致的结果。 comditions。

总之,Paxos的观点是我们的逻辑心智模型" first"作为程序员,我们假设有一套完美的时钟,机器和网络。这在现实世界中并不存在。如果你改变你需要的算法,试图看看事情是否破裂"攻击"上面提到的所有这些事情的消息流。您可能会找到一些方法来打破"打破"任何变化的事情。