【课程报告八】Paxos Made Simple规则的理解

关于在Paxos Made Simple中提出的P1、P2,我还有许多没有完全理解的地方,听了老师的课,把P1、P2规则的原理在梳理一遍。

论文作者Lamport在列出规则时是循序渐进的,所有的规则直到最后才能解决问题,所以之前的规则都是有缺陷的。

首先,选举出结果的前提是Acceptor要去批准提案,如果Acceptor故意不批准提案,就可能永远选不出结果因此有了第一个规则

P1:An acceptor must accept the first proposal that it receives.

这个条件限制了acceptor上一直的没有提案通过导致系统无法做出决定。

而P1的缺陷是Acceptor各自接受了不同的提案,导致最后互不相让,找不到一致的多数派,选不出结果。(例:A、B、C、D、E节点,A、B接受提案1,C、D接受提案2,E接受提案3。没有任何提案达到多数派原则)

为了解决这个问题,又规定节点可以接受新的提案以达成某个提案的多数派条件。

为了识别提案从而达到某个提案被多数派节点接受,给每个提案进行编号。(注意:不同编号只代表不同提案,到此编号不一定要决定提案的顺序)

但允许节点接受新的提案又出现了新的问题:如何保证在某个提案的批准过程中保证它不会因某些节点接受其他新提案而失去它的多数派节点或出现其他多数派节点。(例:A、B、C、D、E节点,T时A、B、E接受提案1,C、D接受提案2,提案1被接受。而在提案1的批准过程中,E节点收到提案2并接受了这个新提案,导致现在的多数派提案是提案2。)

也就是说需要通过某种手段干预,保证最终的选举结果(提案内容)不能发生变化,于是有了

P2:If a proposal with value v is chosen, then every higher-numbered proposal that is chosen has value v .

同样得,P2也有一定的问题,即如何保证后面的(higher-numbered)提案一定是前面提案的值。

P2a给出加强:

If a proposal with value v is chosen, then every higher-numbered proposal accepted by any acceptor has value v .

P2a规定在接受时后面的(higher-numbered)提案一定要是前面提案的值(而非被选择决定时)。

这里又出现了问题:若某个从来没接受过提案的节点,收到的第一份提案是一份更高编号的提案,但内容与选举结果不同,而为了满足P1,他又必须接受该提案,这就与P2a产生了冲突。

要解决P2a的漏洞,就必须对proposer加以限制,一旦选举结果已经出来了,proposer就不能乱发提案,所以有了P2a的加强版约束条件P2b:

If a proposal with value v is chosen, then every higher-numbered proposal issued by any proposer has value v .

节点发起提案的时候,如何知道有没有提案成为决议,他需要找到一个多数派Acceptor集合S来批准这份提案,S满足

(a) no acceptor in S has accepted any proposal, or

(b) v is the value of the highest-numbered proposal among all proposals accepted by the acceptors in S.

两个条件限定了集合S的值一定满足被选择的条件从而裁定这个节点发起的提案是否合法。

再加上编号的限制,即P2c:

For any v and n, if a proposal with value v and number n is issued, then there is a set S consisting of a majority of acceptors such that either (a) no acceptor in S has accepted any proposal numbered less than n, or (b) v is the value of the highest-numbered proposal among all proposals numbered less than n accepted by the acceptors in S .

但集合S也有可能在过程中成为非法集合,必须保证Proposer不能乱发提案,同样的,Acceptor也不能乱批准提案!

有了成熟的规则限定,Paxos的架构得以成立。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值