Paxos领导人选举可能不会终止

时间:2017-02-15 14:56:08

标签: distributed-system paxos

我正在研究Paxos简单的论文,我正在努力解决这样一个事实,即如果2个提议者以更高的提案数相互竞争,Paxos不能保证进展,并且正如文中所建议的那样,保证进步,尊敬必须选择提议者,使他成为领导者。

但问题就出现了,因为人们建议使用Paxos来选出杰出的提议者,这也需要领导者来保证进步。

我理解所给出的场景可能是特定于实现的,例如,如果给予要选择的进程的区别集是有序的,我的意思是P1 set< P2套装。

但我想在实际实现中理解这是如何处理的?

1 个答案:

答案 0 :(得分:2)

通常的方法是简单地使用随机超时,其中可能存在较低的领导者决斗。如果你搜索"超时"在论文中,它提到了这一点。

如果稳定的领导者平均需要X秒才能出现并取得进展(我们可以使用最小的消息往返次数进行估算)那么我们可以让每个节点在一个多个区间内随机超时X.通过在每次尝试成为领导者时使用新的随机数,我们具有较长的领导者决斗概率。

如果我们将X的较大倍数设置为随机超时的上限,则我们的扩展领导者决斗的概率较低。然而,在领导者出现之前,我们也有更长的平均时间。所以这是一种权衡。

如果实现需要非常快速的故障转移,我们可能会使用低超时随机间隔,但尝试实现领导者决斗快速解决的机制。你可以发明任何任意机制。

确保一个节点有优势成为领导者的简单机制如下。每个节点都有一个唯一的编号用于订购它的选票。在领导者决斗期间,每个节点可以使用指数退避,该退避由其自己的唯一编号缩放。例如,如果每次失败尝试成为领导者时节点号为N,我们可以将其超时窗口的上限乘以1 + 1 / N.这意味着在任何决斗期间,具有最高N的节点在尝试成为领导者时将更积极,因为其他节点将更快地退避。