Zookeeper Leader选举
让我们分析如何在 ZooKeeper 集成中选出领导节点。考虑一个集群中有
N 个节点。 Leader选举过程如下-
所有节点创建一个具有相同路径的连续、临时 znode,/app/leader_election/guid_。
ZooKeeper ensemble 会将 10 位序列号附加到路径中,创建的 znode 将是 /app/leader_election/guid_0000000001、/app/leader_election/guid_0000000002、 等
对于给定的实例,在 znode 中创建最小数字的节点成为领导者,所有其他节点都是追随者。
每个跟随者节点监视具有下一个最小编号的 znode。例如,创建 znode /app/leader_election/guid_0000000008 的节点将监视 znode /app/leader_election/guid_0000000007 和创建 znode /app 的节点/leader_election/guid_0000000007 将监视 znode /app/leader_election/guid_0000000006、
如果leader宕机了,那么它对应的znode /app/leader_electionN 就会被删除。
下一个跟随者节点将通过观察者获得关于领导者移除的通知。
下一个跟随者节点将检查是否还有其他编号最小的 znode。如果没有,那么它将承担领导者的角色。否则,它会找到创建具有最小编号的 znode 的节点作为领导者。
同理,所有其他跟随者节点都会选举创建具有最小编号的 znode 的节点作为领导者。
从头开始选举领导人是一个复杂的过程。但是 ZooKeeper 服务使它变得非常简单。让我们在下一章中继续安装 ZooKeeper 以进行开发。