让我们来分析一下一个领导节点在ZooKeeper集合的选举。考虑集群中有N多的节点。领导人选举的过程如下 −
-
所有节点创建一个顺序,znode具有相同路径,/app/leader_election/guid_。
-
ZooKeeper 的集合将追加的10位序列号的路径,创造了 znode 将会是 /app/leader_election/guid_0000000001, /app/leader_election/guid_0000000002, ...等。
-
对于给定的实例,它在znode创建最小数量的节点成为领导者以及所有其他节点的追随者。
-
每一个追随者节点监控下一个最小号的znode。
及其该节点创建znode /app/leader_election/guid_0000000007 将监控znode /app/leader_election/guid_0000000006.
-
如果领导停机,接着其对应的znode/app/leader_electionN被删除。
-
跟随节点接下来将通过观察者得到关领导去除的通知。
-
跟随节点接下来会检查是否有其他znodes用最小数量。 如果没有,接着它将承担领导者的角色。否则,它会找到哪些用最小数创造了znode作为领导者的节点。
-
同样,其他所有跟随节点选举创造了znode用最小数作为领导者的节点。
领导人选举时,它从头开始做一个复杂的过程。但ZooKeeper服务,使得它非常简单。让我们在接下来的章节介绍 ZooKeeper 安装和开发。