首页/ 学科题库/ zookeeper/ ZooKeeper核心概念与架构
zookeeper 实战教程

ZooKeeper核心概念与架构

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
想在手机上练这篇的配套题目?
使用微信 卷王开发者小程序/App,首页顶部扫一扫识别下方二维码,即可解锁本讲对应真题与错题本。
了解产品 App
← 上一篇 ZooKeeper分布式协调服务概述 下一篇 → ZooKeeper安装部署实战