[读书笔记] The Part-Time Parliament

简介: 在刚接触到一致性算法的时候就知道了Paxos,同时也发现看到的所有文章提到Paxos的时候都说难于理解。于是我决定,咱就要看Paxos是怎么个难法,万一我一遍就看明白了,是不是证明我的智商高啊,So --- LESLIE LAMPORT大爷,我来了。

在刚接触到一致性算法的时候就知道了Paxos,同时也发现看到的所有文章提到Paxos的时候都说难于理解。于是我决定,咱就要看Paxos是怎么个难法,万一我一遍就看明白了,是不是证明我的智商高啊,So --- LESLIE LAMPORT大爷,我来了。

不过这篇The Part-Time Parliament我一打开就开始懵比。这个名字就不像IT论文啊,“临时议会”什么意思? 开头这么一段:
Early in this millennium, the Aegean island of Paxos was a thriving mercantile center.1 Wealth led to political sophistication, and the Paxons replaced their ancient theocracy with a parliamentary form of government. But trade came before civic duty, and no one in Paxos was willing to devote his life to Parliament. The Paxon Parliament had to function even though legislators continually wandered in and out of the parliamentary Chamber.
The problem of governing with a part-time parliament bears a remarkable correspondence to the problem faced by today’s fault-tolerant distributed systems, where legislators correspond to processes, and leaving the Chamber corresponds to failing. The Paxons’ solution may therefore be of some interest to computer scientists. I present here a short history of the Paxos Parliament’s protocol, followed by an even shorter discussion of its relevance for distributed systems.
翻译过来是:
希腊岛屿Paxon 上的执法者在议会大厅中表决通过法律,并通过服务员传递纸条的方式交流信息,每个执法者会将通过的法律记录在自己的账目上。问题在于执法者和服务员都不可靠,他们随时会因为各种事情离开议会大厅,并随时可能有新的执法者进入议会大厅进行法律表决,使用何种方式能够使得这个表决过程正常进行,且通过的法律不发生矛盾。
不难看出故事中的议会大厅就是我们的分布式系统,牧师对应节点或进程,服务员传递纸条的过程就是消息传递的过程,法律即是我们需要保证一致性的值(value)。牧师和服务员的进出对应着节点/网络的失效和加入,牧师的账目对应节点中的持久化存储设备。上面表决过程的正常进行可以表述为进展需求(progress requirements):当大部分牧师在议会大厅呆了足够长时间,且期间没有牧师进入或者退出,那么提出的法案应该被通过并被记录在每个牧师的账目上。

这篇文章从头到位的文风都是这个样子,讲一讲故事,然后再讲一讲算法,可能LESLIE LAMPORT 大爷想借此让大家更容易理解他的理论,可是说实话这让我更加的懵比,没看多久就败下阵来。后来看了一些中文翻译及解释才算明白了部分内容吧。很赞同Raft那篇“In Search of an Understandable Consensus Algorithm”论文里对它的描述:“不幸的是,Paxos 有两个明显的缺点。第一个缺点是 Paxos 算法特别的难以理解。完整的解释是出了名的不透明;通过极大的努力之后,也只有少数人成功理解了这个算法。因此,有了几次用更简单的术语来解释 Paxos 的尝试。尽管这些解释都只关注了单决策的子集问题,但依然很具有挑战性。在 2012 年 NSDI 的会议中的一次调查显示,很少有人对 Paxos 算法感到满意,甚至在经验老道的研究者中也是如此。我们自己也尝试去理解 Paxos;我们一直没能理解 Paxos 直到我们读了很多对 Paxos 的简化解释并且设计了我们自己的算法之后,这一过程花了近一年时间。”

看到Diego Ongaro和John Ousterhout那么NB的人,也不能一次看懂,让我感觉好受了不少。不过我还是建议大家没事看看这篇论文,万一一次就看明白了,那多NB啊,而且Paxos毕竟是个精巧,又强大的协议,现实中很多一致性系统也是基于它(变体)做得。

对于Paxos的一些详细解释大家可以看看知乎上面的帖子:
https://www.zhihu.com/question/19787937
最上面的几个回复已经说的很不错了。

相关文章
|
3月前
|
机器学习/深度学习 算法 数据挖掘
【博士每天一篇文论文-算法】A small-world topology enhances the echo state property and signal propagationlun
本文研究了小世界拓扑结构在回声状态网络(ESN)中的作用,发现具有层级和模块化组织的神经网络展现出高聚类系数和小世界特性,这有助于提高学习性能和促进信号传播,为理解神经信息处理和构建高效循环神经网络提供了新的视角。
37 0
【博士每天一篇文论文-算法】A small-world topology enhances the echo state property and signal propagationlun
|
6月前
|
调度
【RT-Thread】学习日记之系统节拍Tick
【RT-Thread】学习日记之系统节拍Tick
|
6月前
|
消息中间件 Linux 芯片
RT-Thread快速入门-体验RT-Thread
RT-Thread快速入门-体验RT-Thread
97 0
RT-Thread快速入门-体验RT-Thread
|
算法 安全 Unix
翻译[RFC6238] TOTP: Time-Based One-Time Password Algorithm
翻译[RFC6238] TOTP: Time-Based One-Time Password Algorithm
154 0
|
C语言
PAT (Basic Level) Practice (中文) B1026 程序运行时间 (15 分)
PAT (Basic Level) Practice (中文) B1026 程序运行时间 (15 分)
122 0
|
编译器 C语言 C++
爆肝IT小白的函数狂想曲(part 2)
函数声明👏 什么是声明,你告诉你的编译器,函数叫什么,参数是什么,返回类型是什么;但到底存不存在,我们不关心。声明一般在函数使用之前,要满足先声明后使用;且声明一般出现在头文件中。函数的定义是指函数的具体实现,交代函数的功能实现。C语言代码由上到下依次执行,原则上函数定义要出现在函数调用之前,否则就会报错。但在实际开发中,经常会在函数定义之前使用它们,这个时候就需要提前声明,语法如 :type function_name(type var);
爆肝IT小白的函数狂想曲(part 2)
|
自然语言处理 算法 数据挖掘
浅谈Single-Pass算法
Single-Pass算法又称单通道法或单遍法,是流式数据聚类的经典方法。对于依次到达的数据流,该方法按输入顺序每次处理一个数据,依据当前数据与已有类的匹配度大小,将该数据判为已有类或者创建一个新的数据类,实现流式数据的增量和动态聚类,适合对流数据进行挖掘,而且算法的时间效率高;不足之处主要表现在该方法具有输入次序依赖特性,即对于同一聚类对象按不同的次序输入,会出现不同的聚类结果。
240 0
PAT (Advanced Level) Practice - 1014 Waiting in Line(30 分)
PAT (Advanced Level) Practice - 1014 Waiting in Line(30 分)
125 0
|
存储 Shell Linux
Linux常用命令(Part Ⅰ)
Linux常用命令
265 0
关于Visits, Visitors, Time on Page,www9992019com-Time18122221111 on site, Bounce Rate, Exit Rate, Conversion Rate, Engagement8个重要指标的梳理
Menu 行业动态 每周更新 技术杂谈 关于我们 网站数据分析八大指标 281171 关于网站分析的8个重要指标的梳理,包括Visits, Visitors, Time on Page, Time on site, Bounce Rate, Exit Rate, Conversion Rate, Engagement。
1699 0