Paxos算法介绍

Paxos算法是为了实现分布式环境中为保证数据的一致性而设计的,在一个分布式系统中,通过投票的方式来确定一个值(决议)。只不过这个步骤分为两步:

准备阶段(prepare)和批准阶段(accept)。

同时又分为若干角色,以下都可以兼任。

proposer 信使

acceptor 决策者

learner 学习者(学习最终决策)

准备阶段:

一个proposer向多个acceptor发出提案,每个提案有一个数字编号(递增的),

如果多数acceptor接受了该提案,则进入批准阶段. 当然也可以拒绝。

批准阶段:

proposer得到了多数acceptor的接收反馈后,就向这些acceptors发起批准请求, 包括提案编号和value。

这些acceptor决定是否接受这个请求。

一旦批准,learner会通过某种方式获得最终决策的value.

两阶段的是可以被中断的,不会造成不一致。

如果要深究算法,请参考http://zh.wikipedia.org/zh-cn/Paxos%E7%AE%97%E6%B3%95

时间: 2024-11-10 01:32:31

Paxos算法介绍的相关文章

Paxos算法简单介绍

一种基于消息传递且具有高度容错特性的一致性算法.解决在存在宕机或者网络异常的集群中对某个数据的值达成一致性,并且保证无论在发生以上任何异常都不会破坏整个系统的一致性,具有容错性. Paxos算法实现的是分布式系统多个结点之上数据的一致性,这个算法有如下特性 1.基于消息传递,允许消息传输的丢失,重复,乱序,但是不允许消息被攥改 2.在结点数少于半数失效的情况下仍然能正常的工作,结点失效可以在任何时候发生而不影响算法正常执行. 1.paxos算法综述 在paxos算法中,分为三种角色:propos

【转】Paxos算法细节详解

最近研究zookeeper因此就学习了一下paxos算法,一直没太看懂,今天找到了这篇文章描述的很清晰,转自:http://www.cnblogs.com/endsock/p/3480093.html Paxos分析 最近研究paxos算法,看了许多相关的文章,概念还是很模糊,觉得还是没有掌握paxos算法的精髓,所以花了3天时间分析了libpaxos3的所有代码,此代码可以从https://bitbucket.org/sciascid/libpaxos 下载.对paxos算法有初步了解之后,再

Paxos算法

转载请注明出处http://www.cnblogs.com/dvd0423/p/4185697.html 浮躁的人请绕道,这篇文章不适合你. 把Paxos作为分布式系统系列的第一篇,是因为我迫不及待的想告诉别人这个算法是多么牛逼.相比于Map/Reduce架构.一致性Hash.两阶段提交等等,我觉得Paxos是一个让人第一次看到会感觉废话连篇,再仔细品味会拍手称赞的算法.Paxos算法最初由lamport提出,他第一次提出时模拟的是一个叫Paxos的希腊城邦立法的问题.由于这个算法太抽象了,所以

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

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

底层算法系列:Paxos算法

关于算法,面太广.本系列只研究实际应用中遇到的核心算法.了解这些算法和应用,对java码农进阶是很有必要的. 对于Paxos学习论证过程中,证实一句话:有史以来学习paxos最好的地方wiki:Paxos (computer science) 目录 1.背景 2.Paxos算法 3.Muti-Paxos算法 4.Muti-Paxos在google chubby中的应用 ===============正文分割线============================ 一.背景 Paxos 协议是一

Paxos算法之旅(四)zookeeper代码解析

ZooKeeper是近期比较热门的一个类Paxos实现.也是一个逐渐得到广泛应用的开源的分布式锁服务实现.被认为是Chubby的开源版,虽然具体实现有很多差异.ZooKeeper概要的介绍可以看官方文档:http://hadoop.apache.org/zookeeper 这里我们重点来看下它的内部实现. ZooKeeper集群中的每个server都要知道其他成员,通过在配置文件zoo.cfg中作如下配置实现: tickTime=2000 dataDir=/var/zookeeper/ clie

【转】Paxos算法2-算法过程

——转自:{老码农的专栏} 1.编号处理 根据P2c ,proposer在提案前会先咨询acceptor查看其批准的最大的编号和value,再决定提交哪个value.之前我们一直强调更高编号的proposal,而没有说明低编号的proposal该怎么处理. |--------低编号(L<N)--------|--------当前编号(N)--------|--------高编号(H>N)--------| P2c 的正确性是由当前编号N而产生了一些更高编号H来保证的,更低编号L在之前某个时刻,

架构设计:系统存储(24)——数据一致性与Paxos算法(中)

(接上文<架构设计:系统存储(23)--数据一致性与Paxos算法(上)>) 2-1-1. Prapare准备阶段 首先需要介绍几个在Acceptor角色上需要被持久化保存的数据属性: PrepareVote保存了当前Acceptor接收到的已完成投票授权的最大投票轮次 AcceptedVote保存了当前Acceptor在赋值阶段完成投票赋值的投票轮次 AcceptedValue保存了当前Acceptor在赋值阶段被赋予的值 1.第一个阶段Proposer和Acceptor至少要完成一次网络通

[转载] 一篇文章带你了解Paxos算法

原文: http://dockone.io/article/640 [编者的话]本文是Quora上关于Paxos算法的回答,两位答者分别从不同的角度描述Paxos算法.Vineet Gupta的回答细致入微,更偏向理论.Russell Cohen用具体的例子讲解Paxos算法,相辅相成. Vineet Gupta的回答 有很多关于一致性(consensus)问题的解决方案,而这些解决方案中,我认为Paxos相对来说很好理解. 『达成一致性』最简单的例子就是结婚誓词: “你愿意.......”(男