[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数据同步的时候,可以知道哪些数据时需要提交的,哪些数据是需要丢弃的



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_16097611/article/details/79948808
文章标签: zookeeper zab
个人分类: 分布式_zookeeper
上一篇[redis] rdb-dump.rdb
下一篇[redis] 内存淘汰策略
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭