Paxos

参考资料

[1] Lamport 自己的描述: http://lamport.azurewebsites.net/pubs/pubs.html#lamport-paxos
[2] The Part-Time Parliament: https://lamport.azurewebsites.net/pubs/lamport-paxos.pdf
[3] Paxos Made Simple: https://lamport.azurewebsites.net/pubs/paxos-simple.pdf
[4] 视频: https://www.youtube.com/watch?v=JEpsBg0AO6o
[5] Time, Clocks and the Ordering of Events in a Distributed System: http://lamport.azurewebsites.net/pubs/time-clocks.pdf
[6] Paxos算法详解
[7] 图解超难理解的 Paxos 算法

背景

  • 1989年,Leslie Lamport在工作论文The part-time parliament中提出Paxos 算法, 由于文章采用了讲故事的叙事风格且内容过于艰深晦涩,直到1998 年才通过评审,发表在ACM transactions on computer systems 期刊上.

Leslie Lamport. The part-time parliament[J]. ACM Transactions on Computer Systems (TOCS),1998,16(2).

  • 朴实版本Paxos Made Simple
  • Paxos特点是难……

说明

  • 解决问题: 分布式一致性问题,一个分布式系统中的各个进程如何就某个值达成一致
  • 运行环境:允许宕机故障的异步系统中,可容忍消息不可靠、丢失等
  • N个节点的系统最多允许(N-1)/2个节点故障

术语

  • Proposal Value提案的值
  • Proposal ID提案编号
  • Proposal提案 = 提案编号 + 提案的值
  • Proposer提议者
  • Acceptor决策者
  • Learner最终决策学习者

过程

Paxos将系统中的角色分为提议者 (Proposer),决策者 (Acceptor),和最终决策学习者 (Learner):

Proposer: 提出提案 (Proposal)。Proposal信息包括提案编号 (Proposal ID) 和提议的值 (Value)。
Acceptor:参与决策,回应Proposers的提案。收到Proposal后可以接受提案,若Proposal获得多数Acceptors的接受,则称该Proposal被批准。
Learner:不参与决策,从Proposers/Acceptors学习最新达成一致的提案(Value)。

paxos算法流程

  • prepare阶段:Proposer(提议者)选择一个Proposal ID(提案编号)向所有的Acceptors(决策者)发送Prepare请求,Acceptors针对收到的Prepare请求进行Promise承诺
  • Accept阶段:Proposer收到多数Acceptors承诺的Promise后,向Acceptors发出Propose请求,Acceptors针对收到的Propose请求进行Accept处理
  • Learn阶段:Proposer在收到多数Acceptors的Accept之后,标志着本次Accept成功,决议形成,将形成的决议发送给所有Learners

整个算法流程中的消息描述如下

  • Prepare: Proposer生成全局唯一且递增的Proposal ID (可使用时间戳加Server ID),向所有Acceptors发送Prepare请求,这里无需携带提案内容,只携带Proposal ID即可
  • Promise: Acceptors收到Prepare请求后,做出“两个承诺,一个应答”

两个承诺,一个应答

两个承诺

  1. 不再接受Proposal ID小于等于(注意:这里是<= )当前请求的Prepare请求
  2. 不再接受Proposal ID小于(注意:这里是< )当前请求的Propose请求

一个应答
不违背以前作出的承诺下,回复已经Accept过的提案中Proposal ID最大的那个提案的Value和Proposal ID,没有则返回空值

伪代码及描述

分割线--------------------------------------------------------------

自己的理解

强一致性算法&弱一致性算法

Paxos算法分类

  • Basic Paxos
  • Multi Paxos
  • Fast Paxos
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值