Google一向很少对外透露其数据中心的工作,但5月28日,Google伙伴Jeff Dean在Google I/O会议的听众前,轻轻撩起了Google公司基础设施的神秘面紗。
一方面,Google用的是一般的服务器、处理器、硬盘、软驱等等。另一方面,Dean似乎认为1800台服务器也是非常普通、不值得一提。而Google公司使用的软件,能在半秒之內回应700至1000台服务器的搜索請求,则完全是另一回事。
Google从未透露他们究竟拥有多少台服务器,但Dean认为至少不下数十万台。Dean表示,每個机柜里存放了大约40台服务器。而根据某项估 计,Google目前在全球有36個数据中心,以每个中心有150个机柜计算, Google的服务器至少超过20万台,而实际数字还要比这大得多,且每天都在增加中。
不论真正的数字有多少,Google的成就也实在惊人,部分原因是他们推翻了电脑业的传统做法。当所有的超大型数据中心,如纽约股票交易所或航空公司的联合订位系统都是采用许多主流服务器和软件系统的时候,Google的数据中心绝大部分却是自身的技术建设而成。
有些制造和出售服务器的公司虽然不以为然,但Google显然相信自己的技术命运最好操纵在自己手中。Google搜索产品与使用者经验副总裁搜 Marissa Mayer在5月29日的演讲中提到,共同创办人Larry Page鼓励员工对“不可能的事情”保持一种健康的不敬。也就是说,别太相信有什么不可能的事情。
要维持如此大规模的运作,Google必须对每一台机器都抱有一种随时可牺牲的态度,服务器制造商喜欢宣传他们的主机质量优越、具有高度承受故障或当机的能力,但Google仍然宁愿把钱投资在冗余软件系统上。
Dean表示:“我们的观点是,拥有两倍数量但比较不可靠的硬件,胜过数量一半但比较可靠的硬件。你必须为软件提供可靠保障,如果你有1万台主机在运作,每天一定会有一些意外。”
Dean说,每次新业务上线最能显示出硬件的脆弱。一般每个新业务上线的第一年,通常会发生1000次个别主机的故障、数千次硬盘故障;一次电力输送 问题,会导致500至1000太主机失效约6小时;20次机柜损坏,每次会造成40至80台主机下线;5次机柜摇晃,会导致一半的网络封包在传送过程中遗 失;整个业务至少一次重新上线,在两天之内的任何时间,影响5%到主机。整个业务中还有一半的几率会过热,可能导致5分钟内让几乎所有服务器当机,恢复则 需要花费1到2天地时间。
虽然Google用一般的硬件组装其服务器,却不用传统的封装,他们要求英特尔提供特制的主机板。Dean表示,Google目前在每40台服务器的机柜外,都包了一层外壳,这是Google自行开发的设计,而不是服务器厂商提供的外壳。
Dean表示,Google使用了几种服务器组装的方式,有些配备了很多硬盘,有点则数量比较少。还有一些大范围的差异,他说:“我们不同的数据中心都有一些差异,但数据中心内部不会。”
对于服务器本身,Google偏好使用多核心晶片。许多习惯追求运算速度的软件公司其实很难适应多核心的晶片,但Google沒有这种问题。他们在技术上早就必须适应横跨数万台电脑的结构,因此他们已经进入平行运算的世界。
Dean说:“我们真的很喜欢使用多核心主机。对我们而言,多核心主机就像很多相互连接、性能优越的小机器,对我们来说相对好用。”
虽然Google对搜索和其他服务都要求快速回应,其平行运算能在单一指令的执行相对较慢时产生快速回应的结果。这对于多核心处理器和多线程模式设计者是一大鼓励。Dean說:“单线程的表现对我们来说无关紧要,我们有很多平行化的问题。”
那么Google要如何处理这些一般的硬件问题呢?用软件。
Dean说明了Google软件的三个核心要素:GFS(Google档案系统)、BigTable和MapReduce演算法。虽然Google资助了许多有助于其开展的开放源代码的计划,这些仍然属于专有软件。
Dean表示,三者中级别最低的GFS几乎在所有主机中运作,负责储存资料。某些GFS的化身是“许多petabyte大小”的档案系统。目前有超过200个业务在执行GFS,其中许多都包含数千台主机。
GFS把一块储存的资料(通常是64MB),至少放在三台称为chunkserver的主机內;假如chunkserver发生故障,主服务器便负责吧资料备份到一个新的地方。Dean說:“至少在储存层级,主机故障完全由GFS系统处理。”
一窥Google数据中心自行定制的40台服务器机柜。基础建设大师Jeff Dean在Google I/O大会上展示了这张照片。