zookeeper-3.4.x 选举机制-第一次启动

说明

假设当前集群中有 5 台服务,还没有启动

服务器1 启动

发起一次选举,服务器1 投自己一票。此时 服务器1 票数一票,不够半数以上(3票),选举无法完成,服务器1 状态保持为 LOOKING

提示: 在 /program/zookeeper-3.4.14/conf/zoo.cfg 配置的所有zk服务器的信息

服务器2 启动

  1. 再发起一次选举,服务器1 和 服务器2 分别投自己一票

  2. 然后 交换选票信息:此时 服务器1 发现 服务器2 的 myid 更大,就投票给 服务器2。

  3. 此时 服务器1 票数 0票,服务器2 票数 2票,没有半数以上结果,选举无法完成,服务器1,服务器2 状态都是 LOOKING

服务器3 启动

  1. 发起一次选举,服务器1 、 服务器2、 服务器3 分别投自己一票

  2. 然后 交换选票信息:此时 服务器1 和 服务器2,发现 服务器3 的 myid 更大,就投票给 服务器3。

  3. 此次投票结果:服务器1 为 0票,服务器2 为 0票,服务器3 为 3票。

  4. 此时 服务器3 的票数已经超过半数,服务器3 当选 Leader ,状态为 LEADING。服务器1,服务器2 更改状态为 FOLLOWING

服务器4 启动

发起一次选举。此时 服务器1,服务器2,服务器3 已经不是 LOOKING 状态,不会更改选票信息。

交换选票信息结果:服务器3 为3票,服务器4 为 1票。此时 服务器4 服从多数,就投票给 服务器3,并更改状态为 FOLLOWING;

服务器5 启动

同4一样


原文出处:/show_1IX1zsy1RXDm.html