云计算Google的技术构架一、前言计算无疑是今年IT技术界最热点的关键词之一。从谷歌趋势分析来看,国际上Cloudcomputing是从2007年中期开始成为整个业界关注的重点,在中国云计算是从2008年开始成为中国IT界和通信界关注的核心。特别是,当中国移动2008年开始关注计算,并推动中国移动相关的业务支撑系统、业务软件平台开始向计算的平台迁移。使得整个中国IT界、通信界的相关产业力量更加关注计算,同时大家也开始意识到了计算确实可以大大的节省海量计算的总体拥有成本。cloudcomputing云计算当业界谈到计算的时候,都会第一个想到谷歌Google。我们日常在使用的GoogleSearch,GoogleEarth,GoolgeMap,GoogleGmail,GoogleDoc等等业务都是Google基于自己计算平台来提供的。Google也是通过云计算的方式,大量的降低计算成本,使之业务更具有竞争力。Google原先企业初期阶段,获得的投资有限,只能自己攒机,但是很差的机器不可能发挥服务器的性能和稳定性,于是只有去想该如何提高可靠性,如何利用很多破烂机器获得更高的性能。这就有了云计算的雏形。今天我们都知道Google的规模,而如果我们不去认清计算的强大,我们就不知道互-----------------------Page2-----------------------联网的未来和规则。Google在98年的时候被迫发现了这一规则,然后我们看到了聚合的力量,今天微软、IBM、雅虎、百度、亚马逊这些企业看到了规则,于是开始进入计算领域。所以我们研究计算,可以系统剖析一下Google的技术构架,这对于我们搭建自己自身的计算平台有比较好的借鉴意义和标杆意义!二、Google的整体技术构架说明由于Google没有官方发布一个自身的技术构架说明。本文主要的信息都来自互联网中对于Google网络技术构架的分析,大量信息来自labs.google.com。Google最大的IT优势在于它能建造出既富于性价比(并非廉价)又能承受极高负载的高性能系统。因此Google认为自己与竞争对手,如亚马逊网站(Amazon)、电子港湾(eBay)、微软(Microsoft)和雅虎(Yahoo)等公司相比,具有更大的成本优势。其IT系统运营约为其他互联网公司的60%左右。同时Google程序员的效率比其他Web公司同行们高出50%~100%,原因是Google已经开发出了一整套专用于支持大规模并行系统编程的定制软件库。从整体来看,Google的计算平台包括了如下的技术层次。1)网络系统:包括外部网络(ExteriorNetwork),这个外部网络并不是指运营商自己的骨干网,也是指在Google计算服务器中心以外,由Google自己搭建的由于不同地区/国家,不同应用之间的负载平衡的数据交换网络。内部网络(InteriorNetwork),连接各个Google自建的数据中心之间的网络系统。2)硬件系统:从层次上来看,包括单个服务器、整合了多服务器机架和存放、连接各个服务器机架的数据中心(IDC)。3)软件系统:包括每个服务器上面的安装的单机的操作系统经过修改过的RedhatLinux。Google计算底层软件系统(文件系统GFS、并行计算处理算法Mapreduce、并行数据库Bigtable,并行锁服务ChubbyLock,计算消息队列GWQ)4)Google内部使用的软件开发工具Python、Java、C++等-----------------------Page3-----------------------5)Google自己开发的应用软件GoogleSearch、GoogleEmail、GoogleEarth三、Google各个层次技术介绍1、Google外部网络系统介绍当一个互联网用户输入的时候,这个URL请求就会发到GoogleDNS解析服务器当中去,那么Google的DNS服务器就会根据用户自身的IP地址来判断,这个用户请求是来自那个国家、那个地区。根据不同用户的IP地址信息,解析到不同的Google的数据中心。进入第一道防火墙,这次防火墙主要是根据不同端口来判断应用,过滤相应的流量。如果仅仅接受浏览器应用的访问,一般只会开放80端口http,和443端口https(通过SSL加密)。将其他的来自互联网上的非Ipv4/V6非80/443端口的请求都放弃,避免遭受互联网上大量的DOS攻击。据说Google使用了思杰科技(CitrixSystems)的Netscaler应用交换机来做web应用-----------------------Page4-----------------------的优化。NetScaler可将Web应用性能加速高达5倍。使用高级优化技术如动态缓存时,或者当网络延迟或数据包丢失增大时,性能增益会更高。这里提到的httpmultiplexting技术是可以是进行http的每个session分解开。从不同的后端服务器(缓存)来获取内容,这样可以大大提升webhttp性能,同时有效降低后端web应用服务器的处理和联接压力。在大量的web应用服务器(WebServerFarm)前,Google使用反向代理(ReverseProxy)的技术。反向代理(ReverseProxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。Google使用的是SquidCache的软件方式来实现反向代理应用的,SquidCache一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度。在Googleweb应用服务器需要调用Google内部存储的信息和资源的时候,在通过一个防火墙进入内部的网络,来访问其他的基于自身GFSII系统的应用服务和数据库。2、Google内部网络架构介绍Google自己已经建设了跨国的光纤网络,连接跨地区、跨国家的高速光纤网络。内部网络已经都是Ipv6的协议在运行。网络中的路由交换设备主要还是来自Juniper,Cisco,Foundry,HP这四家公司。内部网关协议(IRP)是基于OSPF(开放式最短路径优先)进行修改-----------------------Page5-----------------------的。在每个服务器机架内部连接每台服务器之间网络是100M以太网,在服务器机架之间连接的网络是1000M以太网。在每个服务器机架内,通过IP虚拟服务器(IPVirtualServer)的方式实现传输层负载Linux内核内的平衡,这个就是所谓四层LAN交换。IPVS使一个服务器机架中的众多服务成为基于Linux内核虚拟服务器。这就像在一堆服务器前安装一个负载均衡的服务器一样。当TCP/UDP的请求过来后,使一服务器可以使用一个单一的IP地址来对外提供相关的服务支撑。3、Google的大规模IDC部署战略Google应该是目前世界上存储信息最多的企业了。而且还在一直不断的致力于将传统信息仅可能的数字化。将这样海量的信息进行存储、进行处理。就需要大量的计算机服务器。为了满足不断增长的计算需求。Google很早就进行了全球的数据中心的布局。由于数据中心运行后,面临的几个关键问题的就是充足电力供应、大量服务器运行后的降温排热和足够的网络带宽支持。所以Google在进行数据中心布局的时候,就是根据互联网骨干带宽和电力网的核心节点进行部署的,尽快考虑在河边和海边,想办法通过引入自然水流的方式来降低降温排热的成本。达拉斯(Dalles)是美国俄勒冈州北部哥伦比亚河(Columbiariver)岸上的一个城市,Google在Dalles的边上拥有的30英亩土地,他们在这里建立了几乎是世界上最大,性能最好的数据中心。四个装备有大空调设施的仓库内,放置着数万台Internet服务器,这些服务器每天处理着数十亿条Google网站传递给世界各个角落的用户的数据。-----------------------Page6-----------------------Google达拉斯这个数据中心占用了附近一个180万千瓦(1.8GW)水力发电站的大部分电力输出。对比来看目前中国长江三峡水电站的额定功率是1820万千瓦。目前Google已经在全球运行了38个大型的IDC中心,超过300多个GFSII服务器集,超过80万台计算机。从服务器集部署的数量来看美国本地的数量第一,欧洲地区第二,亚洲地区第三,在南美地区和俄罗斯各有一个IDC数据中心。目前Google在中国的北京和香港建设了自己的IDC中心,并部署了自己的服务器农场。其中目前还在进行建设的第38个IDC是在奥地利的林茨市(Linz)附近的Kronstorf村。未来,Google还准备在中国台湾地区、来西亚、立陶宛等地区来进行部署。从目前的Google数据中心部署的情况来看,中东和非洲地区目前Google还没有建设计划。下图是Google的IDC中心/服务器农场(GoogleServerFarm)的全球分布图。-----------------------Page7-----------------------Google自己设计了创新的集装箱服务器,数据中心以货柜为单位,标准谷歌模块化集装箱装有30个的机架,1160台服务器,每台服务器的功耗是250KW。(Google2009年公布的信息)。下图是Google模块化集装箱的设计示意图。这种标准的集装箱式的服务器部署和安装策略可以是Google非常快速的部署一个超大型的数据中心。大大降低了对于机房基建的需求。4、Google自己设计的服务器机架构架Google的服务器机架有两种规格40U/80U的。这主要是因为原来每个服务器刀片是1U-----------------------Page8-----------------------高,新的服务器刀片都是2U高的。据说Google后期使用的服务器主板是台湾技嘉,服务器主板可以直接插入到服务器机架中。5、Google自己设计的PC服务器刀片绝大部分企业都会跟诸如戴尔、惠普、IBM或Sun购买服务器。不过Google所拥有的八十万台服务器都是自己设计打造来的,Google认为这是公司的核心技术之一。Google的硬件设计人员都是直接和芯片厂商和主板厂商协作工作的。2009年,Google开始大量使用2U高的低成本解决方案。标准配置是双核双通道CPU,据说有Intel的,也有AMD的在使用。8个2GB的DDR3,支持ECC容错的高速内存,采用RAID1的磁盘镜像,来提升I/O效率。磁盘采用SATA,单机存储容量可以达到1-2TB。每个服务器刀片自带12V的电池来保证在短期没有外部电源的时候可以保持服务器刀片正常运行。Google的硬件设计人员认为,这个自带电池的方式,要比传统的使用UPS的方式效率更高。一般数据中心多倚赖称为不间断电源系统(UPS)的大型中控机型,这基本上算是大电池,-----------------------Page9-----------------------会在主电力失效而发电机还来不及启动时,暂时协助供电。Google的硬件设计人员表示,直接把电力内建到服务器比较便宜,而且成本能直接跟服务器数量相符合。“这种作法比使用大型UPS节省得多,如此也不会浪费多余的容量。”效率也是另一个财务考量因素。大型UPS可达92-95%的效率,这意味着许多电力还是被浪费掉了。但Google采用的内建电池作法却好很多,Google相关人员表示,“我们测量的结果是效率超过99.9%。年份Google服务器刀片硬件配置1999/2000PII/PIII128MB+2003/200