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

简介:

根据上一篇的叙述,让我们做一个规范总结吧

自从老婆提议家庭生活,家庭全体成员一起献计献策之后,也经历了不短的时间。整个过程中,碰到过不少问题,但在全家的同心协力下,也都得到了解决。一天,老婆提议把过程中沉淀下来的经验和规范汇总起来,我想想也有道理,就做了下面这个汇总:

  • 家庭成员明确不同的分工。提议人、决策人、参与人。

其中,提议人和参与人的人数没有限制,视家庭成员而定。但是,决策人的人数最好为奇数,最小人数是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原理、历程及实战》,感觉都非常不错,一并推荐给大家。

最后,还是要感谢 克里斯.费利 博士,不管我这篇文章质量如何,下定决心写很大程度上是受到了其《宝宝的量子物理学》系列丛书的影响,家里有小宝宝的同学,也一并推荐给大家,值得买回来读个宝宝听!

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

作者:圭多

目录
相关文章
|
前端开发
理解分布式一致性:Paxos协议之Multi-Paxos
理解分布式一致性:Paxos协议之Multi-Paxos
理解分布式一致性:Paxos协议之Multi-Paxos
|
缓存 移动开发
结合NWR,让Paxos拥有的动态的Quorum,以及在Klein中的实践
Quorum=3的条件,在原生的Paxos中是硬性条件,在一些场景中,我们需要对提案的收敛更快,也就是希望提案能尽快的达成共识,那么我们希望尽可能的减少Quorum要求的数量。
126 1
结合NWR,让Paxos拥有的动态的Quorum,以及在Klein中的实践
|
存储 算法 前端开发
如何实现一个 Paxos
Paxos 作为一个经典的分布式一致性算法(Consensus Algorithm),在各种教材中也被当做范例来讲解。但由于其抽象性,很少有人基于朴素 Paxos 开发一致性库,本文介绍的实现代码参考了 RAFT 中的概念以及 phxpaxos 的实现和架构设计,实现 multi-paxos 算法,主要针对线程安全和模块抽象进行强化,网络、成员管理、日志、快照、存储以接口形式接入,算法设计为事件驱动,仅包含头文件,便于移植和扩展。
19980 1
|
机器学习/深度学习 存储 前端开发
理解分布式一致性:Paxos协议之Basic Paxos
理解分布式一致性:Paxos协议之Basic Paxos
理解分布式一致性:Paxos协议之Basic Paxos
|
存储 缓存 算法
深入分布式缓存-Paxos
深入分布式缓存-Paxos
108 0
深入分布式缓存-Paxos
|
存储 缓存 算法
【分布式】Chubby与Paxos
 在上一篇理解了Paxos算法的理论基础后,接下来看看Paxos算法在工程中的应用。
374 0
【分布式】Chubby与Paxos
|
安全 算法 数据安全/隐私保护
理解分布式一致性:Paxos协议之Cheap Paxos & Fast Paxos
理解分布式一致性:Paxos协议之Cheap Paxos & Fast Paxos
理解分布式一致性:Paxos协议之Cheap Paxos & Fast Paxos
理解分布式一致性:Paxos协议之Generalized Paxos & Byzantine Paxos
理解分布式一致性:Paxos协议之Generalized Paxos & Byzantine Paxos
理解分布式一致性:Paxos协议之Generalized Paxos & Byzantine Paxos
|
算法 关系型数据库 MySQL
Egalitarian Paxos
Egalitarian Paxos
Egalitarian Paxos