paxos的提案生成--看书有感

书籍是《从paxos到ZooKeeper分布式一致性原理与实践》
下面这个链接是看书一头蒙时,看这个突然懂了的,虽然和书上基本上一样,感觉很玄学,可能是在电脑上的原因吧,哈哈

https://www.jianshu.com/p/d9d067a8a086

首先给出理论:
p1:一个acceptor必须准他收到的第一个提案
p2:如果编号为M0,value值为V0提案被选定了,那么所有比编号M0更高的,且被选定的提案,其value值也必须是V0。
p2a:如果编号为M0,value值为V0提案被选定了,那么所有比编号M0更高的,且被acceptor批准的提案,其value值也必须是V0。
p2b:如果一个提案【m0,v0】被选定后,那么之后任何的Proposer产生的编号更高的提案其value值都是v0.
p2c:对于任意的mn和vn,如果提案【mn,vn】被提出,那么肯定存在一个由半数以上的acceptor组成的集合s,满足以下条件中的任意一个:
1.s中不存在任何批准过编号小于mn的提案的acceptor。
2.选取s中所有批准过acceptor批准过的编号小于Mn的填,其中编号最大的那个提案其value值是V0。
其中p1到p2c是逐步增强的。

现在来说一下自己的理解。
首先是在众多的提案中只能有一个提案被通过,且后续的提案的值只能是已经通过的提案的值。
否则就可能出现多个提案被批准,这个是破坏了paxos的安全性的。
所以首先得一个就是:
p3:只有一个提案被批准,且后续的提案的值只能是之前已批准的提案的值(如果之前没有提案被批准,那么就通过这个提案),否则不通过。

所以如果能够理解了这个那么上面的p1到p2c都是不难理解的。

下面来证明p2c:
这个p2c就是最终的提案的选定策略(我觉得,哈哈):
如果之前已经有一个提案【m0,v0】被批准了,那么后续的提案的编号只能是大于m0的,并且如果新的提案【m0+1,v1】被批准了,那么由于之前已经有一个提案了,此时为了安全性如果这个新的提案被批准那么必定是满足一个条件就是其值为v0,即v1 = v0。
上面的证明很简陋,但是我唔得还是能够说明问题的。
这样会觉得有点啰嗦,但是还是要提一下:
就是条件约束是:如果之前有一个提案被批准了,那么后面的通过的编号更大的提案被通过了。
所以保证提案的唯一性所以如果acceptor接收新的提案,那么新的提案的值,只能和之前的已通过的编号最大的提案的值是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值