生活中的Paxos,原来你我都在使用——对Paxos生活化的解读(一)

简介: 引言 前段时间,老婆给家里一岁半的小宝买了一套 克里斯.费利 博士的《宝宝的物理学》丛书,包括 《宝宝的量子物理学》,《宝宝的牛顿力学》,《宝宝的光学》等。小宝爱不释手,天天缠着我们读给他听,在整个过程中我也有很大的收获。在同一时间,由于工作需要,我也一直在啃计算机分布式系统中号称最难理解


引言

前段时间,老婆给家里一岁半的小宝买了一套 克里斯.费利 博士的《宝宝的物理学》丛书,包括 《宝宝的量子物理学》,《宝宝的牛顿力学》,《宝宝的光学》等。小宝爱不释手,天天缠着我们读给他听,在整个过程中我也有很大的收获。在同一时间,由于工作需要,我也一直在啃计算机分布式系统中号称最难理解的协议——Paxos。看PPT、读论文、找相关文章,跟同事讨论,一段时间下来,总的来说也有一定的收获。两件事一结合,当时就萌生了一个想法,我能不能也像 费利 博士这样,用比较通俗易懂的文字(图画做不到,没这个功底…)来描述Paxos,让更多的人能够理解,进而使用。

有了这个想法后,一发不可收拾,隔三差五就会从大脑中蹦出来,我也一直在构思应该怎么来写,如何动笔,时至今日,感觉基本上成熟了,也就落笔开始了下面的这篇文章。全文以家庭中的日常生活为背景,以生活中的小例子为引子(故事情节纯属YY…),来逐步揭开Paxos协议的原理,希望阅读的朋友们能够从中获益!

什么?老婆要在家里搞民主…

故事是这样开始的。作为一个典型的技术人,经常被老婆说是一根筋,除了技术,生活中的很多常识都不懂。正因如此,生活中的大小事宜,都是由老婆大人一手操办,而我也落得清闲。

但是,不久前的一天,老婆不知道哪根筋抽着了,突然跟我说:家里所有的事都有她来操办决策,不太好,希望全家人都能一起来献策献计,家庭也能够更加和谐。当时我一听就懵逼了,这唱的是哪一出戏?连忙回应道:现在这样很好,非常和谐,老婆您能者多劳,家里由你来主政,那一切必须是妥了又妥。但是,很多阅读此文的男性朋友大概也能感同身受,一旦老婆决定的事,那是很难更改的。因此我们全家也就被迫进入了一个全民献计献策的时代…

全民献计第一战,明确分工

先简单介绍下我们家的成员情况。我、老婆、一岁半的小宝,外加老婆的父母(跟我们一起住,帮我们来带小宝),五口人蜗居在杭州的一小间公寓里,过着简单的生活,全家倒也是其乐融融。

进入全民献计之后,由于小宝还小,自动被我们给忽略了。小宝的外公外婆也发话了:对杭州不熟,因此提不出太多意见,我们的意见提出来,他们一起决策倒是可以。数来数去,全民献计,只有我硬着头皮上了。开始我也反复琢磨,老婆虽然说是这么说来着,但是伴君如伴虎,谁知道真实的想法是啥啊。再加上对于生活中的大小事宜,我也确实缺乏想象。因此刚开始我也不敢对家庭生活中的各种事项妄加评论,还是以老婆大人马首是瞻。但是这样一来,又惹老婆不高兴了。没办法,那就尽量参与,提提意见呗。至此,家庭中的五人,第一轮分工完毕,对于家庭生活中的事宜,老婆和我共两人可以提出意见和建议,老婆、我外加小宝外公外婆可以进行决策,小宝太小,作为被动的接受方。

为了能够胜任新的职责,我也是好好恶补了一下各种生活小常识,对于日常中经常讨论的吃什么、去哪玩等问题,我也渐渐能够提出一些比较好的意见,能够被全家所接受。为此,老婆还好好的表扬了我一番。不知道哪一位先贤哲人曾经说过:权利是最好的chun药。太有道理了,对生活一两次指手画脚之后,尝到了瘾头,发现根本停不下来。慢慢的一些问题也凸显了出来,其中最大的一个问题,是家庭四人决策小组,有时候根本达不成一致。经常出现我跟小宝外公赞同一个方案,老婆和小宝外婆赞同另一个方案的情况,2 vs 2,经常僵持不下… 这种事情多了,难免会影响家庭和谐。这个时候,还是小宝的外公识大体,主动要求退出家庭决策圈,剩下3人决策,对于两个提案,总不至于再出现打平手,这个最大的问题也就迎刃而解。经过一段时间的摸索,对老婆提的家庭全民献计的想法,也有了一定的心得,将家庭人员分工明确了下来:

  • 提议人:老婆、我。两人。
  • 决策人:老婆、我、小宝外婆。三人。
  • 参与人:小宝外公、小宝,外加小宝外婆、老婆和我。五人。

一波未平一波又起,你不能总是变

家庭人员分工明确之后,全民献计基本上进入了正轨。大部分时候,还是老婆的生活经验最为丰富,建议也最多,三人一起表决通过,皆大欢喜。少部分时候,我也能够灵光一现,出一些鬼点子,老婆和小宝外婆外公也很满意。难得针对一件事,我跟老婆有不同的想法,每个想法先各自占有一票的情况下,小宝的外婆也能选择其中一方,形成2比1的投票结果,少数服从多数。小宝的外公落得清闲,全家人一起干啥他都是乐呵呵。而小宝呢,只要跟妈妈在一起,也是干啥都开心。

看起来是没有任何问题了,但生活上就是这样,一波未平一泼又起,这次出问题的是小宝外婆。小宝外婆有一个特点,比较善良,也比较纠结。在少数几次我跟老婆都有提议的时候,小宝外婆经常会改变主意。以中午出去吃啥为例,一个典型的场景如下:

老婆:中午不想做饭了,出去吃啥好?

我:吃XXX吧,好久没吃了。

小宝外婆:嗯,这个可以。

老婆:这个不好,上次吃过了,还是YYY吧。

小宝外婆:好好,想吃这个好久了。

我:要不ZZZ也不错,我朋友们一直推荐。

小宝外婆:听起来不错,去试试。

老婆:… …

小宝外婆:… …

我:… …

最后,老婆受不了了:妈,您老不能总是变来变去啊… 这不,又得立规矩了不是。经过家庭决策小组(小宝外公也参与了)的多次讨论,在明确分工之外,又新增了一条新规矩:如果一个方案已经在决策小组中获得了多数派的认同,那么就不能被改变了。针对前面提到的典型场景,如果使用了这条新规矩,会怎么样:

老婆:中午不想做饭了,出去吃啥好?

我:吃XXX吧,好久没吃了。

小宝外婆:嗯,这个可以。(画外音:此时我的方案已经被我和小宝外婆同时认可,形成多数派,不可更改。)

老婆:这个不好,上次吃过了,还是YYY吧。

小宝外婆:这次就听孩他爸的吧,下次再换YYY

我:OK

老婆(内心哪怕不情不愿):OK

我:小宝外公,小宝,我们中午去吃XXX咯。(画外音:要把决策下来的方案告诉全家人不是

感觉一切都搞定了,小宝外婆少了纠结,生活中的各种决策更加高效。虽然家庭生活本不是以高效为目的,但立下规矩,更快的达成一致,也能从某种程度上提升和谐指数。

没想到啊没想到,献计献策变成了处处抢占先机

生活中和工作中,每当我们认为所有的问题都得到解决时,后面接踵而来的新问题很快就会戳穿这个假象。有了明确的提议人、决策人、参与人的分工,又有了一条新规矩,难道还有什么问题是搞不定的?有,新问题不仅有,而且还不止一个,而且追根溯源,还都是新定的这个规矩惹的祸。

第一个暴露的新问题,来自小宝的外婆。前面也提到,小宝外婆为人比较善良,也比较纠结。新规矩实施之后,每当她刚同意一人,形成多数派决议之后,提案就不能被更改了。但是小宝外婆看到另外一人欲言又止,心里又觉得过意不去。而且,每次都这么杀伐果断,没有个稍微纠结一下的机会,也比较痛苦。

如果说第一个暴露的问题还好的话,那么第二个问题就更加严重一点。根据新规矩,基本上是谁先给出提案,谁就能达成多数派的决议。发展到后面就演变为我和老婆两个提议人,都不管提议本身的好坏,抢到先机再说。提议质量没法控制,家庭的生活质量也就随之下降,跟我们的本意反而背道而驰了。

没办法,决策小组继续坐下来一起思考应对之策,这次就比较花时间了,全家人一起想了许久,都没有很好地解决办法。正当大家像无头苍蝇一样乱撞之时,不得不说,还是老婆聪明,想到了一个顶顶好的解决办法,这个解决方法,说起来比较简单:

  1. 针对处处抢占先机,一轮决策后就不能更改的情况。将现在的一轮决策改为两轮:
    • 第一轮:提议阶段。在这一阶段,我跟老婆可以发起提议,小宝外婆作为决策者,可以选择听谁的提议,但是不做决策。
    • 第二轮:决策阶段。在听了提议后,进入决策阶段,此时小宝外婆可以选择赞成这个提议,也可以选择反对这个提议。
  1. 两轮中,第一轮提议阶段可以纠结,可以更改。第二轮决策阶段,这个跟前面提到的规矩保持一致:一旦决策阶段达成了多数派的决议,就不能更改。

仍旧是上面生活中同样的例子,现在会变成什么样子:

老婆:中午不想做饭了,出去吃啥好?

我:我有一个提议,大家想不想听听?(第一阶段:提议)

小宝外婆:说来听听。

老婆:登登(我的小名),你的肯定不靠谱,其实我也有一个提议。

小宝外婆:那我们就听听琛琛的吧。(画外音:提议阶段,可以更改。这一下小宝外婆的问题解决了。)

我:我的提议是

小宝外婆:登登,你的提议机会被琛琛抢了。(画外音:提议被抢占,我的当前提议作废。)

老婆:我们去YYY吧。

小宝外婆:好,听你的,去YYY。(画外音:决策阶段,老婆和小宝外婆两人形成了多数派的决策,不能更改了。)

我:其实我本来想说是去XXX的。但既然大家都同意去YYY,那就去YYY。小宝外公,小宝,我们中午去YYY咯!(画外音:提议形成多数派的决议之后,就不能被更改,只能被接受。与此同时,我还有义务将接受的提议传达给参与人,小宝外公和小宝。当然,这里我不能撒谎,如果我撒谎了,跟小宝外公和小宝说我们全家最后决定去XXX,那么这两位就被我带到沟里去了

在老婆给出一个顶顶好的解决办法之后,在原有的基础上,我们全家也尝试实施这个新的两轮的提议方案,在实施的过程中也尝试不断地完善,前面提到的小宝外婆的问题,和一股脑儿处处抢占先机的问题,看起来也都得到了解决。

下篇更精彩,总结部分 

转载自:阿里技术发展协会

作者:圭多

目录
相关文章
|
监控 JavaScript 前端开发
|
新零售 城市大脑 分布式计算
阿里云2019北京峰会之我见(商业篇)
整场大会听下来,我用两个字来总结那就是”共赢“。 希望大家都能赢!
4436 0
|
10月前
|
存储 云安全 人工智能
带你读《阿里云安全白皮书》(二十四)——云上安全建设最佳实践(2)
本文介绍了阿里云在AI大模型云上安全方面的最佳实践,涵盖数据安全、模型安全、内容安全和合规性四大关键挑战。阿里云通过数据加密、私有链接传输、机密计算等技术手段,确保数据和模型的安全性;同时,提供内容安全检测、Prompt问答护栏等功能,保障生成内容的合法合规。此外,阿里云还帮助企业完成算法及模型备案,助力客户在AI大模型时代安全、合规地发展。
|
10月前
|
云安全 监控 安全
带你读《阿里云安全白皮书》(二十三)——云上安全建设最佳实践
淘宝作为全球最大规模、峰值性能要求最高的电商交易平台,基于阿里云成功通过了多年“双11”峰值考验。淘宝的安全体系涵盖了系统安全、网络安全、账号与凭据安全、云资源安全等多个方面,通过阿里云提供的多种安全产品和服务,确保了业务的稳定运行和数据的安全。淘宝的安全实践不仅为自身业务提供了坚实的保障,也为其他行业的云上安全建设提供了宝贵的经验和参考。
|
消息中间件 存储 监控
AMQP 与其他消息协议的对比分析
【8月更文第28天】高级消息队列协议 (AMQP) 是一种开放标准的应用层协议,主要用于消息中间件。本文将对比分析 AMQP 与其他流行的协议如 MQTT 和 RMQ(通常指的是 RabbitMQ),探讨它们的特点以及适合的应用场景。
325 0
|
数据采集 监控 物联网
MQTT协议在智能制造中的应用案例与效益分析
【6月更文挑战第8天】MQTT协议在智能制造中的应用案例与效益分析
463 1
|
Kubernetes Oracle 关系型数据库
实时计算 Flink版操作报错合集之用dinky在k8s上提交作业,会报错:Caused by: org.apache.flink.table.api.ValidationException:,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
440 0
|
Kubernetes NoSQL Redis
容器服务ACK常见问题之修改内存限制失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
分布式数据库 Hbase
[Phoenix] 二、数据类型
目前Phoenix支持22种简单数据类型和1个一维Array的复杂类型。
10339 1
|
机器学习/深度学习 搜索推荐 PyTorch
机器学习/深度学习中的常用损失函数公式、原理与代码实践(持续更新ing...)
本文的结构是首先介绍一些常见的损失函数,然后介绍一些个性化的损失函数实例。
机器学习/深度学习中的常用损失函数公式、原理与代码实践(持续更新ing...)