接收到来自提议者的准备消息后,接受者会以承诺或拒绝回复。
如果提议者没有收到足够的承诺和超时,提议者应该放弃收到的承诺/拒绝,并开始一个更大的选票的新准备轮。
如果重启只是因为超时而不是拒绝,我们可以重复使用相同的选票吗?
答案 0 :(得分:3)
简短回答:不要这样做。
当发现Paxos Lamport假设消息可能被删除或重复时。因此,您可以在任何时候再次发送相同的消息,算法将处理它。因此从技术上讲,只要有效载荷完全相同,您就可以重复使用相同的选票号码。以下是你不应该做的一些袖手旁观的原因。
首先,该算法表示使用更高的选票数。如果要更改像这样的分布式算法,您必须确实知道您正在做什么。关于分布式系统的推理可能非常非常困难。即使你确实知道你在做什么,你也知道如何知道跟在你后面的维护者是否知道他们正在做什么。
其次,基本算法实际上没有关于拒绝/ nacks的任何内容;它们只是优化。 (请记住,他们可以随时被删除。)所以不接受准备应被视为拒绝。
第三,可能还有另一个提议者。如果您决定重新使用相同的选票号码,那么您实际上是在放弃并让对方获胜。但如果其他提议者使用相同的算法点缀,它也会放弃。你事先有效地选择了领导者。
第四,未收到法定数量的回复意味着您的系统出现问题:网络分区;大多数主机中有一半的响应速度不够快。这些都是值得思考的重要事项。如何发送完全相同的消息有助于解决问题?
最后,重新使用选票号并不能为你买任何东西,但它会让事情变得复杂。
答案 1 :(得分:0)
您之前的提案最有可能被接受,因为与其他副本提出的选票相比,这是一个较小的选票。因此,如果您在下一个提案中坚持使用旧的选票号码,那么您将很有可能再次被拒绝。