乐闻世界logo
搜索文章和话题

Zookeeper 是什么?它有哪些核心特性和应用场景?

2月21日 16:24

答案

Zookeeper 是一个开源的分布式协调服务,由 Apache 基金会维护,主要用于解决分布式应用中的协调问题。

核心特性

  1. 一致性保证:Zookeeper 提供强一致性保证,确保所有客户端看到的数据视图是一致的
  2. 可靠性:通过 ZAB 协议保证数据的高可用性和持久性
  3. 简单性:提供类似文件系统的层次化命名空间,易于理解和使用
  4. 高性能:读操作性能优异,适合读多写少的场景

数据模型

Zookeeper 使用类似文件系统的树形结构存储数据:

  • ZNode:Zookeeper 中的数据节点,每个节点称为 ZNode
  • 路径:使用斜杠分隔的路径标识节点,如 /app/config
  • 数据:每个 ZNode 可以存储少量数据(通常不超过 1MB)
  • 版本:每个节点维护多个版本号(dataVersion、cversion、aversion)

ZNode 类型

  1. 持久节点:节点创建后一直存在,除非显式删除
  2. 临时节点:绑定客户端会话,会话结束后自动删除
  3. 持久顺序节点:持久节点基础上自动添加序号后缀
  4. 临时顺序节点:临时节点基础上自动添加序号后缀

应用场景

  • 配置中心:集中管理应用配置,支持动态更新
  • 服务注册与发现:实现微服务架构中的服务治理
  • 分布式锁:实现跨进程的互斥访问控制
  • 分布式协调:实现 Leader 选举、Barrier 等协调机制
  • 命名服务:提供分布式环境下的唯一标识生成

工作原理

Zookeeper 集群由多个 Server 组成,通常采用奇数个节点(3、5、7等):

  • Leader:处理写请求,协调数据一致性
  • Follower:处理读请求,参与 Leader 选举
  • Observer:只处理读请求,不参与选举(提升读性能)

客户端连接到任意 Server,通过 TCP 长连接进行通信,支持 Watcher 机制实现事件通知。

标签:Zookeeper