美文网首页
Paxos的个人理解

Paxos的个人理解

作者: Mick米壳 | 来源:发表于2019-04-01 10:49 被阅读0次

正在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!请求以开启新的一轮。

待补充

相关文章

  • Paxos的个人理解

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

  • paxos算法个人理解

    paxos算法 常常在有关分布式的文章中看到paxos算法,于是学习了一下此经典算法,下面记录的是我的一些个人理解...

  • zookeeper分布式应用程序协调服务,Paxos协议

    知识要点: Paxos协议详解 Paxos协议理解示例 Google Chubby的作者Mike Burrows说...

  • Zookeeper动物管理员-概述-读书笔记1

    在说Zookeeper之前需要先理解一下Paxos算法,理解完Paxos算法之后我们在看Zookeeper,以及Z...

  • zookeeper原理

    理解zookeeper需要了解paxos算法,zookeeper是paxos算法的工业级实现。 #### Paxo...

  • 理解分布式一致性:Paxos协议之Generalized Pax

    在前面一篇文章我们讲到了理解分布式一致性:Paxos协议之Cheap Paxos & Fast Paxos,本篇文...

  • Paxos和Raft快速理解

    Paxos和Raft快速理解 Paxos一致性协议 Paxos问题指分布式系统中存在故障fault,但不存在恶意c...

  • 理解Paxos算法

    理解Paxos算法 1. 背景 Paxos是一种分布式一致性算法,该算法由Leslie Lamport在论文[Th...

  • 关于Paxos的理解

    Paxos作用 功能: 在多个节点协同工作的场景下,一致性地决定一个变量的值 理解的重点 在每一个中间条件被推导出...

  • Paxos的简单理解

    数据备份是为了数据的安全些,比如数据库系统,一主一备是基本的配置。当同一数据储存多份之后,每份数据之间理论上应该是...

网友评论

      本文标题:Paxos的个人理解

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