Paxos分布式系统共识算法?我愿称其为点歌算法…( 三 )


平行宇宙2让我们回到平行宇宙的分叉点,先回顾一下前情,这时听众2已经向话务员1和话务员2发出过报价,并从话务员2那里得知她已经以1块钱的报价接受了《东风破》这首歌的提案 。
那么在这条时间线中,我们让听众2先打给1、2号话务员 。
听众2这时心里会想,我们杰迷们都是有素质的人,尽管我之前想听的是《简单爱》,但听一下《东风破》貌似也挺不错,那么我干脆支持听众1的选择吧 。
于是,报价已被认可的他再次拿起电话打给两位话务员,发起点歌请求 。

Paxos分布式系统共识算法?我愿称其为点歌算法…

文章插图
话务员1和话务员2再次比较听众2这次携带的之前报价,均大于等于本地记录的最高报价,所以接受他的点歌请求 。在更新本地记录的信息后,回复信息给听众2 。
Paxos分布式系统共识算法?我愿称其为点歌算法…

文章插图
于是,听众2的点歌请求也获得了半数以上话务员的承认,那么听众2确认自己点的歌被选定 。
看到这里,是不是似乎感觉世界线产生了收束,难道之后的每一种结果都是《东风破》将被选定?
其实,Paxos算法中最精彩的部分在于它更像是一场博弈,棋局中的每一步,都可能影响最终的结果 。
平行宇宙β让我们把分叉点上的时间,再往前多回溯一点,回到下面这个时间点的状态,这时话务员2刚接受了听众1的点歌请求,而听众2还没有开始打热线电话 。
Paxos分布式系统共识算法?我愿称其为点歌算法…

文章插图
【Paxos分布式系统共识算法?我愿称其为点歌算法…】这次,我们站在上帝视角,让听众2改变一下选择,既然话务员2已经被别人收买了,那么干脆避其锋芒,直接向话务员1、3报价 。
Paxos分布式系统共识算法?我愿称其为点歌算法…

文章插图
可想而知,听众2的报价会被两位话务员都认可 。
Paxos分布式系统共识算法?我愿称其为点歌算法…

文章插图
在收到了半数以上话务员的报价认可后,听众2先向话务员1发起点歌请求 。
Paxos分布式系统共识算法?我愿称其为点歌算法…

文章插图
话务员1比对一下报价,嗯,没有问题,更新本地的记录,接受他的点歌请求 。
Paxos分布式系统共识算法?我愿称其为点歌算法…

文章插图
讲道理,现在的形势对听众2真的是一片大好,只要再打个电话给话务员3,就能够成功点歌了 。
但是这个节骨眼上,听众2的室友喊他了,说:听歌多没意思,咱们一起来打一局刀塔吧 。
听众2一想,没毛病,那我先不点歌了 。
而这时,听众1回过神来了,他在之前报价阶段可是获得过半数以上的认可的,于是他带着之前被认可的报价打电话进来点歌 。
Paxos分布式系统共识算法?我愿称其为点歌算法…

文章插图
可是在两位话务员那里,记录的最高报价已经升到了两块了,于是听众1的点歌请求会被拒绝 。
Paxos分布式系统共识算法?我愿称其为点歌算法…

文章插图
到这,我们梳理一下,听众1的点歌请求得到了1个接受、2个拒绝,也就是说他的提议没有被过半数以上的话务员接受 。
无奈,听众1只能回到第一阶段,从报价开始再重头走一遍流程 。并且这次,他把报价提升到了3块 。
Paxos分布式系统共识算法?我愿称其为点歌算法…

文章插图
三位话务员收到新的报价请求后,都会表示认可,并且返回自己本地记录的信息 。
Paxos分布式系统共识算法?我愿称其为点歌算法…

经验总结扩展阅读