Paxos算法详解

Paxos算法详解

Paxos提高分布式系统容错性的一致性算法

对于有一组可以提出提案的进程集合,对于一个一致性算法需要满足:

  • 在这些被提出的提案中,只有一个会被选定。
  • 如果没有提案被提出,那么就不会有被选定的提案。
  • 当一个提案被选定之后,进程应该可以获取被选定的提案信息。
  • 只有一个值被选定。
  • 如果某个进程认为某个提案被选定,那么这个提案必须是真的被选定的那个。

Paxos算法中包含三种角色: ProposerAcceptor, Learner。一个进程可以充当多个角色。不同参与者之间可以通过收发信息进行通信。

  • 每个参与者以任意速度执行,可能会因为出错而停止,也可能会重启。同时即使一个提案被选定之后,所有参与者也都有可能失败或重启,因此除非哪些失败或重启的参与者可以记录某些信息,否则将无法确定最终的值。
  • 消息在传输过程中可能出现不可预知的延迟,也可能重复或丢失,但是消息不会被损坏,消息内容不会被篡改。

Paxos推导过程:

  • P1:一个Acceptor必须批准它收到的第一个提案。
    • 不同Proposer分别提出多个提案,没有一个提案被多数人批准。
      1721054019638.png
    • 任意一个Acceptor出现问题
      1721054196794.png
    • 在P1的基础上,再加上一个提案被选定需要由半数以上的Acceptor批准的需求暗示着一个Acceptor必须能够批准不止一个提案。提案形式使用 (全局唯一编号, Value), 当Value被半数以上Acceptor批准则代表被选定。
  • P2: 如果(M0, V0)被选定,那么所有比编号的M0更高的,且被选定的提案。其Value也是V0。
    • P2a: 如果编号为M0、Value值为V0的提案(即[M0,V0])被选定了,那么所有比编号M0更高的,且被Acceptor批准的提案,其Value值必须也是V0。
    • P2b: 如果一个提案[M0,V0]被选定后,那么之后任何Proposer产生的编号更高的提案,其Value值都为Vo.
    • P2c: 对于任意的Mn和Vn,如果[Mn,Vn]被提出,那么肯定存在一个由半数以上的Acceptor组成的集合S,满足一下条件中任意一个:
      • S中不存在任何批准过编号小于Mn的提案Acceptor。
      • 选取S中所有Acceptor批准的编号小于Mn的提案,其中编号最大的那个提案其Value值是Vn.
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值