ZooKeeper 架构包含:Leader 节点(负责维护状态和处理写请求),Follower 节点(同步状态和处理读请求),Observer 节点(不参与选举,用于提高吞吐量和可靠性),ZNode(存储数据的单元),Watch 机制(事件通知机制)。部署为奇数个服务器的集群,使用 TCP 进行通信,并提供容错机制,包括 Leader 选举、数据复制和会话超时。

ZooKeeper 架构
ZooKeeper 是一个分布式协调服务,用于解决分布式系统中常见的协调问题。其架构的核心组件如下:
1. Leader 节点
- 负责维护系统状态和处理客户端请求。
- 通过 Apache Curator 等库进行选举产生。
- 只有 Leader 节点可以处理写请求。
2. Follower 节点
- 从 Leader 节点同步系统状态。
- 辅助 Leader 节点处理读请求。
- 在 Leader 节点故障时,参与 Leader 选举。
3. Observer 节点
- 与 Follower 节点类似,但不参与 Leader 选举。
- 主要用于提升系统吞吐量和可靠性。
4. ZNode
- ZooKeeper 中存储数据的基本单元。
- 类似于文件系统中的目录和文件。
- 可以包含数据、版本号和 ACL(访问控制列表)。
5. Watch 机制
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- ZooKeeper 提供了事件通知机制,当指定 ZNode 的状态发生变化时,客户端可以收到通知。
- 允许应用程序对状态变化做出反应。
部署拓扑
ZooKeeper 通常部署为一个包含奇数个服务器(通常为 3 或 5 个)的集群。集群中的每个服务器都维护着该系统的完整状态副本。奇数个服务器可确保在选举过程中能够容忍故障。
通信协议
ZooKeeper 使用 TCP 进行通信。客户端通过建立与 Leader 节点的 TCP 连接来发送请求。Leader 还会与 Follower 节点建立连接以同步状态。
容错机制
ZooKeeper 提供了容错机制,包括:
- Leader 选举:在 Leader 节点故障时,Follower 节点会自动选举一个新的 Leader。
- 数据复制:所有服务器都维护着系统的完整状态副本,确保数据不会丢失。
- 会话超时:客户端会话在一段时间不活动后会超时,从而防止遗留的会话导致系统问题。










