zoukankan      html  css  js  c++  java
  • 分布式一致性的基石Paxos算法(1)

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

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

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

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

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

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

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

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

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

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

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

    朴素Paxos算法约束:

     

    活锁:


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

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

      这里面还有一个关键的地方,每次Prepare阶段,Proposor1都没有获得已经接受过Proposor2的提议的Acceptor的响应, Proposor2都没有获得已经接受过Proposor1的提议的Acceptor的响应;

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

  • 相关阅读:
    TCP/IP、Http、Socket的区别
    MQTT协议运用总结
    求递归算法时间复杂度:递归树
    大数乘法的几种算法分析及比较(2014腾讯南京笔试题)
    3.9重建二叉树(各种方案的分析比较及扩展问题的分析)
    3.10分层遍历二叉树-扩展问题
    青春何其美好,未来的日子里希望有你
    补充招银面经 19日面的,今天28日(昨晚发的offer)
    千里送人头---厦门美团一面挂
    滴滴一面挂
  • 原文地址:https://www.cnblogs.com/lijingshanxi/p/10125080.html
Copyright © 2011-2022 走看看