乐趣区

简述-ZAB-协议-以及-zookeeper

zookeeper

  1. 它为分布式应用提供了高效可靠的 分布式协调服务
  2. 实现依赖于 ZAB 协议,实现了主备模式架构用来保持集群中数据的一致性
  3. Zookeeper 将所有数据存放在 内存中
  4. 应用场景:更适合读操作为主
  5. 角色:leader follower observer
  • leader 是通过选举的一台机器(提供 读写 功能)
  • follower 和 observer 提供读功能,而 observer 不参与选举 和半写成功策略(因此可以提升集群读性能)
  • 集群节点为奇数个
  • 节点分为临时节点,持久节点,顺序节点。每个节点都又 star 结构
  • 重要功能:watch 功能
  • 客户端:zkclient curator

ZAB 协议

为 zookeeper 设计 支持崩溃恢复的消息广播协议。

  • ZAB 只允许有一个主进程接受客户事务请求并处理(leader),leader 收到请求后,将其转化为事务 proposal。
  • leader 会为每个 follower 创建一个队列,将事务放入响应队列,保证事务顺序。
  • 之后再队列中顺序向其他节点广播该提案,follower 收到后会将其以事务形式写入到本地日志,并向 leader 发送 Ack 反馈。
  • leader 等待并收到超过一半的 follower 响应时向其他节点发送 commit 消息,同时 leader 提交提案

ZAB 两种模式

  • 故障恢复模式
  • 消息广播

模式切换

当机器出现故障时,就进入 故障恢复模式。并开启新一轮选举,新的 leader 会和过半的 follower 进行同步数据。同步结束时,切换为消息广播模式。

例子:当一台 遵循 ZAB 协议的服务器启动后,若监测到有 leader 在广播消息后,自动切换为 恢复模式,同步数据,之后再切换为消息广播。

非 leader 节点 收到 客户请求,则该节点 会将该请求发送到 leader 服务器上。

退出移动版