zk选举机制
sid:服务器id,用来唯一标识一台zookeeper集群中的机器,每台机器不能重复,和myid一致。
zxid:事务id,zxid是一个事务id,用来标识一次服务器状态的变更。在某一时刻,集群中的每台机器的zxid值不一定完全一致,这和zookeeper服务器对于客户端更新请求,的处理逻辑有关。
epoch:每个leader任期的代号,没有leader时同一轮投票过程中的逻辑时钟值是相同的,每投完一次票这个数据就会增加。
1.服务1启动,发起一次选举,服务器1自己投自己一票,此时服务器1票数一票,不够半数以上3票,选举无法完成,服务器1状态保持为looking。
2.服务器2启动,再发起一次选举,服务器1和2分别投自己一票并交换选举信息,此时服务器1发现服务器2的myid比自己目前投票推举的(服务器1)大,更改选票为推举服务器2,此时服务器1票数0票,服务器2票2票,没有半数以上结果,选举无法完成,服务器1,2状态保持looking。
3.服务器3启动,发起一次选举,此时服务器1和2都会更改选举票为服务器3,此时投票结果:
服务器1为0票,服务器2为0票,服务器3为3票,服务器3票数过半,当选leader,服务器1,2更改状态为following,服务器3为leading。
4.服务器4启动,发起一次选举,此时服务器123已经不是looking状态,不会更改选举信息,交换选票信息结果,服务器3为3票,服务器4为1票,此时服务器4服从多数,更改选举票为服务器3,并更改状态为following。
服务器5启动,同4一样当小弟。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。