迈向百万级别之路

matrixcode.jpg无纸亦能成书 — 这句话可以用来描述数据中心架构师的重要品质:在系统上线之前就能预估它的实际性能。但倘若你将面对的是布散全球,尺度达到百万台级别的服务器集群的时候,该如何充分协调这具让所有超级计算机都黯然失色庞然大物呢?

这里说的是谷歌,虽然它的服务器总数仍不为所知,但这家拥有遍布全球几近 40 个数据中心的互联网企业还在不断的部署着更大型的数据中心。它们的目标是全球部署 100 至 1000 个数据中心,对应服务器的数量达到史无前例的 100 万至 1000 万台。

参照这样的说法,一个数据中心大约有一万台服务器,按照目前已知的 36 个数据中心计算,谷歌的服务器大约有 36 万台。事实上这是很不靠谱的推断,但由于数字来自谷歌工程师的文稿,或许他是虚晃一枪,但仍有参考的意义,而且我相信这是趋于保守的估计,因为谷歌曾经公开一个数据中心的视频资料,单这个数据中心就有 45000 台服务器。

如我们之前对亚马逊 EC2 的报道,做为基础云计算领域最大的企业,亚马逊 EC2 的服务器总数大约是 4 万台,依据市场规模推算,基础云计算领域总的服务器数量大约是 7.3 万至 11 万台,这个数字比谷歌服务器的推测来的靠谱些,但仍可以看出它们之间的巨大差距。

回到此前的话题。面对如此巨大的基础设施,最重要的问题是如何管理,这也是谷歌目前在做的事情:一个名为 Spanner 的调度系统。并相信已经在部分数据中心开始部署,例如位于比利时的圣吉斯兰(Saint-Ghislain)数据中心,它自去年底开始运行,无任何制冷设备,全年大部分时间里使用室外空气进行降温,气温过高的时则采用过滤后的河水,总而言之这是相当先进与环保的一个数据中心。

但 Spanner 可以让独立的数据中心变得更加具有弹性,它就像是神经网络一般,把谷歌在全球的数据中心结合在一起。它模糊了数据的地理界线,以如似 DNS 的工作原理简化了分布式文件的访问。在技术的继承上,它同谷歌的分布式数据库 BigTable 类似,但数据的组织模式则全然不同。

Spanner 的目标是在 99% 的时间里,将数据的访问耗时控制在 50 毫秒以下;在数据的备份方面:所有数据至少在欧洲保存 2 份,在美国保存 2 份,在亚洲保存 1 份。它还将数据中心划分为更小的层级,互相之间独立运作以提供更高冗余能力。

Spanner 还能做什么?我觉得非常牛鼻的一个构想是南北半球数据中心间的负载调配。南北半球气候相反,北半球处于冬季的时候,便可以将南半球的负载调配至北半球,不仅减少数据中心的制冷开支,还能防止数据中心由于过载而导致的
宕机。不局限于纬度,经度间亦可以进行调配。一般而言,夜间用电比较便宜温度也低,因此可以将负载分配到这类数据中心之上,所谓追月,便是如此吧。

但 Spanner 目前亦有问题,例如去年 Gmail 的两次宕机便是由于数据中心间的负载转移所引发。

这突然让我觉得,若说 Twitter 似茂密繁杂的神经,谷歌更像是支撑信息流动的血脉。

飞猪曾在 Twitter 上感叹谷歌的 Matrix 化,但或许可以释然的是,没有一个国家有能力组建和维护如此庞大的服务器,是纯粹的商业力量使然,这也许是仍让人怀有希望的地方。