分布式一致性的基石---Paxos算法

Posted lijingshanxi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式一致性的基石---Paxos算法相关的知识,希望对你有一定的参考价值。

分布式一致性的基石---Paxos算法(1)

  Paxos算法是由微软的工程师Lamport提出,Lamport依靠Paxos算法获得图灵奖;

  Paxos算法旨在解决相互信任的分布式系统中,多个节点能快速达成一个一致的值;

  目前,google的Chubby,雅虎的Zookeeper,Oracle的mysql Replication Group,腾讯的PhxSql,PhxQueue等都由Paxos算法作为一致性的基础;

  在互联网公司的应用场景下,通常用Zookeeper作为分布式协作服务; 可能不需要研究Paxos的实现;

  在一些传统的企业,可以在服务中实现Paxos算法来满足不能部署Zookeeper的场景;

  由浅入深,这次只讨论朴素Paxos的实现;

  后面的章节会扩展讨论 Multi Paxos 算法和 Paxos 的数学推理证明,

  目前最好的 Paxos 的实现是腾讯的PhxPaxos;

  之前写过一篇腾讯PhxPaxos的编译流程:https://www.cnblogs.com/lijingshanxi/p/10089351.html

  看代码最快的方法是自己加点日志,来熟悉代码流程; 编译流程里面有介绍;

 

注:由于画图不小心,可能有些地方用了Propose请求,有些地方用了Accept请求,他们是一样的;
其他错误的地方也请您指出;

朴素Paxos算法约束:

技术分享图片

 

朴素Paxos算法流程:

技术分享图片

 

 

 

活锁:
  假设集群中有2个Proposor, 3个Accepter;
  可以看到每次在Prepare阶段,都能获得多数派的响应,但是每次在Accept阶段,都没有达成多数派的接受,如果这样的情况一致持续下去,就发生了活锁;
技术分享图片

技术分享图片

 

  可以看到,两个Proposor在Prepare阶段都获得了多数派的响应,但是在Accept阶段没有达成多数派的通过,交替这样,就形成了活锁;

  但是即使发生活锁,依然不会破坏朴树Paxos的一致性,因为要么多数派节点达成共识,要么多数派节点不能形成共识;





以上是关于分布式一致性的基石---Paxos算法的主要内容,如果未能解决你的问题,请参考以下文章

[华科]Paxos算法的一种简单理解

X-Paxos — 阿里巴巴的高性能分布式强一致Paxos独立基础库

云原生 etcd 系列-3 分布式基石|最难 paxos 和最易 raft ?

强一致高可用自动容灾能力背后,阿里X-Paxos的应用实践

强一致高可用自动容灾能力背后,阿里X-Paxos的应用实践

分布式一致性算法——paxos