Zookeeper - Leader Election

让我们分析如何在ZooKeeper集合中选出领导节点.考虑集群中有 N 个节点数.领导者选举的过程如下:

  • 所有节点都创建一个具有相同路径的顺序短暂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.

  • 如果领导人失败,然后它的相应znode /app/leader_electionN 被删除.

  • 下一个在线追随者节点将通过观察者获得关于领导者删除.

  • 下一个在线跟随者节点将检查是否有其他具有最小编号的znode.如果没有,那么它将承担领导者的角色.否则,它会找到创建具有最小编号的znode的节点作为领导者.

  • 同样,所有其他关注节点选择创建znode的节点最小的数字作为领导者.

从头开始,领导者选举是一个复杂的过程.但ZooKeeper服务使它变得非常简单.让我们在下一章中继续安装ZooKeeper以进行开发.