Paxos算法和ZAB协议

发布于 2021-08-04  1.55k 次阅读


一,Paxos算法

Paxos算法:解决分布式系统中基于消息传递高度容错的一致性算法 ,是目前公认的解决分布式一致性问题最有效的算法之一
 
Paxos算法解决的问题:快速正确的在一个分布式系统中对某一个数据达成一致,并且保证不论发生任何异常都不会破坏整个系统数据的一致性

一,Paxos产生的背景

      在分布式系统中,总会发生如机器宕机或网络异常导致消息的丢失,延迟,重复,乱序等情况,Paxos算法的出现就是为了解决如上问题,Paxos需要在一个可能发生上述情况的分布式系统中快速且正确的在集群内部对某一个数据达成一致,并且保证不论发生以上任何情况,都不会破坏系统的一致性

二,Paxos的描述和流程

在一个Paxos系统中所有节点都被划分成三种角色:
  • Proposer:提案者
  • Acceptor:接受者
  • Learner:学习者
每一个节点可以兼任多种角色
 
Paxos算法流程分为三个阶段:
1),Prepare准备阶段
  • Proposer向多个Acceptor发出Propose请求(无需携带提案内容)Promise(承诺)
  • Acceptot针对收到的Propose请求进行Promise(承诺)
注:promise就是Acceptor承诺让当前的Proposer当领导者
2),Accept接受阶段
  • Proposer收到多数Acceptor承诺的Promise后,向Acceptor发出Propose请求(需要携带提案内容)
  • Acceptor针对收到的Propose请求进行Accept处理
注:当前Proposer通过多数的Acceptor的Promise成为领导者时,提案或者任务可以得到Accept的授权成为绝议
3),Learn学习阶段
  • Proposer将形成的绝议发给所有的Learners