java - 领导者选举 LCR

标签 java protocol-buffers distributed-computing

我正在尝试在 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/

相关文章:

java - Spring生命周期启动方法不起作用

docker - Buildmaster 不监听端口

java - 为日志格式化 protobuf

java - Zookeeper cfg 文件 - 为什么有多个端口?

java - SEAM 有什么缺点吗?

java - Android 上的 Http Url 连接问题抛出 java.lang.IllegalStateException : Already connected

java:使用正则表达式解析重复的子字符串

java - 使用 Protocol Buffer 进行二进制日志记录

Hadoop 不适合跨多个站点进行分布式处理?

go - 如何响应多个 gRPC 客户端?