Zookeeper 是一个开源的分布式协调服务,主要用于解决分布式系统中的数据一致性和协调问题。其核心设计目标是提供高性能、高可用且严格有序的分布式一致性服务。以下是其工作原理的核心要点:
1. 架构角色
Zookeeper 集群由多个节点(服务器)组成,角色分为以下三种:
- Leader:
- 负责处理所有写请求(如创建节点、更新数据等)。
- 通过 ZAB 协议(Zookeeper Atomic Broadcast)保证写操作的全局顺序性。
- 集群中只有一个 Leader,通过选举产生。
- Follower:
- 处理客户端的读请求(直接返回本地数据)。
- 参与 Leader 选举投票。
- 接收 Leader 的写操作提案(Proposal),进行事务日志的持久化和数据同步。
- Observer(可选):
- 仅处理读请求,不参与投票,用于横向扩展读性能。
- 同步 Leader 的数据,但不影响写操作的吞吐量。
2. 数据模型:ZNode
Zookeeper 的数据以树形结构(类似文件系统)存储,每个节点称为 ZNode:
- 持久节