全部学科
Python全栈
python
NodeJS全栈
nodejs
📅 2026-05-24 8 分钟 ✍️ juanwangdev

ZooKeeper集群数据同步与检测

理解数据同步流程和状态检测方法。

数据同步机制

同步流程

properties
1. Leader收到写请求
2. Leader发送提议给所有Follower
3. Follower接收提议并发送ACK
4. Leader收到过半ACK后提交
5. Leader通知Follower提交
6. 所有节点执行提交

角色差异

角色同步行为
Leader发起提议、收集ACK、通知提交
Follower接收提议、发送ACK、执行提交
Observer接收提议、执行提交(不投票)

Observer特点

特性说明
不参与投票不发送ACK
只同步数据接收并执行提交
扩展读能力可部署多个
跨地域部署不影响投票延迟

Observer配置

Bash
# zoo.cfg
peerType=observer
server.4=host4:2888:3888:observer

同步类型

类型说明
DIFF发送差异事务
TRUNC截断多余数据
SNAP发送完整快照

同步时机

Bash
Follower落后少量 → DIFF发送差异
Follower超前 → TRUNC截断
Follower落后大量 → SNAP发送快照

提示:Observer适合跨地域部署,扩展读能力不影响写性能。

集群状态检测

四字命令

命令作用
stat状态、角色、连接数
mntr详细监控指标
ruok健康检查
srvr服务器详情
cons连接详情

stat命令

Bash
echo stat | nc localhost 2181

# 输出
Mode: follower          <- 角色
Zxid: 0x100000005       <- 事务ID
Connections: 10         <- 连接数
Outstanding: 0          <- 待处理请求
Znode count: 100        <- 节点数

mntr命令

text
echo mntr | nc localhost 2181

# 输出关键指标
zk_server_state  follower
zk_avg_latency   5
zk_max_latency   100
zk_num_alive_connections  10
zk_znode_count   100

ruok健康检查

text
echo ruok | nc localhost 2181
# 正常返回: imok
# 异常无响应

关键检测项

项目命令关注点
Leader状态statMode字段
数据一致性srvr各节点ZXID
连接数mntrconnections
延迟mntrlatency

健康判断标准

  • 有且仅有一个Leader
  • 各节点ZXID相近
  • 连接数在正常范围
  • 延迟在合理范围

注意:生产环境应配置监控告警,持续检测集群状态。

要点总结

  • Leader发送提议,过半ACK后提交
  • Follower接收提议、投票、提交
  • Observer只同步数据,不参与投票
  • stat查看角色和状态信息
  • mntr获取详细监控指标
  • ruok快速健康检查
  • 检测关注Leader状态、ZXID、连接数、延迟
想在手机上练习这篇文章的配套题目?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一篇 ZooKeeper集群架构原理
下一篇 → ZooKeeper会话管理机制
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码