分布式一致性的基石---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的一致性,因为要么多数派节点达成共识,要么多数派节点不能形成共识;

原文地址:https://www.cnblogs.com/lijingshanxi/p/10125080.html

时间: 2024-10-07 20:35:16

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

分布式一致性协议之Paxos算法

最近特别喜欢一句话:实践是最好的成长,发表是最好的记忆. 笔者在今年国庆7天没有回家,累计有6天的时间是在公司度过,要么写博客,要么看书.我记得当时写的关于分布式系统一致性的原理和实践.作者是倪超.书名<从Paxos到Zookeeper分布式一致性原理与实践>.当时就想要通过发表Paxos来跟自己做心灵的对话.可是,实在扛不下去.于是放弃. 今天又是周五,于是重新翻开已经尘封了2个礼拜的博客.再一次启程. 于是想用开头提到的两句话来勉励自己:实践是最好的成长,发表是最好的记忆.哪怕是工作再忙,

搞懂分布式技术2:分布式一致性协议与Paxos,Raft算法

搞懂分布式技术2:分布式一致性协议与Paxos,Raft算法 2PC 由于BASE理论需要在一致性和可用性方面做出权衡,因此涌现了很多关于一致性的算法和协议.其中比较著名的有二阶提交协议(2 Phase Commitment Protocol),三阶提交协议(3 Phase Commitment Protocol)和Paxos算法. 本文要介绍的2PC协议,分为两个阶段提交一个事务.并通过协调者和各个参与者的配合,实现分布式一致性. 两个阶段事务提交协议,由协调者和参与者共同完成. 角色 XA概

分布式理论之一:Paxos算法的通俗理解

维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法. Paxos算法目前在Google的Chubby.MegaStore.Spanner等系统中得到了应用,Hadoop中的ZooKeeper也使用了Paxos算法,在上面的各个系统中,使用的算法与Lamport提出的原始Paxos并不完全一样,这个以后再慢慢分析.本博文的目的是,如何让一个小白在半

分布式数据库中的Paxos 算法

分布式数据库中的Paxos 算法 http://baike.baidu.com/link?url=ChmfvtXRZQl7X1VmRU6ypsmZ4b4MbQX1pelw_VenRLnFpq7rMvYfDDmg3Rg1Aw6YyobKozdN599x2sCiJNNHV_ Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递的一致性算法.这个算法被认为是类似算法中最有效的. 中文名 Paxo

分布式理论:深入浅出Paxos算法

前言 Paxos算法是用来解决分布式系统中,如何就某个值达成一致的算法.它晦涩难懂的程度完全可以跟它的重要程度相匹敌.目前关于paxos算法的介绍已经非常多,但却很少有人能对P2c提出自己的见解,大多数是和稀泥式的人云亦云,但我觉着应该旗帜鲜明的亮出自己的观点,大家一起讨论,才能学到东西.希望我能将自己的观点表述清楚. 我个人认为理解Paxos有两个关键: 为什么要对提案进行顺序编号(或者说更大的编号意味着什么). 为什么Promise能保证一致性(答案隐含在第1点中) 一致性问题 假设有一组服

Paxos算法小结

转自不正直的绅士,因百度空间迁移,无法注明出处,我从其google搜索引擎中的cache进行的copy. 不正直的绅士 是跟我一起工作过的非常有才的一个青年才俊. Paxos的使用非常广泛.sanlock也使用了paxos. 共研究Paxos算法的程序猿参考. Paxos算法小结 1 Paxos算法的背景1.1 State Machine Approach与一致性算法1.2 CAP理论与一致性算法2 Paxos算法2.1 Paxos算法的角色2.2 Paxos算法的描述2.3 Paxos算法的简

分布式一致性算法--Paxos

Paxos算法是莱斯利·兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的一致性算法.Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致.在工程实践意义上来说,就是可以通过Paxos实现多副本一致性,分布式锁,名字管理,序列号分配等.比如,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点执行相同的操作序列,那么他们最后能得到一个一致的状态.为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致.本

分布式 一致性Paxos算法(转载)

文章1比较通俗易懂,可以入门,转载地址是http://www.cnblogs.com/linbingdong/p/6253479.html Paxos算法在分布式领域具有非常重要的地位.但是Paxos算法有两个比较明显的缺点:1.难以理解 2.工程实现更难. 网上有很多讲解Paxos算法的文章,但是质量参差不齐.看了很多关于Paxos的资料后发现,学习Paxos最好的资料是论文<Paxos Made Simple>,其次是中.英文版维基百科对Paxos的介绍.本文试图带大家一步步揭开Paxos

分布式一致性算法——paxos

一.什么是paxos算法 Paxos 算法是分布式一致性算法用来解决一个分布式系统如何就某个值(决议)达成一致的问题. 人们在理解paxos算法是会遇到一些困境,那么接下来,我们带着以下几个问题来学习paxos算法: 1.paxos到底在解决什么问题? 2.paxos到底如何在分布式存储系统中应用? 3.paxos的核心思想是什么? 二.paxos解决了什么问题 分布式的一致性问题其实主要是指分布式系统中的数据一致性问题.所以,为了保证分布式系统的一致性,就要保证分布式系统中的数据是一致的. 在