Zookeeper 数据更新:Zab协议

Louis2021-02-18中间件zookeeper

Zab协议

Zab协议全称是Zookeeper Atomic Broadcast Protocol(Zookeeper原子广播协议),用于Zookeeper状态变更时进行状态广播,以保证整个Zookeeper集群中各个服务器的状态一致。

TIP

Zab协议是Paxos协议的一个变种,类似的算法还有Raft算法(在etcd中有应用)

Zookeeper数据更新步骤

  1. client向任意server发送写请求,该server将请求转发给leader
  2. leader将请求事务以proposal形式分发给follower
  3. follower根据先后顺序处理proposal,回复ack,表示这个proposal已被接受
  4. leader收到过半的ack,则发起事务提交,发起一个commit proposal
  5. follower收到commit proposal后,记录事务并提交
  6. 返回给client

Zab协议保证了

  1. 事务会被按顺序提交
  2. 不会跳过任何事务
  3. 集群中绝大多数follower能保持与leader状态接近,即便少数节点(包括leader)崩溃,也能恢复到最新状态
Last Updated 2024/11/24 20:50:53