原文链接:http://blog.cathayan.org/item/1362
这个故事名字叫How Google Works,网站上分了14页,非常全面地解释了Google是怎么转起来的,同时也还相当地深入--对于报刊而言。不过它实在太长,看过后再也不想往前翻了,所以就依记忆写点有趣的吧。有任何问题都请参考原文。(http://www.baselinemag.com/article2/0,1540,1985040,00.asp)
不过,正如文章中提到的:我们知道许多人进了Google,然后他们就消失了 这就是Google的神秘之处以及它保持神秘的方法。所以这篇文章的出处包括一些公开发表的论文,演讲,数量也很少,其他也是推测。
首先是Google的硬件,是许多台普通的电脑,文中猜测的数字是45万台(这个数字可能会有出入,但随着时间不断增长应该是真的)。我记得有报道说某Google高管一次说不是随便的PC,而是很高档的服务器,这个说法并没有得到其他佐证。这些机器分布在全球许多个数据中心,都柏林、弗吉尼亚、加州、俄勒岗等等。Google的所有服务都依赖于这些机器。2005年,Google在服务器以及数据中心上面花费了8.38亿美元。
而且Google已经研发了快速部署这些服务器的技术,它把机器组装在20英尺或40英尺长的集装箱中,放在卡车上就可以运走。一个箱子里可能会装5000个Opteron处理器和3.5PB的存储设备。
为了利用这些机器,当然首先是为了满足网页索引计算的要求,Google还开发了自己的文件系统,最早称为BigFile,然后称为GFS,这个系统单个分块就有64MB,并且据说很少出现小文件,所以利用还是很充分。最初当Google只索引2500个网页的时候,总容量就有100多GB。但一般网页通常都很小,整个网站扒下来才能用MB来算,不知道是不是一个网站算一个文件?
在这个系统中,有一个主服务器,它掌管文件的名字存放位置等数据,真正的文件放在文件服务器上,一个主服务器加上成千上万台文件服务器成为一个GFS集群,据说大概有50个这样的集群。
而为了保证可靠与服务快速,每个文件都至少有3个备份,一个坏了,另外两个马上响应,延迟不过是几个毫秒。
为了存储结构数据,Google还开发了BigTable,这是个数据库系统,它里面的表可以分成块存放在GFS上,这样就可以处理超级大的数据表。
为了在这样的分布平台上编程,Google开发了MapReduce,它是个中间层或接口,用C++完成,另有Java和Python接口。它可以把计算分布到多台机器上,让应用工程师不必再考虑这个问题。据说新加入的工程师第一周的培训就是用这个工具写统计一组网页中词汇出现频率的程序。去年10月,这个系统每天要处理3000项作业,比如分析最新的网页以及更新索引。
在这样复杂的情况下,Google还保持着性价比上的优势,通常其对手花3美元办成的事,它只要1美元。
文中说现任CEO去Google的时候,发现两位创始人还在用Quicken算账,而当时他们已经有200名员工和2000万的收入。而Google的项目管理绩效考评也很有意思,每周系统会给员工发个Email,问他们这周干了什么,以及下周要干什么。员工就回复;到下一周,系统会发信问,你上周说你要干123,那么做完了吗?这些全部是自然语言的,并且是可以搜索的。大家就能互相发现一些新点子。
文中引用比较多的话来自Google的CIO,Doug Merrill,一位普林斯顿的心理学博士。