ZAB协议

1、概述
   1. Zookeeper Atomic Broadcast - Zookeeper原子广播协议,是专门为Zookeeper设计的协议
   2. 这套协议在设计过程当中,基于2PC算法来设计,利用PAXOS算法进行了改进
   3. 做用:原子广播和崩溃恢复
2、原子广播
   1. 原子广播是为了保证全部节点数据的一致性
   2. 原子广播基于2PC算法进行改进
   3. 2PC - 2 Phase Commit - 二阶段提交 - 核心思想是“一票否决”:
      a. 分发阶段:协调者收到请求以后,将请求发送给每个参与者,而后让参与者将这个请求进行记录
      b. 提交阶段:若是每个参与者都记录成功,而且协调者收到了全部参与者的成功信号,那么协调者就会要求全部的参与者执行这个请求
      c. 停止阶段:若是有一个或者多个参与者返回no,或者若是协调者没有收到参与者的返回信号,也会认为这个参与者返回的是no,那么协调者救护认为这个请求不可执行,那么协调者就会要求全部的参与者删除这个请求的记录
   4. 原子广播过程:

   5. 若是某个follower记录失败,而又接收到leader要求执行的命令,这个时候follower就会向leader发送请求从新申请这个任务
3、崩溃恢复    1. 当集群中的leader由于某些缘由产生丢失,集群中会自动选举出一个新的leader,那么这个过程就称之为崩溃恢复    2. 崩溃恢复是为了不Zookeeper集群中出现单点故障    3. 每选举出一个leader,就会给leader一个编号,这个编号称之为epochid。每个leader都会将epochid发送给每个follower,follower接收到epochid以后存储在acceptedEpoch中    4. 每个follower接收到请求以后,都会先比较epochid    5. 在集群中,Zookeeper的事务id其实是由64位二进制数字组成,其中高32位表示的是epochid,低32位才是真正的事务id    6. 当一个节点从新连入集群以后,这个节点会拿着本身的事务id和当前集群中的事务id进行比较,在比较完成以后,leader就会将确实的操做放入一个队列中发送给这个节点。这个节点在更新过程当中不对外服务
相关文章
相关标签/搜索