Zookeeper的集群Leader选举机制和数据同步原理

本文详细介绍了Zookeeper集群中Leader选举的过程,包括服务初始化时的选举机制和运行期间的重新选举。选举主要依据ZXID和myid进行,ZXID较大的服务器优先作为Leader。此外,还阐述了集群的数据读写机制,所有的更新请求由Leader实施,确保全局数据一致。
摘要由CSDN通过智能技术生成

这里不介绍Zookeeper集群的搭建过程;首先介绍相关概念:

1、集群节点状态

  • LOOKING:寻找Leader状态,处于该状态需要进入选举流程
  • LEADING:领导者状态,处于该状态的节点说明是角色已经是Leader
  • FOLLOWING:跟随者状态,表示Leader已经选举出来,当前节点角色是follower
  • OBSERVER:观察者状态,表明当前节点角色是observer

2、ZXID:事务ID

ZXID是一个长度64位的数字,其中低32位是按照数字递增,任何节点数据的变更都会导致,低32位的数字简单加1。高32位是leader周期编号,每当选举出一个新的leader时,新的leader就从本地事物日志中取出ZXID,然后解析出高32位的周期编号,进行加1,再将低32位的全部设置为0。这样就保证了每次新选举的leader后,保证了ZXID的唯一性而且是保证递增的。

3、服务初始化Leader选举机制

假设搭建的zk集群有三台服务器,myid分别是1,2,3;同时因为这个时候还没有选举成功,所以每台服务器的ZXID都是0

(1) 每个Server发出一个投票。由于是初始情况,ZK1和ZK2都会将自己作为Leader服务器来进行投票,每次投票会包含所推举的服务器的myid和ZXID,使用(myid, ZXID)来表示,此时ZK1的投票为(1, 0),ZK2的投票为(2, 0),然后各自将这个投票发给集群中其他机器。
(2) 接受来自各个服务器的投票。集群的每个服务器收到投票后,首先判断该投票的有效性,如检查是否是本轮

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值