ZAB协议
Posted hi-zhixian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZAB协议相关的知识,希望对你有一定的参考价值。
一、概述
1. Zookeeper Atomic Broadcast - Zookeeper原子广播协议,是专门为Zookeeper设计的协议
2. 这套协议在设计过程中,基于2PC算法来设计,利用PAXOS算法进行了改进
3. 作用:原子广播和崩溃恢复
1. Zookeeper Atomic Broadcast - Zookeeper原子广播协议,是专门为Zookeeper设计的协议
2. 这套协议在设计过程中,基于2PC算法来设计,利用PAXOS算法进行了改进
3. 作用:原子广播和崩溃恢复
二、原子广播
1. 原子广播是为了保证所有节点数据的一致性
2. 原子广播基于2PC算法进行改进
3. 2PC - 2 Phase Commit - 二阶段提交 - 核心思想是“一票否决”:
a. 分发阶段:协调者收到请求之后,将请求发送给每一个参与者,然后让参与者将这个请求进行记录
b. 提交阶段:如果每一个参与者都记录成功,并且协调者收到了所有参与者的成功信号,那么协调者就会要求所有的参与者执行这个请求
c. 中止阶段:如果有一个或者多个参与者返回no,或者如果协调者没有收到参与者的返回信号,也会认为这个参与者返回的是no,那么协调者救护认为这个请求不可执行,那么协调者就会要求所有的参与者删除这个请求的记录
4. 原子广播过程:
5. 如果某个follower记录失败,而又接收到leader要求执行的命令,这个时候follower就会向leader发送请求重新申请这个任务
1. 原子广播是为了保证所有节点数据的一致性
2. 原子广播基于2PC算法进行改进
3. 2PC - 2 Phase Commit - 二阶段提交 - 核心思想是“一票否决”:
a. 分发阶段:协调者收到请求之后,将请求发送给每一个参与者,然后让参与者将这个请求进行记录
b. 提交阶段:如果每一个参与者都记录成功,并且协调者收到了所有参与者的成功信号,那么协调者就会要求所有的参与者执行这个请求
c. 中止阶段:如果有一个或者多个参与者返回no,或者如果协调者没有收到参与者的返回信号,也会认为这个参与者返回的是no,那么协调者救护认为这个请求不可执行,那么协调者就会要求所有的参与者删除这个请求的记录
4. 原子广播过程:
5. 如果某个follower记录失败,而又接收到leader要求执行的命令,这个时候follower就会向leader发送请求重新申请这个任务
三、崩溃恢复
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就会将确实的操作放入一个队列中发送给这个节点。这个节点在更新过程中不对外服务
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就会将确实的操作放入一个队列中发送给这个节点。这个节点在更新过程中不对外服务
以上是关于ZAB协议的主要内容,如果未能解决你的问题,请参考以下文章