paxos算法白话版解释

paxos的原理,网上的资料很多,大家自行搜索,不过最重要的是这篇论文:Paxos Made Simple

这里我只谈下我个人的白话版理解,有不对的地方欢迎大家指正。

假设提案节点为p1,p2,P1的提案id为1,p2的提案id为2

决策节点为a1,a2,a3,a4,a5

p1想赋值v=1,p2想赋值v=2

p1和p2谁也不服谁,那就让决策节点做决定吧,只有至少争取到3个决策节点的支持,才能获胜。

第一回合

p1和p2一起给a1发起了提案。
p1的提案先到了a1这里:
p1: a1你好啊,我要改变v的值,你看行不行?
a1: 没问题,你是第一个来改变v的值的人,你自己设个值就行。
p1: 好的,那就把v的值设成1吧。

这时p2的提案才到:
p2: a1你好啊,我要改变v的值,你看行不行?
a1: 不行啊,我已经接受了p1的提案,把v的值设成1了,你不能改了。

第一回合p1获得了a1的支持,把v设成了1

第二回合

p1和p2一起给a2发起了提案。
p1的提案先到了a2这里:
p1: a2你好啊,我要改变v的值,你看行不行?
a2: 没问题,你是第一个来改变v的值的人,你自己设个值就行。

这时p2的提案赶到:
p2: a2你好啊,我要改变v的值,你看行不行?
a2: 刚才p1已经来过了,不过你的提案id比p1的大,你优先级比他高,我就先设你的值吧。

这时p1的回复到达:
p1: 我来啦,我要把v的值设成1。
a2: 不好意思,刚才p2来了,他的提案id比你的高,我答应设他提供的值了。

最后,p2的回复到达:
p2: 我要把v的值设成2。

第二回合p2获得了a2的支持,把v设成了2

第三回合

p1和p2一起给a3发起了提案。
这次终于轮到p2的提案,先到了a3这里:
p2: a3你好啊,我要改变v的值,你看行不行?
a3: 没问题,你是第一个来改变v的值的人,你自己设个值就行。

这时p1的提案赶到:
p2: a2你好啊,我要改变v的值,你看行不行?
a2: 刚才p2已经来过了,你的提案id比p2的小,我不能答应你。

这时p2的回复到达:
p2: 我来啦,我要把v的值设成2。

第三回合p2获得了a3的支持,把v设成了2

达成共识

第四回合a4把v设成了1,第五回合a5把v设成了2。

a1,a4支持把v设成1,a2,a3,a5支持把v设成2,根据少数服从多数原则,最后决定v的值为2,广播给所有节点知道,大家都统一把v的值设成了2。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值