全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-24 10 分钟 ✍️ juanwangdev

ZooKeeper一致性与写请求链路

理解一致性保证和写请求完整处理流程。

顺序一致性保证

一致性层次

层次说明
FIFO顺序单客户端请求按序执行
全局顺序所有写请求全局有序
  • 最终一致 | 所有节点最终数据相同 |

FIFO顺序保证

text
客户端A发送请求: R1, R2, R3
执行顺序: 必须按R1→R2→R3顺序

全局顺序保证

text
所有客户端的写请求
Leader按ZXID顺序处理
所有节点按ZXID顺序看到

一致性约束

约束说明
单客户端顺序同客户端请求不能乱序
跨客户端顺序不同客户端请求全局有序
可见性顺序所有节点看到相同顺序

一致性示例

text
客户端A: create /node "data1"
客户端B: set /node "data2"

所有节点必须先看到create,再看到set
顺序一致,不能颠倒

弱一致性说明

text
读请求可能在Follower执行
Follower数据可能有短暂延迟
但最终所有节点数据一致

注意:读请求可能读到旧数据,强一致读需访问Leader。

写请求处理链路

完整链路

text
客户端 → Follower → Leader → 所有Follower → 过半ACK → 提交 → 响应

详细流程

text
1. 客户端发送写请求
2. Follower转发请求给Leader
3. Leader生成Proposal提议
4. Leader发送Proposal给所有Follower
5. Follower写入日志,发送ACK
6. Leader统计ACK
7. 过半ACK后Leader发送Commit
8. 所有节点执行提交
9. Leader响应客户端成功

时间节点

阶段时间
请求转发网络延迟
提议生成<1ms
ACK收集网络延迟
提交执行<1ms

写请求限制

限制说明
Leader处理所有写请求必须Leader处理
过半确认必须过半节点确认
顺序执行按ZXID顺序执行

写性能因素

因素影响
节点数量更多节点=更多ACK等待
网络延迟高延迟=ACK收集慢
批量处理批量提议优化吞吐

写请求失败处理

失败原因处理
Leader宕机等待选举恢复
节点不足无法过半确认
版本冲突返回BadVersion

提示:写性能取决于网络延迟和节点数量,不适合高写场景。

要点总结

  • FIFO保证单客户端请求按序执行
  • 全局顺序保证所有写请求有序
  • 读请求可能读到旧数据,强一致读需访问Leader
  • 写请求链路:转发→提议→ACK→提交→响应
  • 所有写请求必须Leader处理
  • 过半节点确认才能提交
  • 写性能受网络延迟和节点数影响

📝 发现内容有误?点击此处直接编辑

← 上一篇 ZooKeeper ZAB协议概述
下一篇 → ZooKeeper崩溃恢复机制
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库