答案
Zookeeper 采用主从架构设计,通过 ZAB 协议实现数据一致性和高可用性。
集群角色
-
Leader
- 处理所有写请求
- 负责协调集群状态
- 维护数据副本同步
- 唯一能处理事务请求的节点
-
Follower
- 处理客户端读请求
- 参与 Leader 选举投票
- 接收 Leader 的数据同步
- 转发写请求给 Leader
-
Observer
- 只处理读请求
- 不参与 Leader 选举
- 不参与数据写入投票
- 接收 Leader 的数据同步
架构优势
高可用性:
- 集群中任意节点故障不影响服务
- Leader 故障时自动选举新 Leader
- 支持故障快速恢复
可扩展性:
- 通过增加 Observer 节点提升读性能
- 水平扩展读能力
- 减轻 Leader 和 Follower 负载
数据一致性:
- ZAB 协议保证强一致性
- 所有 Follower 与 Leader 数据同步
- 读请求可能读取到过期数据
部署建议
节点数量:
- 生产环境建议 3、5、7 个节点
- 奇数个节点便于选举投票
- 最少 3 个节点保证高可用
角色分配:
- Leader + Follower:保证数据一致性
- 增加 Observer:提升读性能
- 典型配置:3 节点(1 Leader + 2 Follower)
网络要求:
- 节点间低延迟网络
- 稳定的网络连接
- 避免跨机房部署
客户端连接
- 客户端连接任意可用节点
- 自动重连机制
- Session 超时检测
- Watcher 事件通知