我正在尝试在 4 个节点的环形拓扑中实现领导者选举算法。我正在实现 LCR 算法。如果假设我的节点 3 出现故障,我应该如何继续选举领导者。
注释:- 注释编号为 1、2、3 和 4。它是一个单向环,每个节点都有最近节点的信息,即 1 -> 2 、 2 -> 3、 3 -> 4 和 4 -> 1
最佳答案
如果您确实只想有一个指向下一个节点的指针,那么您需要在节点 4 上检测节点 3 已关闭。之后节点 4 需要发送一条消息,表示节点 3 已关闭。随后节点 2 应对此采取行动,将其后继者修改为节点 4 而不是节点 3,环再次完成。
您可以通过发送小的 hello 消息来确定节点是存活还是死亡,当您错过其中的几个消息(2 或 3 个)时,您可以假设它已关闭。
在您的示例中,当节点 3 在选举期间出现故障时,这并不重要,因为它无论如何都不是最高的 ID。但是当我们看一个例子时,当节点 4 死亡时,您还需要停止选举并重新启动它。
关于java - 领导者选举 LCR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22543528/