Paxos算法
算法中的参与者主要分为三个角色,同时每个参与者又可兼领多个角色:
proposer 提出提案,提案信息包括提案编号和提议的value;
acceptor 收到提案后可以接受(accept)提案;
learner 只能"学习"被批准的提案;
ZAB协议原理
ZAB主要包括消息广播和崩溃恢复两个过程,进一步可以分为三个阶段,
分别是发现(Discovery)、同步(Synchronization)、广播(Broadcast)阶段。
ZAB与Paxos的联系和区别
联系:
- 都存在一个类似于Leader进程的角色,由其负责协调多个Follower进程的运行。
- Leader进程都会等待超过半数的Follower做出正确的反馈后,才会将一个提议进行提交。
- 在ZAB协议中,每个Proposal中都包含了一个epoch值,用来代表当前的Leader周期,在Paxos算法中,同样存在这样的一个标识,名字为Ballot。
区别:
- Paxos算法中,新选举产生的主进程会进行两个阶段的工作,第一阶段称为读阶段,新的主进程和其他进程通信来收集主进程提出的提议,并将它们提交。第二阶段称为写阶段,当前主进程开始提出自己的提议。
- ZAB协议在Paxos基础上添加了同步阶段,此时,新的Leader会确保存在过半的Follower已经提交了之前的Leader周期中的所有事务Proposal。
- ZAB协议主要用于构建一个高可用的分布式数据主备系统,而Paxos算法则用于构建一个分布式的一致性状态机系统。