ZooKeeper 如何保证一致性?
Zookeeper 面试题发布于
一、ZAB 协议
ZooKeeper Atomic Broadcast,类似 Paxos。
二、角色
- Leader:处理写请求,发起投票。
- Follower:处理读请求,参与投票。
- Observer:只读,不参与投票,扩展读能力。
三、写流程
- 客户端写请求发给任意节点,非 Leader 转发给 Leader。
- Leader 生成事务提议(proposal),发给所有 Follower。
- Follower 收到后持久化,返回 ACK。
- Leader 收到半数以上 ACK,提交事务,通知所有节点 commit。
四、一致性
- 写请求:半数以上成功即提交,保证最终一致。
- 读请求:默认从本机读,可能读到旧数据;sync 读保证强一致。
- 顺序一致性:同一客户端请求按顺序执行。