分布式入门之5:paxos

paxos是去中心化协议,较难理解。

proposer, accepter是其中的主要角色。前者发起投票,后者批准投票。

核心思想是,一旦超过半数的accepter同意某个投票,整个流程结束,批准的那个结果则是最终结果。

learner是另一个角色,从各accepter获取到最终的值。实际中,这些角色可能是同一个节点。

不同的proposer去争抢一半以上的accepter,直观上会遇到的问题就是死锁。为了解决这个问题,paxos引入轮次的概念来避免死锁。

引入轮次后,需要确保的隐含条件就是:如果其中一轮已经选举出了一个结果,则后续所有轮次不能再推翻此结果,而必须接受此结果

paxos过程与两阶段提交类似,也分两个阶段。

第一阶段是proposer告诉acceptor,准备提交第n轮,需要保证不接受小于n轮的其他proposer的提案。

第二阶段,则是根据第一阶段acceptor的返回结果,通知acceptor提交某个值。

流程如下:

轮次n:

可见,轮次是个全局的概念,如何保证轮次在整个过程中不同节点轮次不重叠。

只需要定一个保证递增性与唯一性的规则。如: 时间戳 + 提出提案的次数 + 机器 IP/机器ID

活锁:

虽然paxos以轮次概念的引入解决了死锁,但因为存在着prepare、accept两阶段,有可能出现活锁问题:

如proposer A以prepare 1发起一轮paxos过程,所有acceptor返回null,A准备发送accept(1, Va);

此时proposer B以prepare 2发起又一轮paxos,所有acceptor依然返回null,B准备发送accept(2, Vb);

这时,proposer A以prepare 3继续发起新一轮prepare。。。,循环往复。

这就是活锁。

活锁可使用随机改变轮次n的增长幅度来解决。

时间: 2024-10-15 22:13:15

分布式入门之5:paxos的相关文章

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

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

erlang分布式入门(一)-ping pong

erlang分布式入门(一)-ping pong 测试环境和http://willvvv.iteye.com/blog/1523918 一样,192.168.0.182(centos-182)和192.168.0.183(centos-183), 1.按照上面链接(步骤1-4)设置通过ssh hostname 免输入密码直接登录. 2.设置erlang的magiccookie,由于都是以root账号操作,分别在两台机子上执行以下命令 cd /root vi .erlang.cookie 输入 S

五:分布式事务一致性协议paxos的应用场景

1.应用场景 (1)分布式中的一致性 Paxos算法主要是解决一致性问题,关于“一致性”,在不同的场景有不同的解释: NoSQL领域:一致性更强调“能读到新写入的”,就是读写一致性数据库领域:一致性强调“所有的数据状态一致”,经过一个事务后,如果事务成功,所有的表数据都按照事务中的SQL进行了操作,该修改的修改,该增加的增加,该删除的删除,不能该修改的修改了,该删除的没删掉:如果事务失败,所有的数据还是在初始状态:状态机:在状态机中的一致性更强调在每个初始状态一致的状态机上执行一串命令后状态都必

分布式数据库中的Paxos 算法

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

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

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

六:分布式事务一致性协议paxos的分析

最近研究paxos算法,看了许多相关的文章,概念还是很模糊,觉得还是没有掌握paxos算法的精髓,所以花了3天时间分析了libpaxos3的所有代码,此代码可以从https://bitbucket.org/sciascid/libpaxos 下载.对paxos算法有初步了解之后,再看此文的效果会更好:如果你也想分析libpaxos3的话,此文应该会对你有不小帮助:关于paxos的历史这里不多做介绍,关于描述paxos算法写的最好的一篇文章应该就是维基百科了,地址戳这里:http://zh.wik

四,分布式事务一致性协议paxos通俗理解

转载地址:http://www.lxway.com/4618606.htm 维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法. Paxos算法目前在Google的Chubby.MegaStore. Spanner等系统中得到了应用,Hadoop中的ZooKeeper也使用了Paxos算法,在上面的各个系统中,使用的算法与Lamport提出的 原

分布式入门之3:副本控制

按某特定流程控制副本数据的读写行为,使副本满足一定的可用性及一致性的分布式协议. 中心化副本控制协议: primary-secondary协议 只有一个副本作为主副本,其余都是从副本.主副本作为中心节点负责数据更新.控制协调一致性. 四大问题: 1. 写 > 写由主完成 > 外部写请求发给主 > 主进行并发控制,即确定并发请求的先后顺序 > 更新操作发给从节点 GFS采用接力方式传递数据,以控制出口带宽.如果是最终一致性的系统,主从是可以不一致的,只需要后续慢慢同步到一致状态. Q

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

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