Zookeeper 数据更新:Zab协议
原创2021/2/18...小于 1 分钟
Zab协议
Zab协议全称是Zookeeper Atomic Broadcast Protocol(Zookeeper原子广播协议),用于Zookeeper状态变更时进行状态广播,以保证整个Zookeeper集群中各个服务器的状态一致。
提示
Zab协议是Paxos协议的一个变种,类似的算法还有Raft算法(在etcd中有应用)
Zookeeper数据更新步骤
- client向任意server发送写请求,该server将请求转发给leader
- leader将请求事务以proposal形式分发给follower
- follower根据先后顺序处理proposal,回复ack,表示这个proposal已被接受
- leader收到过半的ack,则发起事务提交,发起一个commit proposal
- follower收到commit proposal后,记录事务并提交
- 返回给client
Zab协议保证了
- 事务会被按顺序提交
- 不会跳过任何事务
- 集群中绝大多数follower能保持与leader状态接近,即便少数节点(包括leader)崩溃,也能恢复到最新状态