zookeeper的zab协议

zookeeper是一个分布式数据一致性的解决方案。我们先来了解一下他的协议原理。

zookeeper使用的协议是ZAB(Zookeeper Atomic Broadcast)一致性协议,在ZAB协议之前可以先了解以下几个协议

 

ZAB协议:

zab是一种支持崩溃恢复的原子广播协议。

zab协议下,主要分为两种角色:leader和follower。

zab协议下,所有的事物请求都会转发给全局唯一的leader,由leader统一处理,leader将请求包装成一个提议广播给集群中的follower,当有半数以上的follower正确返回后,leader会发送commit的广播要求follower进行提交。

ZAB协议分为三步:发现、同步、广播

发现(准leader确认自己的新epoch和最完整的事物集合):

1、follower会将自己的接受的最后一个提议(proposal)的epoch值e发送个准leader。

2、准leader在收到超过半数的epoch值后,选出最大的epoch值并加1作为自己最新的epoch e',然后将e'广播给所有follower。

3、follower在收到准leader发送的e'后,如果大于自己本身的epoch,则更新为自己的新epoch,并将自己处理过的事物(proposal)集合c和e'返回给准leader。

4、准leader在收到半数以上的反馈消息后,会选出epoch最大且拥有最大提议id的事物集合c'作为用来进行同步的基础集合。

同步(准leader同步事物给follower,同步完成后,准leader才能正式上任):

1、准leader将e'和c'广播给所有的follower

2、follower收到该广播后,如果自己的epoch=e',则会接受c'中的事物,并反馈给准leader。

3、准leader收到半数的反馈后,会发送commit消息。

4、follower收到commit消息后会依次将c'中的事物进行提交。

广播:

1、leader将事物请求生成新的提议,将提议按照提议(proposal)的id的顺序发送给follower。

2、follower收到消息后,会按照提议id的顺序进行处理,并记录到自己接受过的事物集合c中,然后反馈给leader。

3、leader在收到超过半数的反馈后,会发送commit消息。

4、follower在收到commit消息后,会按照提议顺序提交事务。

当leader崩溃后,剩余的follower会选出一个新的准leader,并重复上边三个步骤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值