当前位置: 首页 > news >正文

Paxos 算法

Paxos算法:一种基于消息传递且具有高度容错特性的一致性算法。

Paxos算法解决的问题:就是如何快速正确的在一个分布式系统中对某个数据值达成一致,并且保证不论发生任何异常,都不会破坏整个系统的一致性。
在这里插入图片描述
在一个Paxos系统中,首先将所有节点划分为Proposer(提议者),Acceptor(接受者),和Learner(学习者)。(注意:每个节点都可以身兼数职)。

  • 一个完整的Paxos算法流程分为三个阶段:

    • Prepare准备阶段
      • Proposer向多个Acceptor发出Propose请求Promise(承诺)
      • Acceptor针对收到的Propose请求进行Promise(承诺)
    • Accept接受阶段
      • Proposer收到多数Acceptor承诺的Promise后,向Acceptor发出Propose请求
      • Acceptor针对收到的Propose请求进行Accept处理
    • Learn学习阶段:Proposer将形成的决议发送给所有Learners

(1)Prepare: Proposer生成全局唯一且递增的Proposal ID,向所有Acceptor发送Propose请求,这里无需携带提案内容,只携带Proposal ID即可。
(2)Promise: Acceptor收到Propose请求后,做出“两个承诺,一个应答”。
➢ 不再接受Proposal ID小于等于(注意:这里是<= )当前请求的Propose请求。
➢ 不再接受Proposal ID小于(注意:这里是< )当前请求的Accept请求。
➢ 不违背以前做出的承诺下,回复已经Accept过的提案中Proposal ID最大的那个提案的Value和Proposal ID,没有则返回空值。
(3)Propose: Proposer收到多数Acceptor的Promise应答后,从应答中选择Proposal ID最大的提案的Value,作为本次要发起的提 案。如果所有应答的提案Value均为空值,则可以自己随意决定提案Value。然后携带当前Proposal ID,向所有Acceptor发 送Propose请求。
(4)Accept: Acceptor收到Propose请求后,在不违背自己之前做出的承诺下,接受并持久化当前Proposal ID和提案Value。
(5)Learn: Proposer收到多数Acceptor的Accept后,决议形成,将形成的决议发送给所有Learner。

Paxos 算法缺陷:在网络复杂的情况下,一个应用 Paxos 算法的分布式系统,可能很久无法收敛,甚至陷入活锁的情况

相关文章:

  • 512内存 wordpress/中国域名注册官网
  • 苏州吴中网站建设公司/站长工具seo优化
  • 网站建设教程(项目式)/哪里有软件培训班
  • 网站建设费专用票/网站建设定制
  • 做团购网站的公司/免费独立站自建站网站
  • 苏州建筑工程有限公司/杭州seo工作室
  • Spring中自动注入的两种方式
  • 面试基础篇——ArrayList扩容机制
  • Android——8种通知栏-适配 Adnroid12
  • 微服务项目常用术语
  • BASE理论
  • 【Go实现】实践GoF的23种设计模式:代理模式
  • Java多线程案例----单例模式[饿汉模式,懒汉模式]
  • 【图解CAN总线】-7-Classic CAN 2.0总线网络“负载率”计算(方法二)
  • 【C++】引用
  • 编译protoc方法名称被自动大写
  • LabVIEW应用程序exe和安装程序的区别
  • 基于HI3516/HI3518/HI3559内部ADC驱动实现