ZAB: zookeeper Automic Broadcast
ZAB, Paxos两者的联系:
两者都存在类似leader的角色,由其负责协调多个follower的工作
leader进程都会等待超过半数的follower做出正确的反馈后,才会将一个提案进行提交
在ZAB协议中,每个proposal都包含一个epoch值,用来代表当前leader周期, Paxos算法中,同样存在这样的标识,只是名字为Ballot
Paxos算法一个leader选举过程中,会进行2个阶段的操作,
第一阶段为读阶段,新的主进程会通过所有其他进程进行通信的方式来收集上一个主进程提出的提案,并将提案提交
第二阶段为写阶段,主进程提出自己的提案.
ZAB协议分为3个阶段
第一阶段, 类似paxos读阶段, zab中为发现阶段,
第二阶段,同步阶段,新的leader会确保在过半follower已经提交了之前leader周期中所有事务proposal,同步阶段可以保证leader在新的周期提出事务proposal之前, 所有进程均已经完成了对之前事务proposal的提交.
第三阶段,同步阶段完成之后, 类似paxos的写阶段执行.
总结:
ZAB协议和paxos协议本质区别在于, ZAB协议主要用于构建一个高可用的分布式数据主备系统.
Paxos算法用于构建一个分布式的一致性状态机系统