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

Zookeeper 的架构设计是怎样的?Leader、Follower 和 Observer 角色有什么区别?

2月21日 16:24

答案

Zookeeper 采用主从架构设计,通过 ZAB 协议实现数据一致性和高可用性。

集群角色

  1. Leader

    • 处理所有写请求
    • 负责协调集群状态
    • 维护数据副本同步
    • 唯一能处理事务请求的节点
  2. Follower

    • 处理客户端读请求
    • 参与 Leader 选举投票
    • 接收 Leader 的数据同步
    • 转发写请求给 Leader
  3. 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 事件通知
标签:Zookeeper