PAXOS实现之team building描述

参考书籍:《从Paxos到ZooKeeper-分布式一致性原理与实践》

这两天在看paxos算法,看到很多版本的理解和比喻,今天看教程终于感觉看懂了一点,于是打算自己描述一下试试.

然而发现后面看不懂.....T^T 总之先发出来,有好心人一起交流下。

背景: 某公司组织团建活动,有3个备选去处,需要挑选出一个,上报给公司管理部门申请团建流程。

目的地:香港、东京、新加坡

决策人(Acceptor):李总、张总、杨总

投票人(Proposer):员工1,员工2,员工3.......员工n(这里的1,2,3等数字不代表投票顺序)

规则:每位员工都可以选择一个想去的地点,作为提案,微信发消息给3位决策人;决策人收到消息后,在公司的内部系统上决定 [批准] or [驳回];当半数以上的决策人批准去某个地方时,该提案就被选定了。介于此处有3位决策人,也就是说,如果2位都批准了香港,那么团建就去香港。

以上是基础规则,然而这个规则会遇到很多问题,需要逐一补充完善;首先

[问题一]

如果所有人都选了同一个地方,但该地方又被3位决策人驳回,会导致这轮投票选不出团建地点

比如,李总不想去东京;这时他收到了来自员工1的提案[东京];于是驳回了员工1,等待有人发给他[香港]或[新加坡]。结果所有员工发给李总的都是东京,于是李总驳回了所有人的提案,啥也没批准。张总,杨总也是一样。

于是场面就十分尴尬了。。。。由于3位领导都不喜欢东京,所以都没有批准东京,但所有人都只投了东京,没有其它提案,导致本轮啥也没选出来。

[解决方法]

规则补充:决策人必须同意自己收到的第一个提案

这样,即使李总,张总,杨总都不喜欢东京,但由于收到的第一个提案是东京(不管来自哪位员工),东京会被批准;

而后续也没有再收到任何其它地点,所以最终会批准东京。

这就保证了哪怕只有一个提案被提出,也仍然可以选出一个。

[问题二]

3个人都批准了不一样的地点,等于啥也没选定

如:

张总:东京

李总:香港

杨总:新加坡

[问题三]

即使某个地点被差不多一半的人选中了,但有一个决策人故障,就会导致选不出

如:

张总:东京

李总:东京

杨总:新加坡

但周一李总没来上班,也联系不上,导致张总批准东京,杨总批准新加坡;还是等于啥都没选定

【解决方法】:

规则:允许一个决策人批准多个提案,比如

张总:东京,香港

李总:东京,新加坡

杨总:东京,新加坡

那么即使周一联系不上李总,东京仍然以2票获胜成为团建地点(李总失联,东京:香港:新加坡 = 2:1:1)。

 

但此时又引发了一个新问题

【问题四】

又回到了可能发生多个提案被选定的情况;由于决策人可以批准多个提案;如果批准状况如下:

张总:东京,香港

李总:东京,新加坡,香港

杨总:东京,新加坡,香港

会导致【东京】和【香港】都被选定为团建地点

【解决方法】

此处我们要引入一个【全局唯一编号】,来标识每一个被决策人批准的提案;【编号,地点(值)】

【全局唯一】的意思是指,用来表示id的数字只会出现一次,而且是全序递增的。

增加规则:虽然允许多个提案被选定,但同时也必须保证所有被选定的提案都有相同的值;注意此处的提案不等同于地点了,而是【编号,地点(值)】共同表示一个提案

即:

如果编号为M0,Value为V0的提案被选定【M0,V0】,那么所有M0编号更高的,且被选定的提案,其Value值也必须是V0。

例如:

张总:【1,东京】,【2,香港】

李总:【3,东京】,【4,新加坡】,【7,香港】

杨总:【5,东京】,【6,香港】

此时【东京】被选定,那么

我就不知道上面这句要怎么解释了!!!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值