浅谈Zookeeper【二】ZAB协议原理

ZAB协议介绍

ZAB协议(Zookeeper Atomic Broadcast)时Zk中保证数据一致性的重要协议,是基于Paxos算法单独为Zk实现的协议。

ZAB协议是一种支持崩溃恢复和原子广播的协议,基于zab协议,zk实现了一种主备模式的系统架构,由单一的主进程来处理客户端的请求,并且为每个请求分配一个全局唯一单调递增的事务ID(zxid),然后由主进程将数据广播给副本进程上去。所以说zk是一个保证顺序一致性的服务。

所有事务请求必须由一个全局唯一的服务器来协调处理,这样的服务器称之为Leader服务器,而余下的服务器称之为Follower服务器。Leader服务器负责将一个客户端事务请求转化为一个事务Proposal(提议),并将该事务提议分发给Follower,之后Leader等待Follower的ACK反馈,一但超过半数的Follower正确反馈,那么Leader将向所有Follower发送一个commit消息,要求Follower把前一个事务提议进行提交。

Zab协议的过程如下图所示:
zk服务器由三节点构成,1主2从,客户端所有的事务请求由Leader进行处理,并且通过广播发送给Follower副本。
ZAB流程

ZAB协议基本特性

(1)高可用:由于采用主备模型,可以保证当Leader节点挂机或者网络分区后,集群依然工作对外提供服务。(当集群中超过半数节点存活,整个集群可用)

(2)数据一致性:一个事务请求只能由Leader节点处理,Leader节点将事务请求广播给副本节点。保证如果一个事务被提交成功,那么所有节点都应该被处理成功。

1、Zab协议确保在Leader服务器提交的事务最终被所有服务器提交
2、Zab协议需要确保丢弃那些只在 Leader 上被提出而没有被提交的事务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值