分布式一致性算法之Paxos

Paxos算法基于消息传递的分布式一致性算法:解决了分布式一致性问题

  1. Paxos的重要概念:

    1. 提案(Proposal):Proposal消息包括提案编号(Proposal ID)和提案的值(最终一致值Value)
  2. Paxos算法角色:

    1. Client:客户端,主要是向分布式系统发出请求,并等待响应。例如:对分布式文件服务器中文件的写请求
    2. Proposer:提案发起者,提倡客户请求,试图说服Acceptor对此达成一致,并在发生冲突时充当协调者以推动协议向前发展。
    3. Acceptor:决策者,可以批准提案;如果某个提案被选定,那么该提案里的Value就被选定了。
    4. Learners:最终决策的学习者,充当该协议的复制。

    规则:

    1. 一个Acceptor必须接受它收到的第一个提案
    2. 一个提案被选定需要被半数以上的Acceptor接受
    3. 如果某个value为v的提案被选定了,那么每个编号更高的被Acceptor接受的提案的value必须是v
    4. 如果某个value为v的提案被选定,那么之后任何Proposer提出的编号更高的提案的value必须是v
    5. 对于任意的Mn和Vn,如果提案[Mn,Vn]被提出,那么肯定存在一个由半数以上的Acceptor组成的集合S,满足一下两个条件中的任意一个:
      1. 要么S中每个Acceptor都没有接受过编号小于Mn的提案(之前没有接受提案)
      2. 要么S中所有Acceptor批准的所有编号小于Mn的提案中,编号最大的那个提案的value值为Vn。
    6. 如果Acceptor没有接受过提案,有提案就接受最先到达的提案
    7. Proposer提交提案的时候,如果Acceptor已经接受过提案,提交的提案的value必须和上次一样不变
    8. 如果Acceptor接受提案时,要求填的编号不能比上次的提案编号小,如果编号小,会忽略。提交提案的值,Acceptor接收时候,value必须和上次接收的value一样。
总结:
  1. 如果Acceptor没有接受过提案,有提案就接受最先到达的提案。
  2. Proposer提交提案的时候,如果Acceptor已经接受过提案,提交的提案的value必须和上次一样不变
  3. 如果Acceptor接受提案时,要求提案的编号不能比上次的提案编号小,如果编号小则忽略。提交提案的值,Acceptor接收的时候,value也必须上次接受的value一样。
提案的生成规则及接收

在这里插入图片描述
在这里插入图片描述

提案者给决策者发送prepare请求,提案者创建一个编号为N的提案发送给多数派决策者,今后不会再接收比N小的数,然后多数派响应一个V或者Null给提案者,提案者发现没有对应的提案,然后需要创建自己的Value, 然后发送accept请求,编号为N,值为Value([N,V]),如果此时决策者的编号出现大于N,则返回Null或者error等信息,使提案者重新增加编号的值,继续发送prepare请求,如果编号是N则直接响应回来。

Learner学习方式
  1. Acceptor接收了一个提案,就将该提案发送给leaner
    1. 优点:Learner能快速获取被选定的value
    2. 缺点:通信次数为(M*N)
  2. Acceptor接收了一个提案,将该提案发送给主Learner,主Learner在通知其他Learner
    1. 优点:通信次数减少(M+N+1)
    2. 缺点:单点问题(主Learner可能出现故障)
  3. Acceptor接收了一个提案,将该提案发送给Learner集合,Learner集合再通知其他Learner
    1. 优点:集合中Learner个数越多,可靠性越好
    2. 缺点:网络通信复杂度搞。
Paxos算法活性

在这里插入图片描述

上图失去活性的问题可以通过选出一个主Proposer,都通过主Proposer去发送提案

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值