分享

考古学家和分布式一致性算法

 湘楚狂士 2015-12-05

当我们徜徉在数据的海洋里,心安理得地用着 Hadoop 技术栈中各种工具愉快地进行数据分析时,是不是有种”一剑在手,天下我有”的感觉?然而,曾经的分布式系统常给程序员带来的并不是很愉快的感觉,直到一位”考古学家”的出现。


我并不是在杜撰故事,这就是 2013 图灵奖获得者 Leslie Lamport 和他的 Paxos 算法的故事。


Paxos 算法是神马,凭啥就这么 NB,能够获得计算机界的最高奖项呢?Lamport 又是何方神圣呢?众位看官不要着急,听我慢慢道来。


Paxos 算法是分布式一致性算法。分布式一致性算法是分布式系统的神经中枢系统。那分布式系统存在何处?大到整个互联网,小到手机中的多核心 CPU 都算是分布式系统。更不要说现在风头正盛的云计算,大数据系统等等,更加依赖分布式的这一套算法。如果一个正常人的神经中枢出了问题,那他就疯了;同样分布式系统在一致性方面出了 Bug,这个系统一样算是疯了,轻则数据丢失,重则系统崩溃。所以毫不夸张的说一致性问题是分布式系统中最重要的算法。而 Paxos 呢?用 Google Chubby 作者的话来说:”本质上来讲,这个世界上只有一种分布式一致性算法: Paxos,其他的算法都是它的变体”。这就像爱因斯坦相对论和牛顿经典力学之间的关系一样。


那么 Lamport 是何方神圣呢? 每个牛人都相当有个性,Lamport也不例外:

Lamport 成名得益于这两件事:


  1. 科学排版系统 LaTeX 中的 La;

  2. 一致性算法,尤其是源于古希腊政治考古学的分布式一致性算法 Paxos。


排版系统,一致性算法,考古学,这位难道是跨界高手?其实 Lamport 是一个原汁原味、如假包换的数学家,生平主要在研究一致性相关算法,而他最重要的作品 Paxos,却是以一个考古学家的视角展开来进行阐述的。而关于 LaTeX 科学排版系统,Lamport 起初想写一本书叫做 “The great American concurrency book”,可能是受强迫症驱使,他觉得一本牛书需要配备一个更牛的写作工具。但是当时的 TeX 系统(高德纳所作)指令非常繁琐,于是他花了很多时间改善这个工具,让 TeX 用起来更加方便。这相当于将 TeX 从手动档提升到了自动挡,一不小心把 TeX 系统发扬光大了,不光数学家能用,很多从事其他工作的人也会使用了。不过有意思的是,由于在 LaTeX 上不务正业玩的过火了,他的正业 “The great American concurrency book” 反倒永远没写出来。


好了,LaTeX 我们就不多说了,回过头来看看下这个 Paxos 算法的传奇吧,这才是 Lamport 大叔的正业。


这个算法第一次是发表在 Lamport 的神作 “The Part-Time Parliament” 上(中文名《兼职议员》)。这篇作品一般人很难理解,科学的来讲除了他自己也就没几个人能搞清楚他要说啥了。这个事件简单来说就是:他向一个严肃的顶尖学术杂志(ACM Transaction on Computer Science)上投了一篇小说!!


是大叔脑子短路了吗?也许牛人自有自己的独特视角。不过在笔者看来,除了他的幽默感太 High 之外,还有一点就是太懒。当他花费了 9 年时间发现了这个牛X的算法之后,他觉得要说清每个细节过于繁琐乏味,很多细节几乎是不言自明的(当然是对牛人来说),不必要浪费口水去解释。于是大神脑洞大开,想了一个两全其美的办法:他杜撰了一个位于希腊岛屿 Paxos 上的古老城邦,通过一个考古学家的发现,来描述这段失落的文明,以便解释多个兼职议员是如何达成一致来立法治理城邦的。这样既能吸引眼球增加趣味,又可以直接忽略很多不言自明的细节,只要直接声明一下关于该议会协议的某些细节已经遗失就可以了!


故事到这里还只是开始,因为这篇稿子投出去之后,很长时间是风轻云淡、波澜不惊,也就是基本上没人关注。为此 Lamport 坐不住了,觉得是时候该出手了,于是他真的出手了:在多个学术会议进行巡回演讲。赞,这回终于开始回归正常人类作风了吗?No, 我们太低估 Lamport 大叔了。他并不是常规意义的去演讲,而是在学术会议现场大搞 Cosplay。大叔也是萌的可以,他 Cosplay 了当时非常流行的好莱坞大片”夺宝奇兵”中的男猪脚,考古学家印第安纳·琼斯。戴上了小毡帽,屁股系上了小酒瓶,现场又蹦又跳地给大家宣讲他的”考古新发现” — 关于 Paxos 城邦的兼职议员治理模式。有了这么卖力的表演,可以说这几次巡讲获得了空前的成功,场场爆满,广大观众们对大叔的 CosPlay 表示了充分的认可。然而当大叔问观众们对 Paxos 算法有什么看法时,却得到了这样的回答:这难道不是 Cosplay 吗?这件事情让 Lamport 对这个社会感到了深深的失望。


如果说普通人不理解也罢了,专业领域应该有识货的吧。可是在 Lamport 大叔大搞 Cosplay 推广的时候,这篇文章在 ACM 却石沉大海了。为啥这么牛的文章遭受了这么不公平待遇呢?让我们根据后来的线索,捋一下这个故事发展的脉络。这篇论文的投稿时间是 1989 年,但是却拖到了 1998 年才在 ACM Transaction on Computer Science (TOCS) 期刊发表。从 1989 到 1998,时间都去哪儿了?翻翻当年 TOCS 的拒信,有两条理由:


  1. 关于古希腊国会政治的考古,占用论文的篇幅太长,建议删除或者改写;

  2. 数学公式太少。


编辑的言外之意是:


  1. 你这论文不规范啊,数学公式呢?公式呢?公式呢?没有公式我们怎么知道你是咋推导的;

  2. 没看懂,你通篇讲古希腊考古,分散大家注意力,根本不晓得你要表达什么观点,我们是严肃的学术杂志,不发表小说。


Lamport 看到拒信之后当然非常生气,大喊一声:”为什么搞理论的这群人一点幽默感也没有呢?”。于是,彪悍的人生不需要解释,大叔决定一个字儿也不改了,并赌气把稿件撤了,不跟你们这帮蠢货一起玩耍了。


随着时间的流逝,当人们开始在分布式领域进行越来越多的探索时,突然发现了大叔这篇文章的价值。1996 年微软的 Butler Lampson 在 WDAG96 上提出了重新审视这篇文章,因为他读懂了。1997 年 MIT 的 Nancy Lynch 在 WDAG97 上根据原文重新改写了这篇文章,在文章中他们代替 Lamport 用数学形式化地定义并证明了 Paxos。


由于这两篇文章的发表,Paxos 引起了大家的注意,于是被雪藏了 9 年后,TOCS 编委终于从故纸堆中找到了这篇划时代的神作,并加了按语。按语写的很戏谑:


这篇论文前不久在 TOCS 编辑办公室的档案柜后面被重新找到。尽管年代久远,主编认为它仍然值得发表。因为作者最近在希腊的一些小岛上做野外作业联系不上,所以我受命发表这篇文章。

作者貌似只是个业余对计算机科学感兴趣的考古学家。因此很不幸,尽管他文中描述的久远的 Paxos 文明对于大多数计算机科学家而言并无太大吸引力,但 Paxos 文明中出现的立法系统模型,对异步环境中分布式计算系统的实现意义重大。Paxons 公民对他们立法协议的一些精妙设计和改良,在系统科学领域实际上是空前的。


这个按语写的也许真算是空前绝后了,可以这样解读:


  1. 这篇投稿被遗弃在编辑部的文件柜中,刚刚被发现,所以你不能说是评委不识货,而是没看见。你可以批评我们粗心大意,但是不可以鄙视我们没能力;

  2. 作者目前人在希腊某岛屿,做考古工作,联系不上。所以不是 Lamport 不搭理我们杂志,而是希腊岛上基础设施太差,没有网络。


谁说我们不懂幽默,你看我们幽默起来也是不要不要的。


关于论文发表的故事也就到此为止了,论文发表之后,Paxos 在学术领域受到了大家的一致推崇。大叔神清气爽,也不再跟杂志社较劲了,而是再接再励,紧接着在 2001 年发表了新的 Paxos 算法论文 “Paxos made simple”,他用简单的语言(其实也并不那么简单),而不是神话故事,重述了原文。但是通篇还是没有数学符号,大叔甚为固执地说:我已经检查过了自己的语言并没有歧义,不需要数学来描述。这次杂志社二话不说,一字不改的原样发表了。


接下来大叔愈战愈勇,在 2005 年又发表了 Paxos 的改进版本 “Fast Paxos”。Lamport 在 40 多页的论文中不仅提出了 Fast Paxos 算法,并且还从工程实践的角度重新描述了 Paxos(Lamport 本来就不是纯粹的理论派,参考 LaTeX 的经历)。这次改版非常的大,在消息延迟与性能、吞吐量之间作出了各种改进,也更方便工程上的实践。


之后在 2006 年,Google 利用 Paxos 算法实现了分布式锁服务 Chubby,并发表了论文。这是 Paxos 第一次真正的应用于大规模生产系统。随着 Google 在分布式系统领域的巨大影响力,Paxos 应用越来越广,几乎在我们现在的云计算及大数据处理系统等领域无处不在,发挥了重大作用。


2013 年,Lamport 实至名归,获得计算机界最高奖项图灵奖。



参考文献


Lamport 的主页: http://www./

Lamport 在微软的主页: http://research.microsoft.com/en-us/um/people/lamport/pubs/pubs.html
Lamport 的专访: http://www./interviews/lamport-latex-paxos-tla
神作《兼职议员》: http://research.microsoft.com/en-us/um/people/lamport/pubs/lamport-paxos.pdf
Paxos 算法的 Wiki 页面: http://en./wiki/Paxos_algorithm
Lamport 获得图灵奖页面: http://amturing./award_winners/lamport_1205376.cfm
Google Chubby 论文: http://research.google.com/archive/chubby-osdi06.pdf
Leslie Lamport,图灵奖,和 Paxos: http://blog.sina.com.cn/s/blog_46d0a3930101qt42.html


作者:吴磊,人称磊叔,自号最老八零后,TheFortyTwo 资深催稿专家。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多