根据上一篇的叙述,让我们做一个规范总结吧
自从老婆提议家庭生活,家庭全体成员一起献计献策之后,也经历了不短的时间。整个过程中,碰到过不少问题,但在全家的同心协力下,也都得到了解决。一天,老婆提议把过程中沉淀下来的经验和规范汇总起来,我想想也有道理,就做了下面这个汇总:
- 家庭成员明确不同的分工。提议人、决策人、参与人。
其中,提议人和参与人的人数没有限制,视家庭成员而定。但是,决策人的人数最好为奇数,最小人数是3人(3、5、7、9…。不是奇数的话,会碰到我们最早遇到的两个提议相持不下的情况。)
- 整个过程分为三个阶段。提议阶段,决策阶段,通知阶段。
-
- 提议阶段:提议人在这个阶段,可以任意发起提议请求。提议请求可以被更改、抢占。简单起见,我们做了一个规定:新的提议请求可以抢占老的提议请求。
- 决策阶段:决策一旦达成了多数派,就不能被更改。与此同时,达成多数派决议的决策人,还有义务将当前达成的决议告知其他提议人和决策人,告诉大家本轮决策已经达成了,不用绞尽脑汁YY新的提议。
- 通知阶段:决策达成之后,最后一个阶段就是通知阶段。将当前决策的内容告诉参与人。此时要坚守一点原则:不能说谎。当然,这也是中华民族的传统美德,我们家里是每个人都能做到的…
经验和规范总结起来,好像也没有几条,简单易理解,全家人都能遵守。直到有一天,一位搞技术的朋友到我家来做客,无意中聊起这个,我把这个说给他听,他猛地一拍大腿,跳了起来,嚷嚷道:我kao,这不就是分布式Paxos协议的雏形吗!这时我才知道,原来我们家误打误撞之下,也能够跟大师在同一个层面思考问题了。
一切并未结束
规矩是死的,人是活的,哪怕严谨如各种法规和法律,都会有人钻空子,更别提我们家里几个臭皮匠YY出来的了。现有的规矩,后面又逐渐暴露出一些漏洞和不足之处。我在这里列举一二:
- 提议更改抢占没完没了
由于提议阶段可以抢占,后来又发生了几次抢占没完没了的事。仍旧是同样的例子:
老婆:中午不想做饭了,出去吃啥好?
我:我有一个提议,大家想不想听听?(1号提议)
小宝外婆:说来听听。
老婆:登登,你的肯定不靠谱,我也有一个提议。(2号提议,抢占1号)
小宝外婆:那我们就听听琛琛的吧。
我:还是听听我这个吧,我的这个提议肯定更好。(3号提议,又抢占2号)
小宝外婆:那好,登登既然坚持,还是听登登的。
老婆:凭什么他的更好,听我的。(4号提议,叒抢占3号)
小宝外婆:…
我:…
老婆:…
在提议阶段一直相互抢占,一直未进入决策阶段。当然,实际生活中肯定不会出现这种情况,对我来说,这不是找抽吗?但是这个风险本身是存在的。
- 碰到连续有几件事情需要决策,效率不高
一般周末全家出去玩,基本上是一个上午、一个下午,或者是完整的一整天。涉及到去哪玩,开车走哪条路,在哪吃饭等一系列需要决策的问题。如果对每一个问题都这么来一轮,效率太低。而且,这些问题相互之间还有关联性,分开来一个个决策也不好。总不能决定去西溪湿地玩,但是却去钱江新城吃饭,太远了也不现实。
问题总是用来解决的,而且无论是生活还是工作,都是在解决了一个老问题后,等着新问题的到来。有问题不怕,我们需要锻炼的,是坦然面对层出不穷新问题的心态。
写在最后
写了这么多,也该收笔了。正如文章开始引言部分所说,个人的本意还是想以贴近生活,更加通俗易懂的例子,来解读这个号称分布式系统领域最为难懂的Paxos协议。文章没法覆盖Paxos的方方面面, 而只是作为一个引子,希望能够从不同的视角来说明Paxos协议中各种标准和规范的由来。网上关于Paxos的文章那是多如牛毛,想更深入的了解,Google之。个人最近看得比较多的两篇,一个是Google同学写的《Paxos made live》,另一篇是李凯同学写的《架构师需要了解的Paxos原理、历程及实战》,感觉都非常不错,一并推荐给大家。
最后,还是要感谢 克里斯.费利 博士,不管我这篇文章质量如何,下定决心写很大程度上是受到了其《宝宝的量子物理学》系列丛书的影响,家里有小宝宝的同学,也一并推荐给大家,值得买回来读个宝宝听!
转载自:阿里技术发展协会
作者:圭多