云计算Google的技术构架_第1页
云计算Google的技术构架_第2页
云计算Google的技术构架_第3页
云计算Google的技术构架_第4页
云计算Google的技术构架_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、云计算Google的技术构架_、/ A 一、刖计算无疑是今年IT技术界最热点的关键词之一。从谷歌趋势分析来看,国际上Cloud computing是从2007年中期开头成为整个业界关注的重点,在中国云计算是从2022年开 头成为中国IT界和通信界关注的核心。特殊是,当中国移动2022年开头关注 计算,并推 动中国移动相关的业务支撑系统、业务软件平台开头向计算的平台迁移。使得整个中国IT界、通信界的相关产业力气更加关注计算,同时大家也开头意识到了计算确实可以大大的节约海量计算的总体拥有本钱。cloud computing 云计算当业界谈到 计算的时候,都会第一个想到谷歌Googleo我们日常在使

2、用的GoogleSearch, Google Earth, Goolge Map, Google Gmail, Google Doc 等等业务都是 Google 基于 自己计算平台来供应的。Google也是通过云计算的方式,大量的降低计算本钱,使之业务更具有竞争力。Google原先企业初期阶段,获得的投资有限,只能自己攒机,但是很差的机器不行能发挥服务器的性能和稳定性,于是只有去想该如何提高牢靠性,如何采用很多”破烂“机器获 据说有Intel的,也有AMD的在使用。8个2GB的DDR3,支持ECC容错的高速内存, 采纳RAID 1的磁盘镜像,来提升I/O效率。磁盘采纳SATA,单机存储容量可以

3、到达1-2TB。每个服务器刀片自带12V的电池来保证在短期没有外部电源的时候可以保持服务器刀片正常运行。Google的硬件设计人员认为,这个自带电池的方式,要比传统的使用UPS的方式效率更高。一般数据中心多倚赖称为不间断电源系统(UPS)的大型中控机型,这基本上算是大电池,Page 9会在主电力失效而发电机还来不及启动时,临时帮助供电。Google 的硬件设计人员表示,直接把电力内建到服务器比拟廉价,而且本钱能直接跟服务器数量相符合。“这种作法比使用大型UPS节约得多,如此也不会铺张多余的容量J效率也是另一个财务考量因素。大型UPS可达92-95%的效率,这意味着很多电力还是被铺张掉了。但Go

4、ogle采纳的内建电池作法却好很多,Google相关人员表示,“我们测量 的结果是效率超过99.9%年份Google服务器刀片硬件配置1999/2000 PII/PIII 128MB+200切004Celeron 533, Pill 1.4 SMP, 2-4GB DRAM, Dual XEON 2.0/1-4GB/40-160GBIDE - SATA Disks via Silicon Images SATA 3114/SATA 31242006Dual Opteron/Working Set DRAM(4GB+)/2x400GB IDE (RAIDO?)20222-Way/Dual Core

5、/16GB/1-2TB SATA6、Google服务器使用的操作系统Google服务器使用的操作系统是基于RedhatLinux2.6的内核,并做了大量修改。修改了 GNUC函数库(glibc),远程过程调用(RPC),开发了自己的Ipvs,自己修改了文件系 统,形成了自己的GFSII,修改了 linux内核和相关的子系统,是其支持IPV6。采纳了 Python来作 为主要的脚本语言。下表是一些大型互联网公司使用的操作系统比照。网站操作系统Web应用服务器GoogleLinuxGoogle Web ServerPage 10微软Windows serverIISebayWindows serv

6、erIIS阿里巴巴LinuxApache新浪Free BSDApache百度LinuxApache163LinuxApache搜狐Sco UnixApache7、Google计算文件系统GFS/GFSIIGFSII cell是Google文件系统中最基础的模块。任何文件和数据都可以采用这种底层模块。GFSII通过基于Linux分布存储的方式,对于服务器来说,分成了主服务器(MasterServers)和块存储服务器(Chunk Servers), GFS上的块存储服务器上的存储空间以64MB为单位,分成很多的存储块,由主服务器来进行存储内容的调度和安排。每一份数据都是一式三份的方式,将同样的数

7、据分布存储在不同的服务器集中,以保证数据的平安性和吞吐的效率提高。当需要对于文件、数据进行存储的时候,应用程序之间将需求发给主服务器,主服务器依据所管理的块存储服务器的状况,将需要存储的内容进行安排,并将可以存储的消息(使用那些块存储服务器,那些地址空间),有应用程序下面的GFS 接口在对文件和数据直接存储到相应的块存储服务器当中。块存储服务器要定时通过心跳信号的方式告知主服务器,目前自己的状况,一旦心跳信号出了问题,主服务器会自动将有问题的块存储服务器的相关内容进行复制。以保证数据的 平安性。数据被存储时是经过压缩的。采纳的BMDiff和Zippy算法。BMDiff使用最长公共子序列进行压缩

8、,压缩lOOMB/s, 解压缩约lOOOMB/s.类似的有IBMHashSuffix Array DeltaCompression.Zippy是LZW的改进版本,压缩比不如LZW, 但是速度更快.Page 118、Google 并行计算构架Mapreduce有了强大的分布式文件系统,Google遇到的问题就是怎么才能让公司全部的程序员都学会些分布式计算的程序呢?于是,那些Google工程师们从lisp和其他函数式编程语言中的映射和化简操作中得到灵感,搞出了 Map/Reduce这一套并行计算的框架。Map/Reduce被Google拿来重新了 Google Search Engine的整个索引

9、系统。ffi Doug Cutting同样用Java 将这一套实现和HDFS合在一起成为Hadoop的Core。MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce (化简)”,和他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。映射和化简简洁说来,一个映射函数就是对一些独立元素组成的概念上的列表(例如,一个测试成 绩的列表)的每一个元素进行指定的操作(比方前面的例子里,有人觉察全部同学的成果都 被高估了一分,他可以定义一个“减一”的映射函数,用来修正这个错误。)。事实上,每个 元素都是被独

10、立操作的,而原始列表没有被更改,由于这里创立了一个新的列表来保存新的答案。这就是说,Map答案。这就是说,Map操作是可以高度并行的,这对高性能要求的应用以并行计算领域的需求特别有用。而化简操作指的是对一个列表的元素进行适当的合并(连续看前面的例子,假如有人想 知道班级的平均分该怎么做?他可以定义一个化简函数,通过让列表中的元素 跟自己的相 Page 12邻的元素相加的方式把列表减半,如此递归运算直到列表只剩下一个元素,然后用这个元素 除以人数,就得到了平均分。)。虽然他不如映射函数那么并 行,但是由于化简总是有一个简洁的答案,大规模的运算相对独立,所以化简函数在高度并行环境下也很有用。分布和

11、牢靠性MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现牢靠性;每个 节点会周期性的把完成的工作和状态的更新报告回来。假如一个节点保持缄默超过一个预 设的时间间,主节点(类同Google File System中的主服务器)纪录下这个节点状态为 死亡,并把安排给这个节点的数据发到别的节点。每个操作使用命名文件的原子操作以确保不 会发生并行线程间的冲突;当文件被改名的时候,系统可能会把他们复制到任务名以外的另一个名字上去。(避开副作用)。化简操作工作方式很类似,但是由于化简操作在并行力量较差,主节点会尽量把化简操作调度在一个节点上,或者离需要操作的数据尽可能进的节点上了;这个

12、特性可以满意Google的需求,由于他们有足够的带宽,他们的内部网络没有那么多的机器。在Google, MapReduce用在特别广泛的应用程序中,包括“分布grep,分布排序,web 连接图反转,每台机器的词矢量,web访问日志分析,反向索引构建,文档聚类,机器学习,基于统计的机器翻译”值得留意的是,MapReduce实现以后,它被用来重新生成Google的整个索弓I,并取代老的ad hoc程序去更新索引。MapReduce会生成大量的临时文件, 为了提高效率,它采用Google文件系统来管理和访问这些文件。Page 139、Google并行计算数据库Bigtable有了强大的存储,有了强大

13、的计算力量,剩下的Google要面对的是:它的应用中有很多结构化、半结构化的数据,如何高效地管理这些结构化、半结构化的数据呢? Google 需要的是一个分布式的类DBMS的系统,于是催生了 BigTable这个东西让Google在供应新Google 的 BigTable 从 2004 年初就开头研发了,BigTable 服务时的运行本钱降低,最大限度地采用了计算力量。BigTable是建立在GFS , Scheduler , LockService 和 MapReduce 之上的。每个Table都是一个多维的稀疏图sparse map。Table由行和列组成,并且每个存储单元cell都有一个

14、时间戳。在不同的时间对同一个存储单元cell有多份拷贝,这样就可以记录数据的变动状况。数据存储的结构是(row:string, column:string, time:int64)-string行:表中的行键(目前任意字符串至64KB的大小)。每一个读取或写入的数据下单行的关 键是原子(不管数目不同的列被读取或行中写的),更简洁为客户的缘由关于系统中的行为同时 存在对同一行的更新。歹!J:Page 14列项分为集合称为列的家族,它们形成了访问掌握的基本单位。全部数据在一列中存储的家族通常是同一类型。当数据以这个列键值被存储之前,列的家族必需被创立。家族内的 任何列键值可以使用。由于,重叠的列键

15、值比拟少,与此相反,一个表可能有无限的列数。时间戳:Bigtable的每一个细胞中可以包含多个版本同样的数据,这些版本的时间戳索引。Bigtable的时间戳64位整数。它们可以被安排由Bigtable的,在这种状况下,他们真正代表联聪以 微秒的时间,或明确指定的客户端应用程序。应用程序需要避开冲突必需制造自己独特的时间戳。不同一个单元格的版本都存储在时间戳挨次递减,因此,最近的版本可以首先阅读。为了管理 大的Table,把Table依据行分割,这些分割后的数据统称为:Tablets。每 个Tablets也许有100-200 MB,每个机器存储100个左右的Tablets。底层的架构是:GFS。

16、由于GFS是一种分布式的文件系统,采纳Tablets的机制后,可以获得很好的负载均衡。比 如:可以把常常响应的表移动到其他空闲机器上,然后快速重建。Tablets 在系统中的存储方式是不行修改的immutable是不行修改的immutable的SSTables, 一台机器一个日志文件。BigTable中最重要的选择是将数据存储分为两局部,主体局部是不行变的,以SSTable 的格式存储在GFS中,最近的更新那么存储在内存(称为memtable)中。读操作需要依据 SSTable和memtable还综合打算要读取的数据的值。Page 15Google的Bigtable是不支持事务,只保证对单条纪

17、录的原子性。事务是好东西,但事 务也是导致数据库实现简单化、性能下降最主要的根源。BigTable的开发者通过调研后觉察 其实大家对事务都没什么需求,只要保证对单条纪录的更新是原子的就可以了。这样,为了 支持事务所要考虑的串行化、事务的回滚等、死锁检测(一般认为,分布式环境中的死锁检 测是不行能的,一般都用超时解决)等等简单问题都不见了。系统实现进一步简化。10 Google 并行锁服务 Chubby lock在Google这种的分布式系统中,需要一种分布式锁服务来保证系统的全都性。于是 Google 有了 Chubby lock service。而同样是 Yahoo ! Research 向

18、开源贡献了 Zookeeper,个类似Google Chubby的工程。得更高的性能。这就有了云计算的雏形。今日我们都知道Google的规模,而假如我们不去认清计算的强大,我们就不知道互Page 2联网的将来和规章。Google在98年的时候被迫觉察了这一规章,然后我们看到了聚合的 力量,今日微软、IBM、雅虎、百度、亚马逊这些企业看到了规章,于是开头进入 计算领域。所以我们讨论计算,可以系统剖析一下Google的技术构架,这对于我们搭建自己自身的计算平台有比拟好的借鉴意义和标杆意义!二、Google的整体技术构架说明由于Google没有官方发布一个自身的技术构架说明。本文主要的信息都来自互联

19、网中对于Google 网络技术构架的分析,大量信息来自。Google最大的IT优势在于它能建筑出既富于性价比(并非廉价)又能承受极高负载的 高性能系统。因此Google认为自己与竞争对手,如亚马逊网站(Amazon)、电子港湾(eBay)、 微软(Microsoft)和雅虎(Yahoo)等公司相比,具有更大的本钱优势。其IT系统运营约为其他互在Google File System(GFS)中,有很多的服务器,这些服务器需要选举其中的一台作为master servero Value就是master server的地址,GFS就是用Chubby来解决的这个问题,所有的server通过Chubby供

20、应的通信合同到Chubby server上创立同一个文件,当然,最终 只有一个server能够获准创立这个文件,这个server就成为了 master,它会在这个文件中 写入自己的地址,这样其它的server通过读取这个文件就能知道被选出的master 的地址。Chubby首先是一个分布式的文件系统。Chubby能够供应机制使得client可以在Chubbyservice上创立文件和执行一些文件的基本操作。说它是分布式的文件系统,是由于一个Chubby cell是一个分布式的系统。但是,从更高一点的语义层面上,Chubby 是一个lockservice, 一个针对松耦合的分布式系统的locks

21、erviceo所谓lock service,就是这个service能够供应开发人员常常用的“锁”,“解锁”功能。通过Chubby, 一个分布式系统中的上千个client都能够 对于某项资源进行“加锁”,“解锁二Chubby中的“锁”就是建立文件,在上例中,创立文件其实就是进行“加锁”操作,Page 16创立文件胜利的那个server其实就是抢占到了 “锁二用户通过翻开、关闭和读取文件,获 取共享锁或者独占锁;并且通过通信机制,向用户发送更新信息。11、Google消息序列处理系统Google WorkqueueGWQ (Google Workqueue)系统是负责将Mapreduce的工作任务

22、支配各个各个计算 单位的(Cell/Cluster)。仲裁(进程优先级)附表,安排资源,处理故障,报告状况,提供的 结果- 通常队列掩盖在GFS上的。消息队列处理系统可以同时管理数万服务器。通过API 接口和命令行可以调动GWQ来进行工作。12、Google 的开发工具。除了传统的C+和Javao还开头大量使用PythonoPython是一种面对对象、直译式计算机程序设计语言,也是一种功能强大而完善的通 用型语言,已经具有十多年的进展历史,成熟且稳定。这种语言具有特别简捷而清楚的语法 特点,适合完成各种高层任务,几乎可以在全部的操作系统中运行。Python可能被粗略地分类为“脚本语言”(Scr

23、ipt Language),但实际上一些大规模软件开发方案例如Zope、Mnet的支持者较开发方案例如Zope、Mnet的支持者较BitTorrent, Google 也广泛地使用它。Python喜爱称它为一种高级动态编程语言,缘由是“脚本语言”泛指仅作简洁编程任务的语言,如shell script、JavaScript等只能处理简洁任务的编程语言,并不能与Python相提并论。此外,由于Python 对于C和其他语言的良好支持,很多人还把Python作为一种“水语言”(Glue Language)使用。使用Python 将其他语言编写的程序进行集成和封装。在Google内部的很多工程使用C+

24、编写性能要求极高的局部,然后用Python调用相应的模块。Sawzall,为了是内部的工程师和程序人员可以更便利的适应并行计算的方式,Google自己开发的一种查询语言,Sawzall是一种类型平安的脚本语言。由于Sawzall自身处理了 很多问题,所以完成相同功能的代码就简化了特别多与MapReduce的C+代码相比简化了 10倍不止。Page 17四、借鉴与总结从Google的整体的技术构架来看,Google计算系统依旧是边做科学讨论,边进行商业部署,依靠系统冗余和良好的软件构架来低本钱的支撑浩大的系统运作的。大型的并行计算,超大规模的IDC快速部署,通过系统构架来使廉价PC服务器具有超过

25、大型机的稳定性都已经不在是科学试验室的故事,已经成为了互联网时代,IT企业获得 核心竞争力进展的基石。Google在应对互联网海量数据处理的压力下,充分借鉴了大量开源代码,大量借鉴了其他讨论机构和专家的思路,走了一条差异化的技术道路,构架自己的有创新性的计算平 台。从Google这样互联网企业可以看到,基于Linux系统的开源代码的方式,让企业可以 不收到商业软件系统的限制,可以自主进行二次、定制开发。而这种能充分采用社会资源, 并依据自己的力量进行定制化的系统设计最终将会成为互联网企业之间的核心竞争力。联网公司的60%左右。同时Google程序员的效率比其他Web公司同行们高出50%100%

26、,缘由是Google 已经开发出了一整套专用于支持大规模并行系统编程的定制软件库。从整体来看,Google的计算平台包括了如下的技术层次。1)网络系统:包括外部网络(Exterior Network),这个外部网络并不是指运营商自己的骨干网,也是指在Google计算服务器中心以外,由Google自己搭建的由于不同地区/国家,不同应用之间的负载平衡的数据交换网络。内部网络(Interior Network),连接各个Google 自建的数据中心之间的网络系统。2)硬件系统:从层次上来看,包括单个服务器、整合了多服务器机架和存放、连接各个服务器机架的数据中心(IDC)。3)软件系统:包括每个服务器

27、上面的安装的单机的操作系统经过修改过的Redhat LinuxoGoogle计算底层软件系统(文件系统GFS、并行计算处理算法Mapreduce并行数据库Bigtable,并行锁服务Chubby Lock,计算消息队列GWQ )Google内部使用的软件开发工具Python Java C+Page 3Google 自己开发的应用软件 Google Search Google Email Google Earth三、Google各个层次技术介绍1、Google外部网络系统介绍当一个互联网用户输入的时候,这个URL恳求就会发到Google DNS解析服务器当中去,那么Google的DNS服务器就会

28、依据用户自身的IP地址来推断,这个用户恳求是来自那个我国、那个地区。依据不同用户的IP地址信息,解析到不同的Google的数据中心。进入第一道防火墙,这次防火墙主要是依据不同端口来推断应用,过滤相应的流量。如果仅仅接受 扫瞄器应用的访问,一般只会开放80端口 ,和443端口 s (通过SSL加密)。将其他的来自互联网上的非Ipv4/V6非80a43端口的恳求都放弃,避开患病互联网上大量的DOS攻击。据说Google使用了思杰科技(Citrix Systems)的Netscaler应用交换机来做web应用Page 4的优化。NetScaler 可将Web应用性能加速高达5倍。使用高级优化技术如动

29、态缓存时,或者当网络延迟或数据包丧失增大时,性能增益会更高。这里提到的 multiplexting 技术是可以是进行 的每个session 分解开。从不同的后端服务器(缓存)来猎取 内容,这样可以大大提升web 性能,同时有效降低后端web应用服务器的处理和联接压力。在大量的web应用服务器(Web Server Farm)前,Google使用反向代理(ReverseProxy )的技术。反向代理(Reverse Proxy )方式是指以代理服务器来接受internet上的连接恳求, 然后将恳求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上恳求 连接的客户端,此时代

30、理服务器对外就表现为一个服务器。Google使用的是Squid Cache的软件方式来实现反向代理应用的,Squid Cache 一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛 的用途,从作为网页服务器的前置cache服务器缓存相关恳求来提高Web服务器的速度。在Google web应用服务器需要调用Google内部存储的信息和资源的时候,在通过一 个防火墙进入内部的网络,来访问其他的基于自身GFS II系统的应用服务和数据库。2、Google内部网络架构介绍Google自己已经建设了跨国的光纤网络,连接跨地区、跨我国的高速光纤网络。内部网络已经都是

31、Ipv6 的合同在运行。网络中的路由交换设施主要还是来自Juniper, Cisco,Foundry, HP这四家公司。内部网关合同(IRP)是基于OSPF(开放式最短路径优先)进行修 改Page 5的。在每个服务器机架内部连接每台服务器之间网络是100M 以太网,在服务器机架之间 连接的网络是1000M以太网。在每个服务器机架内,通过IP虚拟服务器(IP Virtual Server)的方式实现传输层负载 Linux内核内的平衡,这个就是所谓四层LAN交换。IPVS使一个服务器机架中的众多服务成为基 于Linux内核虚拟服务器。这就像在一堆服务器前安装一个负载均衡的服务器一样。当TCP/UD

32、P的恳求过来后,使一服务器可以使用一个单一的IP地址来对外供应相关的服务 支撑。3、Google的大规模IDC部署战略Google应当是目前世界上存储信息最多的企业了。而且还在始终不断的致力于将传统 信息仅可能的数字化。将这样海量的信息进行存储、进行处理。就需要大量的计算机服务器。 为了满意不断增长的计算需求。Google很早就进行了全球的数据中心的布局。由于数据中 心运行后,面临的几个关键问题的就是充分电力供应、大量服务器运行后的降温排热和足够 的网络带宽支持。所以Google在进行数据中心布局的时候,就是依据互联网骨干带宽和电 力网的核心节点进行部署的,尽快考虑在河边和海边,想方法通过引入自然水流的方式来降 低降温排热的本钱。达拉斯(Dalles)是美国俄勒冈州北部哥伦比

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论