Zookeeper 选举机制

选举机制

1.过程

(1)第一阶段:数据恢复阶段。每一个节点(服务器)会寻找当前节点中的最大事务id

(2)第二阶段:选举阶段。刚开始的时候,Zookeeper集群中的每一个节点都会推荐自己当leader,同时每一个节点会把自己节点的选举信息发送给其他的节点,经过比较之后,最后胜出的节点成为leader,其他的节点就成为follower

2.细节

1.选举信息:

  a.当前节点的最大事务id - 一般而言是mZxid或者pZxid

  b.当前节点的选举编号 - myid

  c.逻辑时钟值  - 保证选举在同一轮次上

2.比较原则:

  a.先去比较两个节点的最大事务id,谁大谁赢

  b.如果事务id一致,那么比较myid,谁大谁赢

3.当一个节点胜过一半的节点的时候,那么这个节点就会成为leader

4.当一个集群汇总已经选举出来一个leader,那么后续添加的节点的事务id以及myid无论多大,这个节点都只能成为follower

5.节点状态:

  a.looking/voting - 选举状态

  b.follower - 追随者

  c.leader - 领导者

  d.observer - 观察者 

6.在集群中,如果出现了多个leader,这种情况称之为 脑裂

7.在Zookeeper集群中,只有半数以上的节点存活的时候才会进行选举才会对外服务 - 存活的过半 —— 防止闹裂

8.Zookeeer的节点数一般是奇数个 防止脑裂

posted @ 2020-06-19 15:17  alen-fly  阅读(240)  评论(0编辑  收藏  举报