Paxos的个人理解

正在wiki上学习Paxos算法。因为全英文,理解起来有困难,所以这里做个小搬运,以便自己日后翻看。

角色

Paxos中,一个处理器可以同时扮演几种角色且不影响协议的正确性。角色可以分为以下几种:

1.Client

Client向分布式系统提出request,并等待回应。例如,向一个分布式文件服务器提出写请求

2.Acceptor(Voters)

Acceptor是作为"Memory"的存在。Acceptors被划进名为"Quorums"的组中,以组成员的形式存在。任何基于Acceptor的行为都要通过它所属的Quorum来传递

3.Proposer

Proposer拥护Client的request请求,试图说服Acceptor去接受;此外,它还扮演了Coordinator的职位,当冲突发生时推动协议前进

4.Learner

当一个Client Request被Acceptor同意时,Learner采取行动,运行Request,并向Client回应

5.Leader

Paxos允许一个特别的Proposer(即Leader)来make progress。

Basic Paxos

Basic Paxos是最为基本的Paxos协议,一个Basic Paxos可能会持续多个回合。一个成功的周期包括了如下的两个Phases:

Phase 1

Phase 1a: Prepare

一个Proposer负责发起提案,我们称之为"Prepare",它只拥有一个id(n)。n必须大于此Proposer之前使用过的任何id。
然后它将这个 Prepare 发送给一个 Quorum。如果它没有与任何Quorum沟通成功,就不能进入下一个Phase。

Phase 1b: Promise

如果一个Acceptor接受了一个Prepare with id=n,它就必须查看它直接接收过的所有id的最大值n_max。有两种情况:

case1:

如果n > n_max,那么Acceptor就会回应一个Promise,保证自己忽略接下来所有 id < n的 Prepare。除此之外,如果Acceptor之前接收过其它 Prepare,就必须在 Promise 中包含最近的 id 和 value。

case2:

n <= n_max,Acceptor直接忽略此 Prepare

Phase 2

Phase 2a: Accept

如果一个Proposer收到足够的Promises,它就必须为它的Proposal设定一个value。如果所有Acceptor都没在之前接收过Proposal,v=它最先想要提议的值x;反之v=返回值中最大的一个
接下来,Proposer向Quorum发送一个 Accept 信息 (n, v)。这个 Accept 应该被理解为 Request,意思是:"请接受这个提议吧!"

Phase 2b: Accepted

如果一个Acceptor接收到一个Accept且它并没有作出Promise,它就必须accept,且向Proposer和每个Learner回应一个 Accepted。否则,它就应该忽略。

Multi-Paxos

Basic Paxos会导致很多开销。然而如果存在一个稳定的Leader, phase 1就不必要了(也就是验证此Proposer与Quorum的连通性的过程)。
为了实现这个思想,Round 1中,同一个Leader会递增它的value值,从而使Basic Paxos的4-delays减少到2-delays。
总体实现思路大致就是一个或多个阉割版的Basic-Paxos,一次周期被称为一个 "instance" of a Basic Paxos。

Fast Paxos

Fast Paxos归纳总结了 Basic Paxos,减少了 end-to-end 消息延迟。在Basic Paxos中,requestlearning之间存在3个 message-delay。Fast Paxos允许2个 message-delay,但有一些附加要求:
1.系统必须包含3f+1个Acceptors,以允许最多f个faults
2.Client能够向多个目标提交request
Intuitively,如果一个Leader没有需要propose的value,那么Client就可以直接向Acceptor发送 Accept!请求(注意区别)。Acceptor的回应与Basic Paxos中一样。
如果Leader发现了冲突,它也能够发送Accept!请求以开启新的一轮。

待补充

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Paxos是什么 Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有...
    jiangmo阅读 5,414评论 0 6
  • 持续更新 如何浅显易懂地解说 Paxos 的算法? 参考资料 #8:知行学社的分布式系统与Paxos算法视频课程,...
    xiewen阅读 16,955评论 0 44
  • 0.前言 本文记录笔者学习和理解区块链共识算法Paxos的点滴,文章比较长,需要耐心来细细琢磨,笔者也是苦战了一个...
    WallisW阅读 8,488评论 2 14
  • 本文分为4个部分。第一部分讲解分布式系统重要的基本概念和理论,第二部分讲解拜占庭将军问题,第三部分讲解传统分布式共...
    youclavier阅读 8,984评论 2 3
  • 城市心脏 一边是现在热烈辉煌 万家灯火 一边是过去宁静如水 洁白如雪 抚慰潮流两岸 抵达城市心脏 母亲最操心 松雅...
    棠坡书屋杨英阅读 3,535评论 2 11

友情链接更多精彩内容