PAXOS算法的理解

1.分布式系统

定义

分布式系统是这样一种系统,它的各个组件分布在联网的若干台计算机上,通过传递消息进行相互通信和协同工作。

特点

  • 并发性:在没有协同的情况下,组件各自行事。
  • 没有全局时钟:目前的时间同步精度不够。
  • 故障无处不在:总是会发生各种各样的故障。

2.Paxos算法解决的问题

是分布式系统如何对一个问题达成共识。

3.Paxos算法中的角色

从提案到表决流程涉及到三个角色:

  • Proposer:提案者,可能有多个,它门负责提出提案。
  • Acceptor:接受人,一定要有多个,它们对指定提案进行表决,同意则接受提案,不同意则拒绝。
  • Learner:学习人,收集每位Acceptor接受的提案,并根据少数服从多数的原则,形成最终提案。

实际上,分布式系统中一个组件可以对应一种或多种角色。

4.Paxos算法描述

  • 第一阶段(Prepare阶段)

Proposer

  • 选取提案编号n,并向大多数Acceptor发送携带编号n的prepare请求。

Acceptor:

  • 如果收到的提案编号n比自己已经收到的编号都要大,则向Proposer承诺不再接收编号小于n的提案,如果之前接受过提案,则同时将接受的提案中编号最大的提案及其编号发给Proposer。
  • 如果收到的提案编号n小于自己已经收到提案编号的最大值,则拒绝。
  • 第二阶段(Accept阶段)

Proposer

    • 首先,对接收到响应,逐条处理:
      • 如果接收到拒绝,则暂不处理。
      • 如果接收到同意,同时还接收到Acceptor已经接受的提案,则记下该提案及编号。
    • 处理完响应后,统计拒绝和同意个数:
      • 如果大多数拒绝,则准备下次提案。
      • 如果大多数同意,从这些Acceptor已经接受的提案中选取提案编号最大的提案作为自己的提案,没有则使用自己的提案,逐个向Acceptor发送Accept消息。

Acceptor:

    • 如果收到的提案编号n小于自己已经收到最大提案编号,则拒绝。
    • 如果收到的提案编号n等于自己已经收到最大提案编号,则接受该提案。
    • 如果收到的提案编号n大于自己已经收到最大提案编号,则拒绝。
  • 形成共识(与Prepare&Accept阶段并行)

Acceptor:

    • 每当接受一个提案,则将该提案及编号发给Learner。

Learner:

    • 记录每一个Acceptor当前接受的提案,一个Acceptor先后发来多个提案,则保留编号最大的提案。
    • 统计每个提案被接受的Acceptor个数,如果超过半数,则形成共识。

5.Paxos流程图例

5.1 一个提案从提出到接受的流程

  • Proposer1提案的Prepare阶段(如下图)

  • Proposer1提案的Accept阶段(如下图)

 

5.2 在两个阶段之间发起的新提案接受流程

 

  • Proposer2提案的prepare阶段

 

  • Proposer2提案的Accept阶段

 

 

5.3 在Accept阶段发起的新提案接受流程

 

  • Proposer1提案的Prepare阶段(如下图)

 

  • 在Proposer1的Accept阶段Proposer2提案的Prepare阶段

 

  • Proposer2提案的Accept阶段

5.4 在Accept阶段向大多数Acceptor发起的新提案接受流程

  • Proposer1提案的Prepare阶段(如下图)

 

  • 在Proposer1的Accept阶段Proposer2向大多数Acceptor提案的Prepare阶段

 

 

  • Proposer2提案的Accept阶段

 

 

  • Proposer1重新提案的Prepare阶段

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值