前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >paxos算法白话版解释

paxos算法白话版解释

作者头像
zhanyd
发布2022-05-16 13:51:40
1890
发布2022-05-16 13:51:40
举报
文章被收录于专栏:编程我也会

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

Paxos Made Simple(https://lamport.azurewebsites.net/pubs/paxos-simple.pdf)

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

假设提案节点为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。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程我也会 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一回合
  • 第二回合
  • 第三回合
  • 达成共识
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档