paxos发展算法原理

紫魔戒 紫魔戒     2022-09-18     222

关键词:

Paxos

发展史

  Leslie Lamport所提出的Paxos算法是现代分布式系统中的一项重要的基础性技术,得到广泛的应用。

Paxos的整个发展过程大概可以分为三个阶段:
  第一阶段:萌芽期,大致是1988-1996年。Liskov等人在PODC上发表了Viewstamped Replication: A New Primary Copy Method to Support Highly-Available Distributed Systems ,提出了一个在副本出现宕机情况下仍能正常工作的主从备份算法,该算法与Paxos在本质上是一致的(The ABCD’s of Paxos)。

  第二阶段:1996-2007年。涌现出一批Paxos的不同版本,这些Paxos的变种从不同侧面完善了基础Paxos算法,提升其性能。Liskov等人在1999年提出了PBFT(实用的拜占庭容错算法),这实际上也是Paxos的一个变种,被Lampson称为Byzantine Paxos,该算法对基础Paxos进行了改进,使其可以处理拜占庭错误。

  拜占庭将军问题(Byzantine failures),是由莱斯利·兰伯特提出的点对点通信中的基本问题。含义是在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。
  拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信差传消息。 在战争的时候,拜占庭军队内所有将军和副官必需达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,在军队内有可能存有叛徒和敌军的间谍,左右将军们的决定又扰乱整体军队的秩序。在进行共识时,结果并不代表大多数人的意见。这时候,在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,拜占庭问题就此形成。
  拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。拜占庭容错协议必须处理这些失效,并且这些协议还要满足所要解决的问题要求的规范。

Eli Gafni 和 Lamport 在2000年提出了Disk Paxos,这可以认为是Paxos基于磁盘的版本,以支持持久化。

  第三阶段:本阶段。Paxos开始在工业界得到了广泛应用。从2006年开始,谷歌公司有两篇影响深远的论文发表在OSDI上,一篇是“Bigtable:A Distributed Storage System for Structured Data”,另一篇“The Chubby lock service for loosely-coupled distributed systems”。两篇论文可以说是揭开了大数据管理的序幕,而Paxos则在大数据管理的核心技术(容错)中扮演了极为重要的角色。

算法原理

  Paxos算法维基百科https://en.wikipedia.org/wiki/Paxos_(computer_science)
  Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一。然而,Paxos算法也因为晦涩难懂而臭名昭著。

问题产生的背景

  在常见的分布式系统中,总会发生诸如机器宕机或网络异常(包括消息的延迟、丢失、重复、乱序,还有网络分区)等情况。Paxos算法需要解决的问题就是如何在一个可能发生上述异常的分布式系统中,快速且正确地在集群内部对某个数据的值达成一致,并且保证不论发生以上任何异常,都不会破坏整个系统的一致性。
技术分享

相关概念

在Paxos算法中,有四种角色:

  • Client:产生议题者
  • Proposer :提议者
  • Acceptor(Voters):决策者(投票者)
  • Learner:最终决策学习者,也就是执行者。

上面4种角色中,提议者和决策者是很重要的,其他的2个角色在整个算法中应该算做打酱油的,Proposer就像Client的使者,由Proposer使者拿着Client的议题去向Acceptor提议,让Acceptor来决策。

  1. Proposer拿着Client的议题去向Acceptor提议,让Acceptor来决策。
  2. Proposer提出议题,Acceptor初步接受或者Acceptor初步不接受。
  3. Acceptor初步接受则Proposer再次向Acceptor确认是否最终接受。
  4. Acceptor最终接受或者Acceptor最终不接受。
  5. Learner最终学习的目标是向所有Acceptor学习,如果有多数派个Acceptor最终接受了某提议,那就得到了最终的结果,算法的目的就达到了。 技术分享 技术分享

问题描述

  假设有一组可以提出(propose)value(value在提案Proposal里)的进程集合。一个一致性算法需要保证提出的这么多value中,只有一个value被选定(chosen)。如果没有value被提出,就不应该有value被选定。如果一个value被选定,那么所有进程都应该能学习(learn)到这个被选定的value。对于一致性算法,安全性(safaty)要求如下:

  • 只有被提出的value才能被选定。
  • 只有一个value被选定,并且
  • 如果某个进程认为某个value被选定了,那么这个value必须是真的被选定的那个。

Paxos的目标:保证最终有一个value会被选定,当value被选定后,进程最终也能获取到被选定的value。

算法描述

Paxos算法分为两个阶段。具体如下:

阶段一:
(a) Proposer选择一个提案编号N,然后向半数以上的Acceptor发送编号为N的Prepare请求。

(b) 如果一个Acceptor收到一个编号为N的Prepare请求,且N大于该Acceptor已经响应过的所有Prepare请求的编号,那么它就会将它已经接受过的编号最大的提案(如果有的话)作为响应反馈给Proposer,同时该Acceptor承诺不再接受任何编号小于N的提案。

阶段二:
(a) 如果Proposer收到半数以上Acceptor对其发出的编号为N的Prepare请求的响应,那么它就会发送一个针对[N,V]提案的Accept请求给半数以上的Acceptor。注意:V就是收到的响应中编号最大的提案的value,如果响应中不包含任何提案,那么V就由Proposer自己决定。

(b) 如果Acceptor收到一个针对编号为N的提案的Accept请求,只要该Acceptor没有对编号大于N的Prepare请求做出过响应,它就接受该提案。
技术分享

技术分享

eg. 技术分享

Learner学习被选定的value

Learner学习(获取)被选定的value有如下三种方案:
技术分享










paxos算法原理及理解

Paxos算法产生的背景Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一,其解决的问题就是在分布式系统中如何就某个值(决议)达成一致。我自己的理解是:不... 查看详情

分布式系列文章——paxos算法原理与推导

....cnblogs.com/linbingdong/p/6253479.html讲得很详细.贴过来 Paxos算法在分布式领域具有非常重要的地位。但是Paxos算法有两个比较明显的缺点:1.难以理解2.工程实现更难。网上有很多讲解Paxos算法的文章,但是质量参差不齐。看了很多... 查看详情

转载分布式系列文章——paxos算法原理与推导

转载:http://linbingdong.com/2017/04/17/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E5%88%97%E6%96%87%E7%AB%A0%E2%80%94%E2%80%94Paxos%E7%AE%97%E6%B3%95%E5%8E%9F%E7%90%86%E4%B8%8E%E6%8E%A8%E5%AF%BC/Paxos算法在分布式领域 查看详情

分布式技术专题「分布式技术架构」一文带你厘清分布式事务协议及分布式一致性协议的算法原理和核心流程机制(paxos篇)

...是目前公认的解决分布式一致性问题最有效的算法之一。发展历史Paxos算法的发展历史追溯到古希腊,当时有一个名为“Paxos“的小岛,岛上采用一会的形式通过法令,议会中议员通过信使进行消息传递,议员与信... 查看详情

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

最近特别喜欢一句话:实践是最好的成长,发表是最好的记忆。笔者在今年国庆7天没有回家,累计有6天的时间是在公司度过,要么写博客,要么看书。我记得当时写的关于分布式系统一致性的原理和实践。作者是倪超。书名《... 查看详情

分布式一致性算法:raft算法

Raft算法是可以用来替代Paxos算法的分布式一致性算法,而且raft算法比Paxos算法更易懂且更容易实现。本文对raft论文进行翻译,希望能有助于读者更方便地理解raft的思想。如果对Paxos算法感兴趣,可以看我的另一篇文章:分布式... 查看详情

图解分布式一致性协议paxos(代码片段)

Paxos协议/算法是分布式系统中比较重要的协议,它有多重要呢?<分布式系统的事务处理>:GoogleChubby的作者MikeBurrows说过这个世界上只有一种一致性算法,那就是Paxos,其它的算法都是残次品。<大规模分布式存储系统>:... 查看详情

从paxos到zookeeper分布式一致性原理与实践-笔记

一、分布式架构1.1从集中到分布式1.2 从ACID到CAP/BASE    1.2.1 ACID                              1.2.2 分布式事务              二、一致性协议2.1Paxos算法             查看详情

从paxos到zookeeper分布式一致性原理与实践-笔记

一、分布式架构1.1从集中到分布式1.2 从ACID到CAP/BASE    1.2.1 ACID                              1.2.2 分布式事务              二、一致性协议2.1Paxos算法             查看详情

raft算法(详细版)

参考技术A在分布式系统中,一致性算法至关重要。在所有一致性算法中,Paxos最负盛名,它由莱斯利·兰伯特(LeslieLamport)于1990年提出,是一种基于消息传递的一致性算法,被认为是类似算法中最有效的。Paxos算法虽然很有效,... 查看详情

底层算法系列:paxos算法

关于算法,面太广。本系列只研究实际应用中遇到的核心算法。了解这些算法和应用,对java码农进阶是很有必要的。对于Paxos学习论证过程中,证实一句话:有史以来学习paxos最好的地方wiki:Paxos(computerscience)目录1.背景2.Paxos算... 查看详情

paxos算法

一、简介Paxos算法是莱斯利·兰伯特(LeslieLamport)1990年提出的一种基于消息传递的、具有高容错性的一致性算法。GoogleChubby的作者MikeBurrows说过,世上只有一种一致性算法,那就是Paxos,所有其他一致性算法都是Paxos算法的不完整版... 查看详情

paxos算法详细图解

1、Paxos算法的应用   Paxos算法及变种算法在分布式系统中应用广泛。   基于Paxos算法的变种有:ZAB、Raft   例如:   ?Zookeeper中的ZAB协议也是Paxos算法的变种。Zookeeper通过ZAB协议实现数据... 查看详情

(16)云计算核心算法之paxos算法

...术,支撑集群高效协同工作的需要一系列资源和任务调度算法。这一系列调度算法中,有3种核心算法奠定了集群互连互通的基础,它们是Paxos算法,DHT算法和Gossip协议。其中,Paxos算法解决分布式系统中信息一致性的问题。 P... 查看详情

理解paxos算法的推导过程

...0c;一直都是CS领域的热门话题,Paxos号称是最难理解的算法。最近几天一直在看Paxos相关资料,发现Paxos算法执行过程很简单,但如何推导出Paxos算法确实令人费解。网上有大量关于Paxos的基本概念、算法描述、推导过程... 查看详情

分布式共识算法——raft算法(图解)(代码片段)

文章目录Raft算法Raft算法概念Raft角色Raft算法流程Raft算法原理角色关系任期原理通信原理图解算法流程选举过程执行操作过程(日志复制)确保安全Leader日志的完整性选民日志的一致性Raft算法Raft算法概念Raft是一种分布式... 查看详情

分布式共识算法——raft算法(图解)(代码片段)

文章目录Raft算法Raft算法概念Raft角色Raft算法流程Raft算法原理角色关系任期原理通信原理图解算法流程选举过程执行操作过程(日志复制)确保安全Leader日志的完整性选民日志的一致性Raft算法Raft算法概念Raft是一种分布式... 查看详情

paxos一致性算法

一、概述:GoogleChubby的作者说过这个世界只有一种一致性算法,那就Paxos算法,其他的都是残次品。二、Paxos算法:一种基于消息传递的高度容错性的一致性算法。Paxos:少数服从多数,解决最终一致性问题.三、三种角色:Proposer... 查看详情