ZooKeeper 如何保证一致性?

发布于

一、ZAB 协议

ZooKeeper Atomic Broadcast,类似 Paxos。

二、角色

  • Leader:处理写请求,发起投票。
  • Follower:处理读请求,参与投票。
  • Observer:只读,不参与投票,扩展读能力。

三、写流程

  1. 客户端写请求发给任意节点,非 Leader 转发给 Leader。
  2. Leader 生成事务提议(proposal),发给所有 Follower。
  3. Follower 收到后持久化,返回 ACK。
  4. Leader 收到半数以上 ACK,提交事务,通知所有节点 commit。

四、一致性

  • 写请求:半数以上成功即提交,保证最终一致。
  • 读请求:默认从本机读,可能读到旧数据;sync 读保证强一致。
  • 顺序一致性:同一客户端请求按顺序执行。