zookeeper选举制度

本文深入解析ZooKeeper中的核心概念,如zxid、peerepoch和选举流程。详细阐述了Leader选举投票过程,包括节点状态变化、写请求投票流程以及数据一致性实现方式。适合对分布式系统和ZooKeeper感兴趣的技术人员阅读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

普及几个基本概念

zxid:peerepoch+ 每一次事物提交的Id

peerepoch(lastpeerepoch):头票的轮数,每一次发起投票都会改变 每一次发起投票的条件,及状态改变的条件 :失去leader 或者新的节点启动 所有的following或者和leader全部切换成looking

投票:各个节点进行投票,一般首次投票都选自己

leader:要选举的leader id 及server id

广播状态:

恢复状态:

zookeeper中分布式节点的状态:

following:节点的状态之一,表示跟随,在选举或者进行写操作的时候,进行投票

leader:表示主节点,有投票选出,有写操作过来的时候,都要经过leader,然后各个following分别投票,leader汇总,是否进行修改,修改成功,就同步各个following

oberving:节点只观察 不投票

looking:竞选状态

Leader选举投票过程

优先比较Peerepoch 然后比较zxid 最后比较serverid   a把这个信息发给b的服务器 b收到后,比较,如果b胜出,就不变b的投票信息,如果b输了,就更新b的投票信息为a的(清除hashmap集合,存放投票信息),然后在发送给各个服务器(重新吧投票信息放到hashmap中)  。recvset.put(n.sid, new Vote(n.leader, n.zxid, n.electionEpoch, n.peerEpoch));

write写请求投票过程

 写操作经过leader节点,收到后发给各个following节点。然后following节点投票 发给leader  leader判断 投票数大于一半。则写入执行。

以上就是zookeeper实现同步各个节点的过程。

zookeeper通过选举机制,实现数据一致性,当服务器宕机或者增加服务器的时候,快速恢复数据,

转载于:https://www.cnblogs.com/tecnologycc/p/10186416.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值