本文再来说下Multi Paxos分布式算法
概述
世界上只有一种共识协议,就是 Paxos,其他所有共识算法都是 Paxos 的退化版本。-- Mike Burrows
Paxos 是由Leslie Lamport(就是大名鼎鼎的LaTeX中的“La”)提出的一种基于消息传递的协商共识算法,现已是当今分布式系统最重要的理论基础,几乎就是“共识”二字的代名词。这个极高的评价出自于提出 Raft 算法的论文,更是显分量十足。虽然笔者认为并没有 Mike Burrows 说的“世界上只有 Paxos 一种分布式共识算法”那么夸张,但是如果没有 Paxos,那后续的 Raft、ZAB 等算法,ZooKeeper、Etcd 这些分布式协调框架、Hadoop、Consul 这些在此基础上的各类分布式应用都很可能会延后好几年面世。
Paxos 的诞生
故事背景是古希腊 Paxos 岛上的多个法官在一个大厅内对一个议案进行表决,如何达成统一的结果。他们之间通过服务人员来传递纸条,但法官可能离开或进入大厅,服务人员可能偷懒去睡觉。Paxos 算法的目标就是让城邦能够在每一位居民都不承诺一定会及时参与的情况下,依然可以按照少数服从多数的原则,最终达成一致意见。但是 Paxos 算法并不考虑拜占庭将军问题,即假设信息可能丢失也可能延迟,但不会被错误传递。
Lamport 最初在 1990 年首次发表了 Paxos 算法,选的论文题目就是“The Part-Time Parliament”。由于算法本身极为复杂,用希腊城邦作为比喻反而使得描述更为晦涩,论文的三个审稿人一致要求他把希腊城邦的故事删除掉,这令 Lamport 感觉颇为不爽,然后干脆就撤稿不发了,所以 Paxos 刚刚被提出的时候并没有引起什么反响。八年之后(1998 年),Lamport 再次将此文章重新整理后投到《ACM Transactions on Computer Systems》,这次论文成功发表,Lamport 的名气确实吸引了一些人去研究,结果是并没有多少人能弄懂他在说什么。时间又过去了三年(2001 年),Lamport 认为前两次是同行们无法理解他以“希腊城邦”来讲故事的幽默感,第三次以“Paxos Made Simple”为题,在《SIGACT News》杂志上发表文章,终于放弃了“希腊城邦”的比喻,尽可能用(他认为)简单直接、(他认为)可读性较强的方式去介绍 Paxos 算法,情况虽然比前两次要好上一些,但以 Paxos 本应获得的重视程度来说,这次依然只能算是应者寥寥。这一段听起来跟网络段子一般的经历被 Lamport 以自嘲的形式放到了他自己的个人网站上。尽管我们作为后辈应该尊重 Lamport 老爷子,但当笔者翻开“Paxos Made Simple”的论文,见到只有“The Paxos algorithm, when presented in plain English, is very simple.”这一句话的“摘要”时,心里实在是不得不怀疑 Lamport 这样写论文是不是在恶搞审稿人和读者,在嘲讽“你们这些愚蠢的人类!”。
虽然 Lamport 本人连发三篇文章都没能让大多数同行理解 Paxos,但 2006 年,在 Google 的 Chubby、Megastore 以及 Spanner 等分布式系统都使用 Paxos 解决了分布式共识的问题,并将其整理成正式的论文发表之后,得益于 Google 的行业影响力,辅以 Chubby 作者 Mike Burrows 那略显夸张但足够吸引眼球的评价推波助澜,Paxos 算法一夜间成为计算机科学分布式这条分支中最炙手可热的网红概念,开始被学术界众人争相研究。2013 年,Lamport 本人因其对分布式系统的杰出理论贡献获得了 2013 年的图灵奖,随后才有了 Paxos 在区块链、分布式系统、云计算等多个领域大放异彩的故事。足可见技术圈里即使再有本事,也还是需要好好包装一下的道理。
本文小结
本文介绍了分布式共识算法Paxos的一些问题。