Zookeeper - 主节点选举



让我们分析如何在 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_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 的开发目的安装。

广告