zookeeper的ZAB协议


zab(Zookepper Actomic Broadcast) 是专为zk 设计的支持崩溃恢复的原子广播协议。是保证数据一致性的核心算法。
ZAB协议有两种模式:崩溃恢复和消息广播
当集群启动时,或者leader服务器出现网络中断,崩溃推出或者重启等异常时,zab协议会进入崩溃恢复模式,选举产生新leader,选举成功后,进入消息广播模式。

崩溃恢复

zxid

leader服务器在接收到事务请求后,会为每个事务请求生产对应的propsal来进行广播,在广播之前,leader 服务器会为每个事务生成一个唯一的全局id , 即事务id(zxid)。

zxid 是一个全局的有序的64位数字,可以分为两部分:

  1. 高 32 位是: epoch(纪元),epoch代表当前集群所属的哪个leader,leader的选举就类似一个朝代的更替。每次选举产生的新leader 都会取出其zxid,解析 epoch 值 再加1 ,作为新的epoch , 并将低32 位置零
  2. 低 32 位是 counter(计数器),是一个单调递增的计数器,针对客户端的每次事务都会加一

选举

  1. 所有节点第一票先选举自己当leader,将投票信息(自己的myid,zxid)广播出去。
  2. 各节点收到信息后将收到的(myid,zxid
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值