美文网首页
共识算法【Paxos】

共识算法【Paxos】

作者: 江海小流 | 来源:发表于2020-03-15 13:23 被阅读0次

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接受多个提议的情况,此时这多个提议的值是一样的;

相关文章

  • 什么是paxos 协议???

    paxos 算法总结 paxos 共识算法的三个角色 proposers 提案者向接受者(acceptor) 提交...

  • Paxos算法——科普贴(下篇,设计之美)

    接上篇:Paxos算法——科普贴(上篇,共识问题+故障是常态) Paxos算法由图灵奖得主Leslie Lampo...

  • 分布式共识算法

    分布式共识算法 分布式共识(Consensus):Viewstamped Replication、Raft以及Paxos

  • 共识算法【Paxos】

    Preliminary 系统包括: Acceptor Proposer Learner Proposer生成一项提...

  • 共识算法 - Paxos算法

    1. 什么是 Paxos 算法 Paxos 算法由图灵奖获得者 Leslie Lamport 于 1990 年提出...

  • Paxos算法

    Paxos算法是一种基于消息传递的协商共识的算法,Paxos已经成了分布式系统最重要的理论基础,几乎是共识的代名词...

  • Paxos 算法

    共识算法:Paxos 算法 1. 目录 [TOC] 2. 共识问题 [1] 什么是共识问题?粗略地说,该问题是在一...

  • Paxos算法、Raft算法、拜占庭、PBFT 算法、POW算法

    Paxos共识算法 Paxos共识算法,在工程角度实现了一种最大化保障分布式系统一致性(存在极小的概率无法实现一致...

  • 晦涩的Paxos

    什么是paxos? Paxos是用于解决分布式系统中一致性问题的共识算法(Consensus Algorithm)...

  • 分布式共识算法1-概述

    2 传统分布式共识算法 2.1 2PC提交 2.2 3PC提交 2.3 paxos算法 2.4 zab算法...

网友评论

      本文标题:共识算法【Paxos】

      本文链接:https://www.haomeiwen.com/subject/klcqehtx.html