作者: 方恺
Google在搜索领域的成功无疑离不开其先进的搜索算法,然而在背后却存在着一些鲜为人知的秘密:其实Google在运行数据中心方面的经验比其搜索算法更宝贵。
Google并没有耗资能够数千万甚至上亿美元的资金来购买昂贵的设备,而是仅有数百万美元购置的廉价计算机来构筑其基础设施。通过研究硬件成本,Google的技术人员发现,购买一些高端服务器的成本要远高于数十台更简单的"大众化"服务器。
但是购买廉价服务器后,难题就在于如何协调这些硬件的运行,确保一台计算机的故障不会影响到整个系统,能正常完成任务如返回搜索结果或显示广告。
为此Google考虑采用家用PC机,毕竟家用PC因软件和硬件缺陷而造成的崩溃每3年才会发生一次。以Google的规模,如果拥有数千台PC,每天有一台PC崩溃是很正常的。因此,最好是能够以自动的方式解决这一问题,否则服务肯定会出现问题。
为此,吸引全球最优秀计算机头脑的Google公司已经开发了大量的软件工具,来完成计算设备的安装。
Google拥有自己的文件系统,称为"Google文件系统",这一系统专门针对处理大型数据进行了优化,它能够处理64MB大小的数据块。更为重要的是,它能够应付随时可能发生的磁盘或网络故障。外Google的数据被复制三份,并存放在不同地方,这样确保万无一失。凭借这些应付故障的措施,PC就完全可以担负互联网搜索服务的重任。
Google数以千计的PC服务器运行一种基于Red Hat版本的简化版Linux,该系统内核已经针对Google的特殊应用进行了修改。
Google还设计了一种能够处理大量数据而迅速响应查询的系统。Google将整个Web划分为数以百万计的碎片,以Google的技术术语这些碎片被称为shard,它能在系统出错的时候被复制。
Google创建了一个出现在Web上的词汇索引,而且它还有文档服务器存储着Google现在的页面。
Google在数据中心管理方面另一个重要的技术创新是编写出能够在数以千计的服务器上平滑运行的软件系统。通常情况下,开发在多个服务器上并行运行的软件系统需要专门的编程工具和机巧。
Google的编程工具称为MapReduce,在系统出错的情况下,它能自动恢复整个程序,而这对削减成本至关重要。从去年开始,Google已经开始大规模使用MapReduce编程工具。
此外,Google还开发了批量任务调度软件Global Work Queue,能对上百万的操作进行调度安排。该软件系统能够将任务分解成许多更小的计算操作,并将它们分配给各台计算机完成。
为了解决紧急灾难性问题,Google还准备了6辆救火车,以应对Google数据中心发生的紧急事件。此外,电力成本是Google数据中心设计中的另一个重要因素。由于采购了更多廉价计算设备,整体功耗就会增加,为此控制电力开支也是Google设计数据中心必须考虑的一个主要问题。