分布式计算领域的哥德尔Eric Brewer
注: 本文转自《程序员》杂志2011年08期 作者 苏椰
2010年3月,ACM宣布将2009年度“ACM-Infosys”奖颁发给加州大学伯克利分校的Eric Brewer教授,以表彰他在可扩展互联网等领域所做的贡献。Brewer在伯克利获得了计算机科学学士学位,随后在麻省理工学院获得计算机科学硕士和博士学位。32岁时,他拿到了伯克利的终身教授职位,这个职位是很多人的毕生梦想,而他却初出江湖就将其纳入囊中。这到底是个什么人?他到底做了什么事?
要说Brewer教授的工作,我们要从80年前的另一个人说起。1930年,著名数学家希尔伯特发表了他著名的退休演讲,其中有一句话鼓舞了一代数学家:“我们必须知道,我们必将知道。”这句话所指的,是他的“希尔伯特计划”,也就是证明数学体系的完备性、相容性和可判定性。数学家们为这美好的未来而不懈奋斗,然而这场美梦却被一个人打破了。1931年,哥德尔证明了,任何完备的系统都是不相容的,而任何相容的系统都是不完备的,二者不可得兼,这就是哥德尔定理。这个证明彻底摧毁了希尔伯特计划,使数学变成了一个残缺的世界。说到这里,不妨说一点题外话,希尔伯特提出的三个问题,哥德尔解决了前两个。那么剩下一个“可判定性”呢?这个问题是由艾伦·图灵在1936年的论文中首次解决的,也正是在这篇论文中,他提出了图灵机,后来成为现代计算机的理论模型。
读者也许要说,这80年前的事情,跟年轻的Brewer有什么关系啊?别急,马上我们就将看到,Brewer有着一个几乎同构的故事,他俨然就是分布式计算领域的哥德尔。对于一个分布式计算服务来说,有个CAP原理,包含三个最重要的属性:相容性(Consistency),读操作是否总能读到前一个写操作的结果,即是说在分布式环境中,多点读出的数据是否相容。可用性(Availability),访问数据的性能。分区容忍性(Partition tolerance ),数据的分区特性,对系统性能的影响程度。
对于一个分布式计算系统来说,这三个属性非常重要。因此,计算机科学家们一直在拼尽全力地寻找一种方法,能够实现同时满足CAP三者的完美分布式系统。但是就在大家都忙得热火朝天的时候,2007年,如同当年的哥德尔一样,Brewer教授站出来指出:CAP永远不可能同时满足,提高其中任意两者的同时,必然要牺牲第三者。这就是Brewer的CAP定理,后来由麻省理工学院的两位科学家证明。这个定理告诉大家,不要再浪费时间去研究如何兼顾了,因为这根本就是不可能的,只能根据具体应用,来决定如何在三者之间进行取舍。CAP理论为很多巨型的数据中心,尤其是现在很多的SNS网站提供了有力的理论指导,比如说Google的BigTable系统就是一个牺牲了A的典型例子。有意思的是,Brewe今年5月在Twitter上透露,他利用学术休假的时间已经开始在Google公司领导下一代基础设施的设计了。就在提出CAP理论的同一年,Brewer当选美国国家工程院院士,并于次年当选ACM Fellow。
除CAP定理外,Brewer还有很多其他成就。1995年,他与人共同创建了著名搜索引擎公司Inktomi,曾是纳斯达克100指数成分股,后来被Yahoo!收购。2000年,他协助美国联邦政府做网站,建立了usa.gov并上线。他还非常关心发展中国家和贫困国家的信息化进程,提出了WiLDNet等很多概念,旨在通过技术方法,帮助人们以更低的成本获得无线通信能力。他的系统被部署用于印度的远程医疗,有超过20000名眼科患者通过该系统重新获得光明。