Zookeeper 基础知识

Zookeeper是什么

Zookeeper 是一个高性能分布式应用协调服务

  • Naming Service
  • 配置管理
  • Leader Election
  • 服务发现
  • 同步
  • Group Service
  • Barrier
  • 分布式队列
  • 两阶段提交

Zookeeper 工作方式

  • Zookeeper 集群包含1个Leader,多个Follower。
  • 所有的Follower都可提供读服务。
  • 所有的写操作都会被forward到Leader
  • Client与Server通过NIO通信
  • 全局串行化所有的写操作
  • 保证同一客户端的指令被FIFO执行
  • 保证消息通知的FIFO

Zab协议 -广播模式

  • Leader将所有更新(称为proposal),顺序发给Follower
  • 当Leader收到半数以上的Follower对此proposal的ACK时,即向所有Follower发送commit消息,并在本地commit该消息
  • Follower收到Proposal后即将对该Proposal写入磁盘,写入成功即返回ACK给Leader
  • 每个Proposal 都有一个唯一的单调递增的proposal ID 即 zxid

Zab协议 -恢复模式

  • 进入恢复模式 : 当Leader宕机或者丢失大多数Follower后,即进入恢复模式
  • 结束恢复模式 : 当新领导被选举出来,且大多数Follower完成了与Leader的状态同步后,恢复模式即结束,从而进入广播模式
  • 恢复模式的意义
    • 发现集群中被commit的proposal的最大zxid
    • 建立新的epoch,从而保证之前的Leader不能再commit新的Proposal
    • 集群中大部分节点都commit过前一个Leader commit过的消息,而新的Leader是被大部分节点所支持的,所以被之前Leader commit 过的Proposal不会丢失,至少被一个节点所保存
    • 新Leader会与所有Follower通信,从而保证大部分节点都拥有最新的数据
恢复阶段的保证
  • 若一条消息在一台机器上被deliver,那么该消息必须将在每台机器上deliver,即使那台机器故障了
  • 一个被skip的消息,必须仍然需要被skip

你可能感兴趣的:(Zookeeper 基础知识)