Paxos协议理解

Paxos协议要点

  • Paxos协议中共有三种角色:Proposer、Acceptor、Learner,具体实现中一个进程可担当多个角色。

  • Paxos协议的目的:针对同一主题,每个Proposer都可提出若干提案,所有的Acceptor和Learner必须从这些提案中一致选定某个提案。

  • 某个提案被选定成功的定义:此提案被超过半数Acceptor 批准

  • Paxos的第一个Prepare阶段的目的是确定Proposer如何生成提案。这实际上涉及到Paxos协议的推导,可参考《从Paxos到Zookeeper 分布式一致性原理与实践》。即Prepare阶段是提案生成阶段

    提案生成算法如下,此算法保证了如果某个提案[M0, V0]被选定后,之后Proposer提出的任何编号大于M0的提案,其值一定是V0。
    在这里插入图片描述

  • Paxos的第二个Accept阶段的目的是将生成的提案发送给所有Acceptor批准,如果超过半数Acceptor都批准了,则此提案被选定成功。即Accept阶段是提案选定阶段

  • 一个提案已经被超过半数Acceptor批准,但是Proposer可能并不知道提案已经被选定成功,因为Accept阶段,大多数Acceptor返回的响应可能在网络中丢失。但是所幸的是Prepare阶段的提案生成算法保证了Proposer新的提案的值一定为已经选定的提案的值。

  • Acceptor对于Prepare和Accept请求的响应原则:Acceptor可以成功响应编号大于当前Acceptor记录过最大编号的提案请求(Prepare和Accept请求)。响应过程可参考以下流程图。

Paxos算法陈述

在这里插入图片描述
在这里插入图片描述
(阶段二中通过提案是指批准提案)

Paxos算法流程图

  • K为提案编号
  • MaxN为Acceptor所记录的最大提案编号
  • AcceptN为Acceptor所批准的提案编号
  • AcceptV为Acceptor所批准的提案的值。
    在这里插入图片描述

Paxos协议缺陷

多个Proposer竞相提案,陷入死循环:
在这里插入图片描述
解决方法:选举主Proposer,只有主Proposer才能进行提案,即Multi-Paxos、Raft等协议。

具体还可参考:
https://yinnn.blog.csdn.net/article/details/78080431?utm_medium=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.control&dist_request_id=b3534b10-a3df-4961-a494-b42f98f5fc74&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.control

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值