By ROC
Google将其成功部分地归功于公司所发明的独有运算机制,令其搜索引擎可以在极短时间内对数以百万计的网络用户的搜索请求提供答案。
上周三,Google副总裁Urs Hoelzle在Eclipse会议上的一番发言,令与会者有机会 了解Google的搜索技术是如何产生以及该技术现在是如何运作的。
Hoelzle对与会者说,要发明Google的技术,开发者必须抛弃过去大型数据库所使用技术的思维定势。由于一天里面所有搜索请求的内容都是不可预计的,因此手头上就必须拥有100亿左右的网页数据,这是确实是很大的挑战。
Hoelzle出示了一系列早期Google硬件数据中心的照片。1997年拍的照片中是两台破旧的台式电脑。1999年,是数台Intel服务器,机器后面露出一堆乱七八糟的数据线。2000年的数据中心内,摆放的是1000台排列整齐的双处理器服务器。
Hoelzle表示,“底层的硬件价格十分低廉,但却完成了许多工作。”同时,使用如此多的服务器,可靠性是Google关心的另一重点。Hoelzle表示,“Google使用自动控制的机制进行运作。否则,工程师们需要为重启服务器而疲于奔命。”
为了抵抗不可抗力带来的影响,Google搭建了Google文件系统,该系统与Google的搜索运算系统紧密结合,并且对服务器故障有很高的承受能力。
Google的所有操作均基于一系列的大容量文件,这些文件被拆分为64M大小的数据包,分布在多个“数据包服务器”中。文件的描述、数据包的数目和
数据包的位置等资料都存放在中央服务器中。每一个64M的数据包都会在另外两个服务器上备份,三份拷贝的路径亦存放在中央服务器中。
由于所有的文件都存放在Red Hat
Linux服务器中,Google以很低的成本就保证了服务的可靠性。中央服务器会定时向数据包服务器发出脉冲信号,确定数据包服务器是否在正常运作。如
果没有收到应答信号,又或者应答信号中显示某台数据包服务器的数据受到损害,中央服务器会从其他数据包服务器上取出数据包修复受损的服务器。这一工作通常
在一分钟内则可以完成。
Hoelzle指出,只有三台服务器上的拷贝同时受损,才会对Google的服务有所影响。这时候,就需要用一段长时间去收集互联网的数据以重建受损文件。
Google会对Web Crawler收集到的网页进行索引, Web Crawler亦会对这些网页的作出描述。Hoelzle表示,建立网页的索引是很艰巨的一项工作,需要数百台计算机运算数天。同时,索引必须经常地更新。
为了高速地对索引进行检索,Google将其分成许多称为“碎片”的小块,分布在不同的服务器中,以便进行并行搜索。每一台服务器都搜索出一部分结果,然后再整合在一起成为完整的答案。
Hoelzle表示,Google的文件系统、索引技术及商用服务器的网格令每一次搜索的平均时间四分之一秒。而文件系统的定时脉冲信号机制,则给予Google很高的可靠性和可用性。
同时,当Google的服务器分析搜索请求的时候,会将该搜索请求拆分,然后再从数据库中找出令大部分用户满意的结果,这一过程称为“map
reduction”。Hoelzle表示,“Google曾经在一次大型维护意外事故中失去了2000台map
reduction服务器中的1800台。”但由于系统的负载均衡机制,将未完成的搜索任务合理分配,Google仍然能完成所有的搜索请求。
Hoelzle指出,“这一机制使我们能很快从故障中复原,并不影响我们的服务。”