(莱斯利·兰伯特,Paxos算法发明者。图片来源于网络)
本篇看点:互联网分布式系统为什么无法去中心化,最主要的技术障碍是什么?
前情回顾:
【连载】比特币史话 | 哈希(3)
【连载】比特币史话 | 哈希(4)
【连载】比特币史话 | 时间之矢(1)
正文:
2012年,谷歌(Google)发表了一篇标题叫做《Spanner: 谷歌的全球分布式数据库》的论文[1],首次向世界公开了其早在2007年就已经开始研发的高性能分布式数据库Spanner[2]。2017年,Spanner正式成为谷歌云计算平台对外提供的托管式服务之一。据谷歌披露,Spanner的数据节点部署在遍布全球六个大洲、几十个机房的成千上万台服务器上,具有5个9的高可用性(即在99.999%的时间可用)[3]。对谷歌云Spanner的测试数据表明,14个节点的Spanner服务,性能便可达到约15万TPS(每秒事务数)、每秒钟135兆字节数据吞吐量、平均延迟仅1.2毫秒[4]。[公众号:刘教链]
我们不知道谷歌全球部署的整个Spanner分布式集群的总性能会达到多少,但是我们可以看看另外一个使用了相似技术的系统的性能数据。2016年,国内最大的聊天应用“微信”披露了它的一个后台分布式存储系统的设计和运行情况。微信的这套分布式存储系统,使用了大概2000多台机器,单机内存64GB,机械硬盘存储,每天峰值请求高达每分钟10亿次(约合1500多万TPS)[5]。[公众号:刘教链]
谷歌Spanner和微信存储,都使用了同样一个分布式共识算法(分布式一致性算法),叫做Paxos。Paxos算法是美国计算机科学家莱斯利·兰伯特(Leslie Lamport, 1941-)在1989年提出、1998年正式发表的杰作[6]。它在分布式系统设计中的地位是如此重要,以至于谷歌分布式锁服务Chubby的作者麦克·巴伦(Mike Burrows)评价说,“这个世界上只有一种一致性算法,那就是Paxos”[7]。关于Paxos算法的来龙去脉,我们暂且按下不表。[公众号:刘教链]
使用了Paxos算法的谷歌Spanner系统,机器遍布全球,达到极高性能,但是,这套系统高度依赖一个因素——时间同步性。也就是说,这成千上万台机器的时钟的时间必须严丝合缝,分秒不差,否则整个系统就会有崩溃的危险。计算机的时钟总会出现时间漂移的现象,而依靠人工调整时间显然不现实。互联网常用的传统解决方案是采用中心化的时间服务,并通过NTP(网络时间协议)进行全网时钟同步。但是对于谷歌Spanner这样规模的分布式系统,这种网络同步的方法也已经不够用了,因为网络延迟难以预测,仍然难以保证各节点时间严格同步。事实上,谷歌采用的解决方案是更为尖端的技术,原子钟和卫星授时[8]。[公众号:刘教链]
谷歌Spanner是分布式系统,但这套系统是由谷歌中心化控制的。中心化控制的一个重要原因是,系统的运行需要依赖于外部时钟的时间,而这个外部时钟,是由谷歌提供和控制的。当我们谈及所谓“去中心化”(decentralization)的时候,其实我们所意指的并非节点机器的分布式,而是整个系统不再由一个单一主体或多个一致行动主体进行控制。要把传统的分布式系统,改造为去中心化系统,就要消除中心控制点,其中最困难的问题之一,就是要消除对系统外时钟时间的依赖。[公众号:刘教链]
这个比特币走向去中心化设计之路上的最大障碍,被中本聪巧妙地解决了。时至今日,比特币网络中可探明的全节点已遍布全球六个大洲、上百个国家、上万台机器,而且这些机器分别是由非常多互不相识、无统一指挥的人各自独立运行和维护的[9]。据统计,11年来,比特币网络的实际可用性高达99.985%[10],足以比肩世界顶级互联网服务商。[公众号:刘教链]
【未完待续】(公众号:刘教链)