zookeeper是分布式协调服务,用于配置管理、命名服务、分布式锁、服务发现与集群高可用;其树形Znode结构支持临时和顺序节点,结合Watcher实现变更通知;广泛应用于hadoop、hbase、kafka及微服务架构中,提供强一致性和高可用的协调能力。

ZooKeeper 是一个开源的分布式协调服务,由 apache Hadoop 项目孵化而来,主要用于解决分布式系统中常见的协调问题。它提供了一套简单而高效的机制,帮助分布式应用在节点之间进行配置管理、命名服务、分布式同步、集群管理等操作。
核心功能与作用
统一的命名与配置管理: 在分布式系统中,多个节点可能需要共享某些配置信息,比如数据库连接地址、服务开关等。ZooKeeper 可以集中存储这些配置,任何节点都能实时获取并监听变更。
分布式锁与同步: 多个服务实例在争抢资源时,可以通过 ZooKeeper 实现排他性访问,比如选举主节点、控制任务执行权等。
服务注册与发现: 服务启动后可以将自己的地址注册到 ZooKeeper 上,其他服务通过查询 ZooKeeper 获取可用的服务列表,实现动态发现。
集群高可用与故障检测: ZooKeeper 本身是一个高可用的集群,客户端通过心跳机制与 ZooKeeper 保持连接,一旦某个节点宕机,ZooKeeper 能快速感知并通知其他节点做出响应。
数据模型与工作方式
ZooKeeper 的数据结构类似于文件系统的树形结构,称为 ZNode。每个 ZNode 可以存储少量数据(通常不超过 1MB),并支持临时节点、顺序节点等特性。
- 临时节点:客户端断开连接后自动删除,适合用于服务注册和状态标记
 - 顺序节点:自动附加递增编号,可用于实现分布式队列或唯一 ID 分配
 - Watcher 机制:客户端可以对某个节点设置监听,当节点数据或子节点发生变化时,ZooKeeper 会主动通知客户端
 
典型应用场景
Hadoop 和 HBase: 早期主要为 Hadoop 生态提供元数据管理和节点协调。
Kafka: Kafka 使用 ZooKeeper 来管理 broker 列表、消费者组、主题配置等元信息(新版本逐步减少依赖)。
微服务架构: 配合 dubbo 等 rpc 框架实现服务注册中心,服务提供者注册,消费者订阅。
基本特点
强一致性: ZooKeeper 保证所有节点看到的数据视图一致,写操作是原子性的。
高可用: 通常以奇数个节点组成集群(如 3、5、7),即使部分节点故障,仍能正常对外服务。
性能高: 读操作非常快,适合读多写少的场景;写操作需过半节点确认,延迟略高。
基本上就这些。ZooKeeper 不是用来存业务数据的,而是为分布式系统提供“大脑”级别的协调能力,让复杂系统更有序、可靠地运行。