[zookeeper] zab协议

一、描述

zab(ZooKeeper Atomic Broadcast原子消息广播协议),是zookeeper一致性协议,zab协议主要包括两种模式,消息广播和奔溃恢复


二、角色

zookeeper中主要的两种角色,leader和follower,这两种角色都有投票权


三、消息广播

1.follower收到prosoal等写事务的提议

2.follower会发送给leader

3.leader会为每个follower建立一个队列,以tcp方式保证消息的fifo特性,以保证消息的顺序

4.当收到超过半数的ack的follower的回复后,会想每个follower发送commit请求


这与2pc(两阶段提交)相似,当时区别在于1.zab不需要等待全部follower的ack才进行下一步commit操作。2.zab简化了逻辑,移除了中断逻辑

但是这样还是无法解决类似2pc提交时候,如leader接受到足够的ack后,发送commit后,只有一部分follower收到了,而另一部分没有收到commit,

这时候leader奔溃退出,这样会导致数据不一致情况,这样就需要奔溃恢复来解决这个问题


四、奔溃恢复

当zookeeper的leader奔溃后,zookeeper集群需要从奔溃中恢复,这样需要选举出新的leader,而新leader被选举出来,该leader的事务id时最大的,

以保证当前的leader包含最新的提交的数据,这样后续其follower与leader数据同步的时候,可以知道哪些数据时需要提交的,哪些数据是需要丢弃的



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值