Zookeeper 简明教程

Zookeeper - Leader Election

让我们分析一下如何在 ZooKeeper 协同程序中选举一个领导者节点。考虑集群中存在 N 节点。领导者选举过程如下 −

  1. 所有节点创建一个具有相同路径的顺序的临时 znode, /app/leader_election/guid_

  2. ZooKeeper 组件会将 10 位序列号附加到路径上,创建的 znode 会是 /app/leader_election/guid_0000000001, /app/leader_election/guid_0000000002, 等。

  3. 对于给定实例,在 znode 中创建最小数字的节点将成为领导,其他所有节点将是跟随者。

  4. 每个跟随者节点都监视拥有下一个最小数字的 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.

  5. 如果领导宕机,那么其对应的 znode /app/leader_electionN 将会被删除。

  6. 下一个跟随者节点将收到有关领导删除事件的观察器通知。

  7. 下一个跟随者节点将检查是否存在拥有最小数字的其他 znode。如果没有,那么它将承担领导角色。否则,它会寻找创建具有最小数字的 znode 的节点作为领导。

  8. 同样,所有其他跟随者节点都将创建具有最小数字的 znode 的节点选为领导。

当从头开始时,领导选举是复杂的过程。但 ZooKeeper 服务使其非常简单。让我们在下一章转到用于开发目的的 ZooKeeper 安装。