`

Paxos算法简述

 
阅读更多
Paxos算法是分布式中一个著名的一致性算法。它的假设前提是,在分布式系统中进程之间的通信会出现丢失、延迟、重复等现象,但不会出现传错的现象。Paxos算法就是为了保证在这样的系统中进程间基于消息传递就某个值达成一致。要理解paxos算法最好还是看作者本人(Leslie Lamport)的论文《The Part-Time Parliament》。在这里只是简单地介绍paxos最核心的思想,其实它还有很多的内容。

提议者和决议者是这里最重要的两个角色,paxos最核心的算法就是定义他们之间的通讯规则来保证某个变量在分布式系统中的一致性。

提议者是提出议案的人。每个议案都有一个议案号,议案号是区别不同议案的唯一标识,而且议案号是有大小次序的。这里的提议者不像我们真实世界里的提议者,这里的提议者提的议案内容不能随心所欲。提议者和决议者要遵循下面的规则:

1) 提议者先给议案决定一个议案号,注意整个系统中议案号都不能重复的。然后发消息给所有决议者,告诉他们我要提出第几号议案。

第一阶段,提议者甲向决议者A、B、C、D、E、F、G发出议案号16的消息。



2) 决议者收到提议者发来的议案号后先看这个议案号是否是自己收到的所有议案号中最大的。如果不是,就不予理会;如果是,就把自己最后一次投票的议案发回去,如果没投过议案就回复没投过议案。

第二阶段,决议者收到甲发来的议案号16后根据自己的情况作出回复



A、D未投过任何议案所以回复(null)

B最后一次投了2号议案所以回复(2,α)

C、F最后一次投了5号议案所以回复(5,β)

E的最大议案号是21所以不用回复

G由于网络原因没收到消息

3) 当提议者收到过半回复后才能决定议案的内容。在所有回复中议案号最大的那个议案的内容就定为当前议案的内容。如果都回复没投过议案,那议案内容就由自己定了。如果只收到不过半数的回复,那么这个过程就这样结束了。确定议案内容后就要把议案发给所有决议者。到此提议者的工作就可以结束了。

第三阶段,甲根据回复确定16号议案的内容,然后正式提出16号议案。



甲收到过半数人的回复,回复的内容有(null)、(2,α)、(5,β),其中5是最大的议案号,所以16号议案的内容就定为β,接着甲就把(16,β)发出去。

4) 决议者收到议案后,就要对它进行投票。如果这个议案号是自己收到的所以议案号中最大的,就要投这个议案的票;否则就不予理会。这里的投票没有反对或赞成的类型之分。也就是可以认为只有赞成票。到此决议者的工作就可以结束了。

第四阶段,决议者收到16号议案并对它投票。



A、B、C、G收到(16,β)后,由于16号是他们的最大号,所以会给这个议案投票

D、E、F收到(16,β)后,由于21号是他们的最大号,所以不投票。



这个算法保证了某个变量在分布式系统中要么没有值,要么就只会有一个值。只要某个议案在某一刻有过半数的人投票,那么这个值就永远定下来了。



如上图,15号议案(内容是β)有了过半数的投票,那么它的下一号16号议案内容只能是β了,因为在第三阶段收到的回复如果过半数,那么其中一定有(15,β),而15肯定是回复中最大的号,所以内容只能是β。而下下一号21号议案内容也只能是β,因为它的前两个议案的内容都是β,如果收到的回复过半数的话肯定包含(15,β)或(16,β),而他们都是最大的两个,所以内容也只能是β了。可以证明其后的所有议案内容都是β。虽然paxos算法可以保证不会有两个值,但显然不能保证一定会有值。这也是理论上(CAP理论)不能解决的问题。

这里的算法是有改动的,提议者和决议者都还有后续的处理,而且关于上面的“过半数的决议者”也并不是paxos本身的描述。Paxos本身定义的是一个更一般的“大多数”集合,每个议案都有一个“大多数”的决议者集合S,这些集合是两两相交的,对于每个议案,在第三阶段要收到S中所有决议者的回复才能继续下去。如果某个议案得到相应S的全体投票,那么这个值就这么定下来了

参考:http://my.oschina.net/linlifeng/blog/78918
分享到:
评论

相关推荐

    云计算:C++实现的可直接运行paxos算法

    **云计算中的Paxos算法** Paxos算法是一种在分布式系统中解决一致性问题的经典协议,由Leslie Lamport提出。它的主要目标是在存在网络延迟、消息丢失或重复、节点故障等不可靠因素的情况下,确保一组分布式节点能够...

    Paxos算法中文翻译

    Paxos算法是一种在异步分布式系统中实现共识(Consensus)的算法,由Leslie Lamport提出。它能够确保系统中的多个节点即使在某些节点出现故障时,也能就某个值(例如一个操作请求)达成一致意见。Paxos算法的核心...

    Paxos算法.pdf

    ### Paxos算法详解与Zookeeper应用 #### 一、Paxos算法概述 Paxos算法是一种用于解决分布式系统中一致性问题的经典算法。该算法由Leslie Lamport于1990年提出,并逐渐成为分布式一致性算法领域的核心理论之一。在...

    人工智能-项目实践-多线程-Paxos算法的多线程实现.zip

    **Paxos算法详解** Paxos算法是Leslie Lamport提出的一种分布式一致性协议,它在分布式系统中解决了一个核心问题:如何在一个网络环境中保证多个节点间的数据一致性,即使在网络存在延迟、消息丢失或重复、节点故障...

    面向云计算基础课程的Paxos算法教学设计研究.pdf

    本研究通过详细解析Paxos算法的工作原理,结合实际的教学案例,使学生能够更好地理解这一算法的核心概念,如提议编号、提案、承诺、接受等,并且在课堂实践中加深对Paxos算法的理解。教学设计通过案例分析、课堂讨论...

    paxos 算法 分析

    很不错的paxos算法分析文档,值得一看,虽不能深入研究,但是可以初步了解!

    cheap-paxos.pdf_Paxos算法_

    这篇名为"cheap-paxos.pdf"的论文深入探讨了Paxos算法的一个变种——廉价Paxos(Cheap Paxos),它在保持Paxos算法基本性质的同时,优化了性能,降低了复杂性,尤其适用于大规模分布式系统。 Paxos算法最初由Leslie...

    paxos 算法解释

    **Paxos算法详解** Paxos算法是分布式系统中的一种一致性协议,由Leslie Lamport提出,旨在解决在存在网络延迟、消息丢失或重复、节点故障等不确定因素的环境中,如何让分布式系统的多个节点就某个值达成一致。...

    paxos算法学习.docx

    **Paxos算法详解** Paxos算法,以其创始人Leslie Lamport的灵感来源——希腊小岛Paxos命名,是一种解决分布式系统中一致性问题的关键算法。在Paxos算法中,Lamport构建了一个虚拟的希腊城邦,通过模拟岛上的议会...

    基于Paxos算法的ATS数据分布式存储模型.pdf

    为了深入理解基于Paxos算法的ATS数据分布式存储模型,我们首先需要探讨相关的概念和技术背景。 Paxos算法是一种解决分布式系统中一致性问题的算法,由莱斯利·兰伯特(Leslie Lamport)提出。在分布式系统中,多个...

    Paxos算法介绍1

    ### Paxos算法详解 #### 一、Paxos算法概览与背景 Paxos算法是一种用于解决分布式系统中一致性问题的重要算法,由莱斯利·兰伯特(Leslie Lamport)在1990年提出。该算法旨在解决在分布式系统中,即使面对节点故障...

    深入理解 paxos 算法 PDF

    ### 深入理解Paxos算法 #### 引言 在分布式系统领域,一致性算法是确保多个节点间数据同步的基础。其中,Paxos算法因其简洁性和有效性而备受推崇,成为了众多分布式系统设计的核心。本文旨在深入探讨Paxos算法的...

    zookeeper基于paxos算法的资料。

    Zookeeper的核心设计思想是基于一种称为Paxos的分布式一致性算法,该算法由Leslie Lamport提出,是分布式系统中保证数据一致性的重要工具。 Paxos算法是一种解决分布式系统中一致性问题的算法,它的主要目标是在...

    paxos算法及其实际实现

    Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人在微软研究院)1990年提出的一种基于消息传递的一致性算法。[1] 这个算法被认为是类似算法中最有效的。 背景介绍编辑 播报 Paxos 算法解决的...

    一种基于Paxos算法的高可用分布式锁服务系统.pdf

    根据给定文件的内容,本知识点将专注于分布式系统中的Paxos算法,高可用性、一致性问题以及分布式锁服务系统的设计与实现。 1. 分布式系统与Paxos算法:分布式系统由多个分布在网络中的节点组成,它们通过通信和...

    Paxos算法详解.ppt

    Paxos算法详解.ppt

    基于消息传递的Paxos算法研究

    基于消息传递的Paxos算法是一种用于解决分布式系统中一致性问题的共识算法。Paxos算法由Leslie Lamport提出,旨在在分布式系统中达成一致意见,即便是在有节点失效的情况下。它被广泛应用在分布式计算系统中,以保证...

    Paxos算法(参考).doc

    Paxos算法是一种分布式一致性算法,由Leslie Lamport提出,主要用于解决分布式系统中节点间的一致性问题,确保即使在存在网络延迟、故障或消息丢失的情况下,也能达成一致的决策。它在Google的Chubby、MegaStore、...

    微信PaxosStore:深入浅出Paxos算法协议-InfoQ1

    【微信PaxosStore:深入浅出Paxos算法协议】 Paxos算法是由Leslie Lamport提出的分布式一致性协议,其目标是确保在一个可能存在网络延迟、消息丢失或重复、节点故障的分布式系统中,所有节点能够就某个值达成一致。...

Global site tag (gtag.js) - Google Analytics