我想知道是否存在确定终止的非确定性领导者选举算法(在单向环中)。我想不出一个,也找不到一个不确定的。我发现的一些是:
选择具有最高进程ID的节点作为领导者(确定性)并终止。
随机决定节点是否想要成为领导者,如果在环中有另一个节点想要成为领导者,则重新启动整个过程。这个不会终止,但有可能终止。
有人可以给我一些关于如何创建分布式非deteministic leade选举算法的提示吗?也许可以用外行的方式来解释。
感谢您的一切!
答案 0 :(得分:1)
不存在具有保证终止和保证正确性(仅一个领导者)的概率(匿名)领导者选举算法。如果我没记错的话,你会在N. Lynch的分布式系统书中找到证据。
然而,对于算法的足够长的运行时间,存在对于非终止的概率极限为零的算法。此外,预期的运行时间相当短(AFIR,对于k个启动器,顺序为ln(k))。
这种算法的主要思想遵循第二种方法。但是,如果有几位领导者,不要简单地重新开始这个过程,但只允许上一轮的获胜者成为下一轮的候选人。
编辑1-3:
如果您要求非匿名领导者选举,有几种概率算法可以保证终止。例如,采用正常的环算法并以一定的概率延迟消息,ID越小,延迟的机会越大。通过这种方式,获胜机会较低的消息会被更早删除,从而减少整体消息。
如果您希望非匿名成员获得不同的结果,您可以例如使用两阶段算法:
也可以分发偶然因素:
对于两种算法都给予终止和非确定性结果。但是,第一个具有较低的平均消息复杂度( n log n 与n²;最坏的情况复杂性是相同的)并且更公平(即,ID获胜的概率是等分布的,对于第二种算法则不然)。我很确定,至少可以通过更复杂的算法消除最后的缺点,但这里的问题是这种算法的普遍存在。
答案 1 :(得分:0)
从我对这个问题的理解,你实际上并不是在寻找一种选举算法,只是一种分布式算法,可以公平地随机选择一个客户作为“领导者”,其中没有任何客户端可以共同作弊。 / p>
这实际上非常简单。将每个客户端视为卡片中的卡片,然后使用mental poker算法(这是一种分布式算法来公平地,随机地随机播放一副牌)来对其进行随机播放。然后把第一张牌作为领导者。