在收到来自提议者的准备消息后,接受者会以承诺或拒绝进行响应。
如果提议者没有收到足够的承诺和超时,提议者应该丢弃收到的承诺/拒绝,并以更大的选票开始新的准备轮次。
如果重启只是因为超时而不是收到拒绝,我们可以重复使用相同的选票号码吗?
在收到来自提议者的准备消息后,接受者会以承诺或拒绝进行响应。
如果提议者没有收到足够的承诺和超时,提议者应该丢弃收到的承诺/拒绝,并以更大的选票开始新的准备轮次。
如果重启只是因为超时而不是收到拒绝,我们可以重复使用相同的选票号码吗?
简短的回答:不要这样做。
在发现 Paxos Lampor 时,假设消息可以被丢弃或复制。所以在任何时候你都可以再次发送相同的消息,算法会处理它。因此,从技术上讲,只要有效负载完全相同,您就可以重复使用相同的选票号码。以下是一些你不应该这样做的即兴理由。
首先,该算法要求使用更高的选票号码。如果要更改这样的分布式算法,您必须真正知道自己在做什么。关于分布式系统的推理可能非常非常困难。即使你确实知道自己在做什么,你也有办法知道追随你的维护者是否知道他们在做什么。
其次,基本算法实际上没有任何关于拒绝/nack 的内容;它们只是优化。(请记住,它们可能随时被丢弃。)因此,没有收到准备应被视为拒绝。
第三,可能还有另一个提议者。如果您决定重新使用相同的选票号码,您实际上是在放弃并让另一个人获胜。但是如果其他提议者使用相同的算法点缀,它也正在放弃。您实际上是在事先选择领导者。
第四,没有收到法定人数的响应意味着您的系统有问题:网络分区;一半的主机响应不够快。这些都是需要考虑的重要事项。发送完全相同的消息将如何解决问题?
最后,重复使用选票号码不会给你带来任何好处,但它确实会使事情复杂化。
您之前的提议很可能没有被接受,因为与其他副本提出的提议相比,它的投票数较小。因此,如果您在下一个提案中坚持旧的选票号码,您将很有可能再次被拒绝。