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

ZooKeeper核心概念与架构

理解数据模型和集群架构是使用ZooKeeper的基础。

数据模型与节点结构

层级命名空间

Java
/                    <- 根节点
/app                 <- 应用节点
/app/config          <- 配置节点
/app/services        <- 服务节点

ZNode节点特性

特性说明
路径绝对路径,如/app/config
数据可存储少量数据(默认1MB)
子节点可包含子节点
ACL访问权限控制
时间戳创建和修改时间

路径命名规范

  • 必须以/开头
  • 节点名称不能包含/
  • 支持多级路径
  • 相对路径不支持

节点类型

类型说明
持久节点永久存在,除非主动删除
临时节点会话结束自动删除
顺序节点自动添加序号后缀

提示:节点数据不宜过大,建议存储配置或元数据。

版本号与状态信息

版本号类型

版本号说明作用
dataVersion数据版本数据每次修改递增
cversion子节点版本子节点变化递增
aversionACL版本ACL变化递增

乐观锁机制

Bash
// 更新时指定版本号,防止并发冲突
zk.setData("/config", newData, expectedVersion);
// 版本不匹配抛出BadVersionException

状态信息字段

字段说明
czxid创建事务ID
mzxid最后修改事务ID
ctime创建时间
mtime修改时间
ephemeralOwner临时节点所属会话

查看状态

text
# 命令行获取状态
get -s /app/config

# 输出包含版本号和状态信息
dataVersion = 5
cversion = 2
czxid = 0x100000001

注意:版本号机制实现乐观锁,更新需指定版本。

集群角色与架构

三种角色

角色职责特点
Leader处理写请求、发起投票集群核心
Follower处理读请求、参与投票主力成员
Observer处理读请求、不参与投票扩展读能力

集群架构

text
         Leader
        ↙   ↘
   Follower  Follower
       ↓         ↓
   Observer  Observer(可选)

Leader职责

  • 处理所有写请求
  • 发起提议并等待过半确认
  • 管理集群状态和选举

Follower职责

  • 处理读请求
  • 转发写请求给Leader
  • 参Leader选举投票
  • 同步Leader数据

Observer特点

  • 不参与选举投票
  • 不影响写请求性能
  • 可跨地域部署
  • 扩展读能力

提示:Observer适合跨地域部署,降低网络延迟影响。

要点总结

  • 层级命名空间类似文件系统,路径以/开头
  • 版本号实现乐观锁,更新需指定expectedVersion
  • Leader处理写请求和选举,Follower处理读请求和投票
  • Observer扩展读能力,不参与投票
  • 节点数据不宜超过1MB

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

← 上一篇 ZooKeeper分布式协调服务概述
下一篇 → ZooKeeper安装部署实战
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

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

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