共识算法【Paxos】

Preliminary

系统包括:

  • Acceptor
  • Proposer
  • Learner

Proposer生成一项提议,发送给AcceptorAcceptor如果接受该提议,那么系统所有成员达成共识(即:该提议生效),通过Learner获取共识的内容。

可能存在的问题:

  • 如果有多个Acceptor,会出现多个Acceptor同时接受多个不同的提议的情况;
  • 如果只有一个Acceptor,一旦Acceptor出现故障,那么系统将无法运作;

PS: 下文中的接收是指收到一个请求,接受是指 accept 一项提议。

算法流程:

第一阶段

  1. Proposer 生成一个系统下唯一的ID:n;
  2. Proposer 向大多数 Acceptor 发送prepare请求(附带 n),目的是需要得到 Acceptor 的如下承诺:
    • Acceptor 需要忽略掉 ID 小于n 的请求
  3. Acceptor 如果接收到上述请求,如果 Acceptor 接收过其他 Proposer 发送的prepare请求且对应的ID如果大于 n,那么忽略该请求(不给出承诺),否则回复上述请求。回复的内容包括:
    • Acceptor 接受过的 ID 小于 n且最接近 n 的 某一项提议(抽象为一个值 v
    • 如果没有,则返回空

第二阶段

  1. Proposer 如果接收到大多数 Acceptor 的回复,Proposer 向大多数 Acceptor 发起 accept请求。请求的内容包括:
    • 这些回复的提议中 ID 最大的那项提议的值,如果没有则自拟一项提议
    • prepare请求中发送的 n
  2. Acceptor 接收到 accept 请求时,假设对应的提议ID为n。如果该 Acceptor 做过不接受ID小于m的提议的承诺,那么就忽略掉该请求,否则则接受这项提议。

第三阶段Learner 收集所有 Acceptor 接受的提议,完成共识算法。

分析

  1. 一旦系统达成共识,那么该共识就不会改变,比如:

    • Proposer 1 发送一项提议给大多数的 AcceptorProposer 1获得大多数 Acceptor 的回复后,拟定一项提议Proposal 1发送给 Acceptor达成共识;
    • Proposer 2 如果要发送另外一项提议给大多数 Acceptor,这些 Acceptor 中的部分已经接受了 Proposal 1,根据上述算法,Proposer 2 只能提出提议 Proposal 1Acceptor
  2. 存在不同的 Acceptor 接受不同的 Proposal,比如:

    • Proposer 1 发送一项提议Proposal 1给大多数的 Acceptor ,在一部分 Acceptor未接受这项提议时,另外一个 Proposer 2 发起了另一项提议Proposal 2 给这些 Acceptor
    • 因为 Proposal 2 的ID要比 Proposal 1 的ID要大,因此这部分既收到了 Proposer 1 发送的 prepare 请求又收到了Proposer 2发送的prepare请求的 Acceptor 肯定只会接受 Proposal 2
    • 这种情况只有在 Proposer 2 发送 prepare请求的 Acceptor都没有接受 Proposal 1时才成立 ;
  3. 少数 Acceptor 出现故障,不会影响系统的正常运行;

  4. 存在一个Acceptor接受多个提议的情况,此时这多个提议的值是一样的;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 0.前言 本文记录笔者学习和理解区块链共识算法Paxos的点滴,文章比较长,需要耐心来细细琢磨,笔者也是苦战了一个...
    WallisW阅读 3,289评论 2 14
  • paxos 声明: 本文思路完成模仿 朱一聪 老师的的 如何浅显易懂地解说 Paxos 而得,版权属于 朱一聪 ...
    姚钢强阅读 828评论 0 1
  • 今天整理了一下之前写过的一个下拉刷新的小控件demo,已上传到github. 效果图如下 :(目前水平较水,录制的...
    AnnieAri阅读 138评论 0 0
  • 风静树静心不静 愁来眉锁三分 小窗独坐诉黄昏 十年期一梦,一梦化烟尘。 莫道苍天怜我少 只缘因果缠人 南陈言说未成...
    词韵清心阅读 272评论 0 0
  • 蓝天白云水溪溪 青山怀抱张山寨 山水魂牵古方塘 依韵雅致梦故里 胡源风光甲天下 滋润百花兆丰泽 旧辞新貌腾蛟龙 携...