这三个都是分布式一致性协议,ZAB基于Paxos修改后用于ZOOKEEPER协议,RAFT协议出现在ZAB协议之后,与ZAB差不多,也有很大区别。
1. Paxos
分布式节点分为3种角色, Proposer, Acceptor, Learner
Proposer:提出议案[Mn, Vn]
Accptor:决定最终议案
Learner:不参与议案的提出与决定,学习最后的议案
Proposer:
1. prepare阶段:提出议案编号M, 向Acceptor集合发送
2. 如果收到来自半数以上的Acceptor响应,向Acctoptor发送Accept请求
Acceptor:
1. Prepare:响应proposer prepare请求
2. Accepte: 响应Accept请求
2. ZAB协议
节点分为3种角色1, Follower, Leader, Observer
1. 选出leader
2. 客户端提出的事物都转给Leader处理
类似二阶段协议
1. Leader发送Propose给Fowller
2. 收到半数以上Ack,发送Commit给Follwer
3. Observer不参与Leader选举,同步数据,数据副本。客户端可以读取Observer数据,提高Zookeeper集群工作效率