引言
前段时间,老婆给家里一岁半的小宝买了一套 克里斯.费利 博士的《宝宝的物理学》丛书,包括 《宝宝的量子物理学》,《宝宝的牛顿力学》,《宝宝的光学》等。小宝爱不释手,天天缠着我们读给他听,在整个过程中我也有很大的收获。在同一时间,由于工作需要,我也一直在啃计算机分布式系统中号称最难理解的协议——Paxos。看PPT、读论文、找相关文章,跟同事讨论,一段时间下来,总的来说也有一定的收获。两件事一结合,当时就萌生了一个想法,我能不能也像 费利 博士这样,用比较通俗易懂的文字(图画做不到,没这个功底…)来描述Paxos,让更多的人能够理解,进而使用。
有了这个想法后,一发不可收拾,隔三差五就会从大脑中蹦出来,我也一直在构思应该怎么来写,如何动笔,时至今日,感觉基本上成熟了,也就落笔开始了下面的这篇文章。全文以家庭中的日常生活为背景,以生活中的小例子为引子(故事情节纯属YY…),来逐步揭开Paxos协议的原理,希望阅读的朋友们能够从中获益!
什么?老婆要在家里搞民主…
故事是这样开始的。作为一个典型的技术人,经常被老婆说是一根筋,除了技术,生活中的很多常识都不懂。正因如此,生活中的大小事宜,都是由老婆大人一手操办,而我也落得清闲。
但是,不久前的一天,老婆不知道哪根筋抽着了,突然跟我说:家里所有的事都有她来操办决策,不太好,希望全家人都能一起来献策献计,家庭也能够更加和谐。当时我一听就懵逼了,这唱的是哪一出戏?连忙回应道:现在这样很好,非常和谐,老婆您能者多劳,家里由你来主政,那一切必须是妥了又妥。但是,很多阅读此文的男性朋友大概也能感同身受,一旦老婆决定的事,那是很难更改的。因此我们全家也就被迫进入了一个全民献计献策的时代…
全民献计第一战,明确分工
先简单介绍下我们家的成员情况。我、老婆、一岁半的小宝,外加老婆的父母(跟我们一起住,帮我们来带小宝),五口人蜗居在杭州的一小间公寓里,过着简单的生活,全家倒也是其乐融融。
进入全民献计之后,由于小宝还小,自动被我们给忽略了。小宝的外公外婆也发话了:对杭州不熟,因此提不出太多意见,我们的意见提出来,他们一起决策倒是可以。数来数去,全民献计,只有我硬着头皮上了。开始我也反复琢磨,老婆虽然说是这么说来着,但是伴君如伴虎,谁知道真实的想法是啥啊。再加上对于生活中的大小事宜,我也确实缺乏想象。因此刚开始我也不敢对家庭生活中的各种事项妄加评论,还是以老婆大人马首是瞻。但是这样一来,又惹老婆不高兴了。没办法,那就尽量参与,提提意见呗。至此,家庭中的五人,第一轮分工完毕,对于家庭生活中的事宜,老婆和我共两人可以提出意见和建议,老婆、我外加小宝外公外婆可以进行决策,小宝太小,作为被动的接受方。
为了能够胜任新的职责,我也是好好恶补了一下各种生活小常识,对于日常中经常讨论的吃什么、去哪玩等问题,我也渐渐能够提出一些比较好的意见,能够被全家所接受。为此,老婆还好好的表扬了我一番。不知道哪一位先贤哲人曾经说过:权利是最好的chun药。太有道理了,对生活一两次指手画脚之后,尝到了瘾头,发现根本停不下来。慢慢的一些问题也凸显了出来,其中最大的一个问题,是家庭四人决策小组,有时候根本达不成一致。经常出现我跟小宝外公赞同一个方案,老婆和小宝外婆赞同另一个方案的情况,2 vs 2,经常僵持不下… 这种事情多了,难免会影响家庭和谐。这个时候,还是小宝的外公识大体,主动要求退出家庭决策圈,剩下3人决策,对于两个提案,总不至于再出现打平手,这个最大的问题也就迎刃而解。经过一段时间的摸索,对老婆提的家庭全民献计的想法,也有了一定的心得,将家庭人员分工明确了下来:
- 提议人:老婆、我。两人。
- 决策人:老婆、我、小宝外婆。三人。
- 参与人:小宝外公、小宝,外加小宝外婆、老婆和我。五人。
一波未平一波又起,你不能总是变
家庭人员分工明确之后,全民献计基本上进入了正轨。大部分时候,还是老婆的生活经验最为丰富,建议也最多,三人一起表决通过,皆大欢喜。少部分时候,我也能够灵光一现,出一些鬼点子,老婆和小宝外婆外公也很满意。难得针对一件事,我跟老婆有不同的想法,每个想法先各自占有一票的情况下,小宝的外婆也能选择其中一方,形成2比1的投票结果,少数服从多数。小宝的外公落得清闲,全家人一起干啥他都是乐呵呵。而小宝呢,只要跟妈妈在一起,也是干啥都开心。
看起来是没有任何问题了,但生活上就是这样,一波未平一泼又起,这次出问题的是小宝外婆。小宝外婆有一个特点,比较善良,也比较纠结。在少数几次我跟老婆都有提议的时候,小宝外婆经常会改变主意。以中午出去吃啥为例,一个典型的场景如下:
老婆:中午不想做饭了,出去吃啥好?
我:吃XXX吧,好久没吃了。
小宝外婆:嗯,这个可以。
老婆:这个不好,上次吃过了,还是YYY吧。
小宝外婆:好好,想吃这个好久了。
我:要不ZZZ也不错,我朋友们一直推荐。
小宝外婆:听起来不错,去试试。
老婆:… …
小宝外婆:… …
我:… …
最后,老婆受不了了:妈,您老不能总是变来变去啊… 这不,又得立规矩了不是。经过家庭决策小组(小宝外公也参与了)的多次讨论,在明确分工之外,又新增了一条新规矩:如果一个方案已经在决策小组中获得了多数派的认同,那么就不能被改变了。针对前面提到的典型场景,如果使用了这条新规矩,会怎么样:
老婆:中午不想做饭了,出去吃啥好?
我:吃XXX吧,好久没吃了。
小宝外婆:嗯,这个可以。(画外音:此时我的方案已经被我和小宝外婆同时认可,形成多数派,不可更改。)
老婆:这个不好,上次吃过了,还是YYY吧。
小宝外婆:这次就听孩他爸的吧,下次再换YYY。
我:OK。
老婆(内心哪怕不情不愿):OK。
我:小宝外公,小宝,我们中午去吃XXX咯。(画外音:要把决策下来的方案告诉全家人不是)
感觉一切都搞定了,小宝外婆少了纠结,生活中的各种决策更加高效。虽然家庭生活本不是以高效为目的,但立下规矩,更快的达成一致,也能从某种程度上提升和谐指数。
没想到啊没想到,献计献策变成了处处抢占先机
生活中和工作中,每当我们认为所有的问题都得到解决时,后面接踵而来的新问题很快就会戳穿这个假象。有了明确的提议人、决策人、参与人的分工,又有了一条新规矩,难道还有什么问题是搞不定的?有,新问题不仅有,而且还不止一个,而且追根溯源,还都是新定的这个规矩惹的祸。
第一个暴露的新问题,来自小宝的外婆。前面也提到,小宝外婆为人比较善良,也比较纠结。新规矩实施之后,每当她刚同意一人,形成多数派决议之后,提案就不能被更改了。但是小宝外婆看到另外一人欲言又止,心里又觉得过意不去。而且,每次都这么杀伐果断,没有个稍微纠结一下的机会,也比较痛苦。
如果说第一个暴露的问题还好的话,那么第二个问题就更加严重一点。根据新规矩,基本上是谁先给出提案,谁就能达成多数派的决议。发展到后面就演变为我和老婆两个提议人,都不管提议本身的好坏,抢到先机再说。提议质量没法控制,家庭的生活质量也就随之下降,跟我们的本意反而背道而驰了。
没办法,决策小组继续坐下来一起思考应对之策,这次就比较花时间了,全家人一起想了许久,都没有很好地解决办法。正当大家像无头苍蝇一样乱撞之时,不得不说,还是老婆聪明,想到了一个顶顶好的解决办法,这个解决方法,说起来比较简单:
- 针对处处抢占先机,一轮决策后就不能更改的情况。将现在的一轮决策改为两轮:
- 第一轮:提议阶段。在这一阶段,我跟老婆可以发起提议,小宝外婆作为决策者,可以选择听谁的提议,但是不做决策。
- 第二轮:决策阶段。在听了提议后,进入决策阶段,此时小宝外婆可以选择赞成这个提议,也可以选择反对这个提议。
- 两轮中,第一轮提议阶段可以纠结,可以更改。第二轮决策阶段,这个跟前面提到的规矩保持一致:一旦决策阶段达成了多数派的决议,就不能更改。
仍旧是上面生活中同样的例子,现在会变成什么样子:
老婆:中午不想做饭了,出去吃啥好?
我:我有一个提议,大家想不想听听?(第一阶段:提议)
小宝外婆:说来听听。
老婆:登登(我的小名),你的肯定不靠谱,其实我也有一个提议。
小宝外婆:那我们就听听琛琛的吧。(画外音:提议阶段,可以更改。这一下小宝外婆的问题解决了。)
我:我的提议是…
小宝外婆:登登,你的提议机会被琛琛抢了。(画外音:提议被抢占,我的当前提议作废。)
老婆:我们去YYY吧。
小宝外婆:好,听你的,去YYY。(画外音:决策阶段,老婆和小宝外婆两人形成了多数派的决策,不能更改了。)
我:其实我本来想说是去XXX的。但既然大家都同意去YYY,那就去YYY。小宝外公,小宝,我们中午去YYY咯!(画外音:提议形成多数派的决议之后,就不能被更改,只能被接受。与此同时,我还有义务将接受的提议传达给参与人,小宝外公和小宝。当然,这里我不能撒谎,如果我撒谎了,跟小宝外公和小宝说我们全家最后决定去XXX,那么这两位就被我带到沟里去了…)
在老婆给出一个顶顶好的解决办法之后,在原有的基础上,我们全家也尝试实施这个新的两轮的提议方案,在实施的过程中也尝试不断地完善,前面提到的小宝外婆的问题,和一股脑儿处处抢占先机的问题,看起来也都得到了解决。
下篇更精彩,总结部分
转载自:阿里技术发展协会
作者:圭多