Paxos算法

186 阅读1分钟

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算法则用于构建一个分布式的一致性状态机系统。