本文是对Paxos算法的证明,如有错误请指正。
表面上看,Paxos像是一个Quorum
算法再加上二阶段提交(2PC)
。但并非是的二者相加。
Paxos算法需要证明,如果存在已经达成的共识,在节点的任意一个多数派中,ProposalID最大的那个决议必然存有当前共识内容。
算法流程请参照Paxos算法学习笔记
存在已达成的共识是{n0,v0}
,在节点的任意一个多数派中,一定存在ProposalID最大的决议**{nx,vx}
**符合**nx>=n0 && vx=v0
**。
为了简便,缩写为命题A。
当只有一个提案并达成共识时。
显然,共识的ProposalID是所有决议中最大的nx=n0 && v=v0
。结论成立。
假设新的提案是为{n1,v1}
,n1=n0+1
,根据Paxos流程:
Preapre阶段
{nx,nx}
必然符合nx>=n0 && vx=v0
。Accept阶段
由于提案内容vx=v0
,提案为{n1,v0}
,在Accept阶段会有两种情况。
proposalValue
非v0
的Acceptor,接受了提案。共识的集合扩大。命题A成立。proposalID
小于n1
的Acceptor,接受了提案,proposalID
变大,proposalValue
还是v0
。命题A成立。综上所述,可得出结论命题A成立。
根据命题A可推断出未来达成的所有共识{n,v}
必然符合n>=n0 && v==v0
。
可得出结论,Paxos算法成立。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有