走近谷歌Spanner:地球上最大的单一数据库

走近谷歌Spanner:地球上最大的单一数据库

北京时间11月28日消息,《连线》杂志网络版近日刊载文章,对全球最大的单一数据库谷歌Spanner进行了详细的描述,称其昭示着整个世界的未来发展方向。文章指出,在Spanner数据库中,谷歌摒弃了传统的“网络时间协议”,转而使用自己的时间协调机制,这个机制被称为“TrueTime API”。谷歌在Spanner数据中心里配备了自己的原子钟和GPS接收器,这些时间协调装置会连接到特定数量的主服务器,然后再由主服务器向整个谷歌网络中运行的其他电脑传输时间读数。

以下是这篇文章的全文:

每天早上,当安德鲁·菲克斯(Andrew Fikes)坐在美国加州山景城谷歌总部的办公桌前时,他就会打开谷歌与纽约之间的“VC”连接。

“VC”是谷歌对视频会议(video conference)的缩写。通过办公桌上的电脑屏幕,菲克斯能看到威尔逊·谢(Wilson Hsieh)坐在谷歌曼哈顿办公室里,后者也能看到菲克斯。两人还会与谷歌在华盛顿州柯克兰(Kirkland,靠近西雅图)的一个办公室建立VC连接。他们的工程团队跨越这个国家三个不同地区的三个办公室,但所有人仍旧可以毫无延迟地聊天、进行“头脑风暴”和互相解答疑难问题,而这就是谷歌建立Spanner数据库的方式。

“如果你走进我们的办公室就会发现,我们一直都会保持VC处于开启状态。”菲克斯说道,他在2001年加盟谷歌,现在已经跻身于谷歌杰出的软件工程师之列。“我们在过去多年时间里一直都在这样做,这就降低了一般通信方式的所有壁垒。”

这种布置是合适的。正如创造Spanner数据库的工程团队一样,Spanner覆盖全球,但其运作却像是完全在同一个地方发生的。在经历了多年的暗示和传言以后,Spanner终于在今年秋天出现在公众视线里,它是第一个有资格“有名有姓”的全球数据库——其目的是在数以百计的数据中心、成百万的电脑和数万亿计行信息之间无缝运作。

Spanner是一个如此庞大的创造产物,以至于有些人很难真正去了解它。但是,它所带来的最终结果是很容易说明的:通过Spanner,谷歌能向全球受众提供网络服务,但仍可确保正在世界某个地区中发生在这项服务中的事情不会与发生在另一个地区的事情相抵触。

这个新时代的谷歌数据库已经成为该公司在线广告系统的一部分——这个系统能给谷歌带来庞大的收入——可能预示着网络的其他部分将走向何处。当谷歌在9月中旬发布研究报告来对Spanner作出详细描述时,整个世界都为之震动;几个星期以后,当威尔逊·谢在加州好莱坞的一次会议上演示这份研究报告的内容时,在中坚电脑系统工程师中引发的热议也是明显可见的。

“这当然是很有趣的一件事情。”为Facebook网站提供支持的大型软件平台的主要工程师之一罗谷·默蒂(Raghu Murty)说道——但他补充称,Facebook尚未探索实际构建类似数据库的可能性。

谷歌的网络业务比大多数公司的同类业务都要复杂得多,而且这家公司还被迫构建远远超出大多数网络公司范畴的定制化软件。但随着互联网的增长,谷歌创造的产品经常都会对世界其他部分造成“涓滴效应”。

在谷歌公布Spanner数据库的细节以前,许多人甚至都不认为这是可能做到的事情。没错,我们已经拥有了能在多个数据中心之间存储信息的“NoSQL”数据库,但这些数据库不能在保持信息“一致”——意味着在世界一端的数据中心里浏览数据的人所看到的东西与另一端的人看到的东西完全相同——的情况下做到跨数据中心存储。人们原本对此作出的假设是,之所以不能做到这种“一致”性,是因为在数据中心之间传递信息存在固有的延迟。

但在构建一个既具有全球性又能保持一致性的数据中心的过程中,谷歌Spanner工程师做了一些令人完全意想不到的事情,而这也恰恰符合他们经常都会出人意料的过往历史。这个团队的成员不仅包括菲克斯和威尔逊·谢,同时还包括传奇性的谷歌人物杰夫·迪恩(Jeff Dean)和桑杰伊·格马瓦特(Sanjay Ghemawa)以及其他很多工程师,这些工程师都曾致力于开发开创性的数据中心平台,如Megastore和Dremel等。

而这一次,他们找到了一种让时间保持一致的新方法。

“作为一名分布式系统开发者,你会受到这样的教育——我想说的是,从孩提时代就开始受到这种教育——那就是不要相信时间。”菲克斯说道。“我们所做的事情就是找到一种方法来让我们能相信时间——以及理解相信时间意味着什么。”

时间是极其重要的

在网络上,时间是极其重要的。没错,当运行一项大型网络服务时,你需要事情迅速地发生。但你还需要一种精确追踪许多电脑的时间的方法,这些电脑为你的服务提供支持。你必须同步在每台服务器上运行的许多进程,而且还必须对服务器本身进行同比,这样一来它们才能协同运作。而想要做到这一点可谓“知易行难”。

通常情况下,数据中心运营商会使用所谓的“网络时间协议”(Network Time Protocol,NTP)来保持服务器的的同步,这从本质上来说是一种将电脑与官方原子钟联系到一起的在线服务,从而让全世界各地组织的时间保持一致。但是,由于在一个网络中传输信息需要时间的缘故,这种方法从来都无法做到完全精确,而且有些时候还会完全失效。在今年7月份,几家主要的网络公司——包括Reddit、Gawker和Mozilla等——就遭遇了问题,原因是其软件没有做好应对“闰秒”(为保持协调世界时接近于世界时时刻,由国际计量局统一规定在年底或年中对协调世界时增加或减少1秒的调整)的准备。

但在Spanner数据库中,谷歌摒弃了“网络时间协议”,转而使用自己的时间协调机制,这个机制被称为“TrueTime API”。“我们想要一种能让自己信得过的东西。”菲克斯说道。“那就是谷歌自己拥有的时间基准。”

谷歌没有依靠外部时钟,而是在其Spanner数据中心里配备了自己的原子钟和GPS(全球定位系统)接收器,这与你iPhone中的应用是不一样的。通过环绕地球进行轨道运行的卫星所构成的网络,GPS接收器不仅可以精确找到你所在的位置,而且还能精确报时。

这些时间协调装置会连接到特定数量的主服务器,然后再由主服务器向整个谷歌网络中运行的其他电脑传输时间读数。基本上来说,谷歌网络中的每台电脑都会运行一个后台程序,这个程序会不断地与同一个数据中心及其他谷歌数据中心的主服务器进行联系,试图达成协调一致的时间。通过这种方式,整个谷歌网络中的电脑都会相当接近于运行一个通用时钟。