首页 > zk > zk的leader选举过程

zk的leader选举过程

作者:bin

zk的服务有3种类型:
leader:参与选举,参与投票、提供读写
follower:参与选举,参与投票、提供读,不提供写
observer:不参与选举,不参与投票,提供读,不提供写

选举leader要用到的两个概念:
1.ZXID,事务id,标识服务更新的状态
2.myid,服务id,用户自定义

选举leader在2种情况下发生,启动时:
1.先投票给自己,将(myid,ZXID)投票给自己。
2.接受其他服务的投票,然后做对比
选择 ZXID 更大的服务作为leader, ZXID相同时选择myid更大的作为leader。
3.将自己的投票结果,广播给其他的服务
4.每次做2步骤接收其他服务投票时,都会判断是否已经超过一半的服务选择了同一个服务,如果有,那就将这台机器选为leader
5.改变服务状态:leader变成leading,followr变成Following

运行时:
通常启动时选出的leader会一直运行下去,除非出现leader宕机,才会重新选举
1.所有服务除了observer,都变成looking,表示开始选举leader
2.一样的投票给自己,不过此时的ZXID各个服务可能不一样
3.重复启动时的过程选出leader

您必须 [ 登录 ] 才能发表留言!