带有时间戳的Leader选举过程



尝试用我的规格创建一个领导人选举协议,但我失败了。我来详细描述一下。

让我们假设我们有5个节点A,B,C,D,E,我们也假设它们都在竞争解决一个谜题,比如PoW,但在我们的场景中是不相关的。我们还假设C和D同时解决了这个谜题,并将证明发送给其他节点进行验证。

  1. (C2, D3)
  2. B (C4 D2)

  3. E (C3, D6)

节点A,B,E接收来自C,D的消息。例如,节点A在时间戳2接收到来自C的消息,在时间戳3接收到来自D的消息,它也验证了C,D成功解决了难题的证据。

我现在寻找的是从获胜者C,D中选出最快的节点,并承认他是协议的领导者。结果,他们都交换消息,并平均时间,以最短的时间找到赢家节点。如果随机选择节点B,它将计算C [4+2+3]/3=3, D[3+2+6]/3=3,6的时间。

因此,每个节点将计算时间3 C和时间3,6 D,最后,他们选择时间戳最低的C作为leader。

我是正确的,直到现在这个过程有逻辑吗?

我的大问题现在,如果B节点是恶意的,并试图欺骗协议,并发送不同的值给A,E,这会混淆所有节点,使他们无法达成共识。我们如何解决这个问题并通过这一步?

有谁能给我点建议吗?

程序员相信的关于时间的谎言。特别是关于信任系统时钟的部分。

第一个好的领导人选举算法是Paxos。自那以后,又出现了其他一些人。查看部分列表。

做好分布式编程是很难的。在过去的十年里,Jepsen分析了很多系统。在绝大多数情况下,作者认为他们可以有效地给出关于他们的系统将如何失败的保证是错误的。你不应该期望超过平均水平。因此,我强烈建议您将领导选举委托给成熟的软件,如Zookeeper,而不是尝试自己实现。

最新更新