云计算研究之数据中心.pdf
《云计算研究之数据中心.pdf》由会员分享,可在线阅读,更多相关《云计算研究之数据中心.pdf(25页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、云计算专题研究之数据中心1.Google数据中心从整体来看,Google的云计算包括了如下的技术层次。1)网络系统:包括外部网络(Exterior Network),这个外部网络并不是指运营商自己的骨干网,也是指在Google 云计算服务器中心以外,由Google 自己搭建的由于不同地区/国家,不同应用之间的负载平衡的数据交换网络。内部网络(Interior Network),连接各个 Google自建的数据中心之间的网络系统。2)硬件系统:从层次上来看,包括单个服务器、整合了多服务器机架和存放、连接各个服务器机架的数据中心(IDC)。3)软件系统:包括每个服务器上面的安装的单机的操作系统经过
2、修改过的Redhat Linux。Google 云计算底层软件系统(文件系统GFS、并行计算处理算法Mapreduce、并行数据库Bigtable,并行锁服务Chubby Lock,云计算消息队列GWQ)4)Google 内部使用的软件开发工具Python、Java、C+等5)Google 自己开发的应用软件Google Search、Google Email、Google Earth Google将 40 台服务器编为一个集群,而在全球范围,Google拥有 36 个数据中心。每个数据中心有150 个服务器集群。1.1 数据访问1.1.1.外部访问当一个互联网用户输入 的时候,这个 URL
3、请求就会发到Google DNS 解析服务器当中去,那么Google 的DNS 服务器就会根据用户自身的IP 地址来判断,这个用户请求是来自那个国家、那个地区。根据不同用户的IP地址信息,解析到不同的Google的数据中心。进入第一道防火墙,这次防火墙主要是根据不同端口来判断应用,过滤相应的流量。如果仅仅接受浏览器应用的访问,一般只会开放 80 端口http,和443 端口https(通过 SSL 加密)。将其他的来自互联网上的非Ipv4/V6 非80/443 端口的请求都放弃,避免遭受互联网上大量的DOS 攻击。据说Google 使用了思杰科技(Citrix Systems)的Netscal
4、er 应用交换机来做web 应用的优化。NetScaler 可将Web 应用性能加速高达 5 倍。使用高级优化技术如动态缓存时,或者当网络延迟或数据包丢失增大时,性能增益会更高。这里提到的 http multiplexting 技术是可以是进行 http 的每个 session 分解开。从不同的后端服务器(缓存)来获取内容,这样可以大大提升web http 性能,同时有效降低后端 web 应用服务器的处理和联接压力。在大量的 web 应用服务器群(Web Server Farm)前,Google使用反向代理(Reverse Proxy)的技术。反向代理(Reverse Proxy)方式是指以代
5、理服务器来接受internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet 上请求连接的客户端,此时代理服务器对外就表现为一个服务器。Google 使用的是 Squid Cache 的软件方式来实现反向代理应用的,Squid Cache一个流行的自由软件(GNU 通用公共许可证)的代理服务器和Web 缓存服务器。Squid 有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高 Web 服务器的速度。在Google web 应用服务器需要调用 Google内部存储的信息和资源的时候,再通过一个防火墙进入内部的网络,来访问其他
6、的基于自身 GFS II 系统的应用服务和数据库。1.1.2.内部访问Google 自己已经建设了跨国的光纤网络,连接跨地区、跨国家的高速光纤网络。内部网络已经都是Ipv6 的协议在运行。网络中的路由交换设备主要还是来自Juniper,Cisco,Foundry,HP这四家公司。内部网关协议(IRP)是基于 OSPF(开放式最短路径优先)进行修改的。在每个服务器机架内部连接每台服务器之间网络是100M以太网,在服务器机架之间连接的网络是1000M以太网。在每个服务器机架内,通过IP虚拟服务器(IP Virtual Server)的方式实现传输层负载 Linux内核内的平衡,这个就是所谓四层 L
7、AN 交换。IPVS 使一个服务器机架中的众多服务成为基于Linux 内核虚拟服务器。这就像在一堆服务器前安装一个负载均衡的服务器一样。当TCP/UDP 的请求过来后,使一群服务器可以使用一个单一的 IP 地址来对外提供相关的服务支撑。1.2.关键技术1.2.1Google 分布式文件系统 GFS/GFSII GFS 是Google 文件系统中最基础的模块。任何文件和数据都可以利用这种底层模块。GFS 通过基于 Linux 分布存储的方式,对于服务器来说,分成了主服务器(Master Servers)和块存储服务器(Chunk Servers),GFS 上的块存储服务器上的存储空间以 64MB
8、为单位,分成很多的存储块,由主服务器来进行存储内容的调度和分配。每一份数据都是一式三份的方式,将同样的数据分布存储在不同的服务器集群中,以保证数据的安全性和吞吐的效率提高。当需要对于文件、数据进行存储的时候,应用程序之间将需求发给主服务器,主服务器根据所管理的块存储服务器的情况,将需要存储的内容进行分配,并将可以存储的消息(使用那些块存储服务器,那些地址空间),有应用程序下面的 GFS 接口在对文件和数据直接存储到相应的块存储服务器当中。块存储服务器要定时通过心跳信号的方式告知主服务器,目前自己的状况,一旦心跳信号出了问题,主服务器会自动将有问题的块存储服务器的相关内容进行复制。以保证数据的安
9、全性。数据被存储时是经过压缩的。采用的BMDiff 和Zippy 算法。BMDiff 使用最长公共子序列进行压缩,压缩100MB/s,解压缩约 1000MB/s.类似的有 IBM Hash Suffix Array Delta Compression.Zippy 是LZW 的改进版本,压缩比不如 LZW,但是速度更快。1.2.2.Google并行计算构架 Mapreduce 有了强大的分布式文件系统,Google 遇到的问题就是怎么才能让公司所有的程序员都学会些分布式计算的程序呢?于是,那些Google 工程师们从 lisp 和其他函数式编程语言中的映射和化简操作中得到灵感,搞出了 Map/R
10、educe 这一套并行计算的框架。Map/Reduce被Google 拿来重新了 Google Search Engine 的整个索引系统。而 Doug Cutting同样用 Java 将这一套实现和 HDFS 合在一起成为Hadoop 的Core。MapReduce 是Google 提出的一个软件架构,用于大规模数据集(大于 1TB)的并行运算。概念“Map(映射)”和“Reduce(化简)”,和他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。映射和化简简单说来,一个映射函数就是对一些独立元素组成的概念上的列表(例如,一个测试成绩的列表)的每一个元素进行指定的操作(
11、比如前面的例子里,有人发现所有学生的成绩都被高估了一分,他可以定义一个“减一”的映射函数,用来修正这个错误。)。事实上,每个元素都是被独立操作的,而原始列表没有被更改,因为这里创建了一个新的列表来保存新的答案。这就是说,Map 操作是可以高度并行的,这对高性能要求的应用以及并行计算领域的需求非常有用。而化简操作指的是对一个列表的元素进行适当的合并(继续看前面的例子,如果有人想知道班级的平均分该怎么做?他可以定义一个化简函数,通过让列表中的元素跟自己的相邻的元素相加的方式把列表减半,如此递归运算直到列表只剩下一个元素,然后用这个元素除以人数,就得到了平均分。)。虽然他不如映射函数那么并行,但是因
12、为化简总是有一个简单的答案,大规模的运算相对独立,所以化简函数在高度并行环境下也很有用。分布和可靠性MapReduce 通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性;每个节点会周期性的把完成的工作和状态的更新报告回来。如果一个节点保持沉默超过一个预设的时间间隔,主节点(类同Google File System 中的主服务器)记录下这个节点状态为死亡,并把分配给这个节点的数据发到别的节点。每个操作使用命名文件的原子操作以确保不会发生并行线程间的冲突;当文件被改名的时候,系统可能会把他们复制到任务名以外的另一个名字上去。(避免副作用)。化简操作工作方式很类似,但是由于化简操作在并行能
13、力较差,主节点会尽量把化简操作调度在一个节点上,或者离需要操作的数据尽可能进的节点上了;这个特性可以满足 Google的需求,因为他们有足够的带宽,他们的内部网络没有那么多的机器。在Google,MapReduce 用在非常广泛的应用程序中,包括“分布grep,分布排序,web连接图反转,每台机器的词矢量,web访问日志分析,反向索引构建,文档聚类,机器学习,基于统计的机器翻译.”值得注意的是,MapReduce 实现以后,它被用来重新生成 Google的整个索引,并取代老的 ad hoc 程序去更新索引。MapReduce 会生成大量的临时文件,为了提高效率,它利用Google 文件系统来管
14、理和访问这些文件。Map reduce编程模型1.2.3.Google 分布式数据库技术 Bigtable BigTable 用来管理应用中那些结构化、半结构化的数据,BigTable 是建立在GFS,Scheduler,Lock Service 和MapReduce 之上的。上图是一个存储 Web网页的范例列表片断。行名是一个反向URL 即n.www。contents列族存放网页内容,anchor列族存放引用该网页的锚链接文本。CNN 的主页被 Sports Illustrater和MY-look的主页引用,因此该行包含了名叫“anchor:”和“anchhor:my.look.ca”的列。
15、每个锚链接只有一个版本 由时间戳标识,如 t9,t8;而contents列则有三个版本,分别由时间戳t3,t5,和t6标识。每个Table 都是一个多维的稀疏图 sparse map。Table 由行和列组成,并且每个存储单元 cell 都有一个时间戳。在不同的时间对同一个存储单元cell有多份拷贝,这样就可以记录数据的变动情况。数据存储的结构是(row:string,column:string,time:int64)-string 行:表中的行键(目前任意字符串至64KB 的大小)。每一个读取或写入的数据下单行的关键是原子(不论数目不同的列被读取或行中写的),更容易为客户的原因关于系统中的行
16、为同时存在对同一行的更新。列:列项分为集合称为列的家族,它们形成了访问控制的基本单位。所有数据在一列中存储的家族通常是同一类型。当数据以这个列键值被存储之前,列的家族必须被创建。家族内的任何列键值可以使用。因为,重叠的列键值比较少,与此相反,一个表可能有无限的列数。时间戳:Bigtable的每一个细胞中可以包含多个版本同样的数据,这些版本的时间戳索引。Bigtable的时间戳 64位整数。它们可以被分配由 Bigtable的,在这种情况下,他们真正代表联聪以微秒的时间,或明确指定的客户端应用程序。应用程序需要避免冲突必须创造自己独特的时间戳。不同一个单元格的版本都存储在时间戳顺序递减,因此,最
17、近的版本可以首先阅读。1.2.4.Googl e 并行锁服务 Chubby lock 在 Google 这种的分布式系统中,需要一种分布式锁服务来保证系统的一致性。于是Google有了Chubby lock service。而同样是 Yahoo!Research 向开源贡献了Zookeeper,一个类似 Google Chubby 的项目。在Google File System(GFS)中,有很多的服务器,这些服务器需要选举其中的一台作为 master server。Value就是master server的地址,GFS 就是用 Chubby 来解决的这个问题,所有的 server 通过Chu
18、bby提供的通信协议到 Chubby server 上创建同一个文件,当然,最终只有一个 server 能够获准创建这个文件,这个server 就成为了 master,它会在这个文件中写入自己的地址,这样其它的 server 通过读取这个文件就能知道被选出的master 的地址。Chubby 首先是一个分布式的文件系统。Chubby 能够提供机制使得 client 可以在Chubby service 上创建文件和执行一些文件的基本操作。说它是分布式的文件系统,是因为一个 Chubby cell 是一个分布式的系统。但是,从更高一点的语义层面上,Chubby 是一个 lock service,一
19、个针对松耦合的分布式系统的lock service。所谓lock service,就是这个 service能够提供开发人员经常用的“锁”,“解锁”功能。通过 Chubby,一个分布式系统中的上千个client都能够对于某项资源进行“加锁”,“解锁”。Chubby 中的“锁”就是建立文件,在上例中,创建文件其实就是进行“加锁”操作,创建文件成功的那个server其实就是抢占到了“锁”。用户通过打开、关闭和读取文件,获取共享锁或者独占锁;并且通过通信机制,向用户发送更新信息。1.2.5.Google消息序列处理系统Google Workqueue GWQ(Google Workqueue)系统是负
20、责将 Mapreduce的工作任务安排各个各个计算单位的(Cell/Cluster)。仲裁(进程优先级)附表,分配资源,处理故障,报告情况,收集的结果-通常队列覆盖在 GFS 上的。消息队列处理系统可以同时管理数万服务器。通过API接口和命令行可以调动 GWQ 来进行工作。1.2.6.Googl e 分布式存储技术 Megastore Megastore是谷歌一个内部的存储系统,它的底层数据存储依赖Bigtable,也就是基于 NoSql实现的,但是和传统的 NoSql不同的 是,它实现了类似 RDBMS 的数据模型(便捷性),同时提供数据的强一致性解决方案(同一个 datacenter,基于
21、MVCC 的事务实现),并且将数据进行细颗粒度的分区(这里的分区是指在同一个datacenter,所有 datacenter都有相同的分区数据),然后将数据更新在机房间进行同步复制(这个保证所有 datacenter中的数据一致)。Megastore的数据复制是通过 paxos进行同步复制的,也就是如果更新一个数据,所有机房都会进行同步更新,因为使用paxos进行复制,所以不同机房针对同一条数据的更新复制到所有机房的更新顺序都是一致的,同步复制保证数据的实时可见性,采用 paxos算法则保证了所有机房更新的一致性,所以个人认为megastore的更新可能会比较慢,而所有读都是实时读(对于不同机
22、房是一致的),因为部署有多个机房,并且数据总是最新。Scalable replication 为了达到高可用性,megastore实现了一个同步的,容错的,适合长距离连接的日志同步器为了达到高可扩展性,megastore将数据分区成一个个小的数据库,每一个数据库都有它们自己的日志,这些日志存储在NoSql中。Megastore将数据分区为一个 Entity Groups的集合,这里的 Entity Groups相当于一个按 id切分的分库,这个 Entity Groups里面有多个 Entity Group(相当于分库里面的表),而一个 Entity Group有多个Entity(相当于表中的
23、记录)。Operation Across Entity Groups 在同一个 Entity Group中(相当于单库)的多个 Entity的更新事务采用single-phase ACID 事务,而跨 Entity Group(相当于跨库)的Entity更新事务采用two-phase ACID 事务(2段提交),但更多使用 Megastore提供的高效异步消息实现。需要说明的一点是,这些事务都是在同一个机房的,机房之间的数据交互都是通过数据复制来实现的。1.3.数据中心灾备灾难备份与恢复有两个指标,一个是RPO(Recovery Point Objective),一个是 RTO(Recover
24、y Time Objective),也就是数据丢失率和恢复间隔。对传统的SAN 或异地备份,这两个指标基本取决于成本,指标越好,成本越高,Google 在这方面,使用的是同步复制技术,同步复制使RPO 接近于 0,而 RTO 接近实时,也就是说,灾难发生时,Google 所有在线应用的数据丢失基本为0,恢复间隔接近实时,使用户完全觉察不到(可是,Gmail 的几次宕机是怎么回事)。数据同步复制技术应用到所有Google 在线应用(包括 Gmail,Google Calendar,Google Docs,以及Google Sites 等),用户需要保存的任何数据,都同步存储到Google 的两个
25、不同地理位置的数据中心,当任何一个数据中心发生故障,系统会立即切换到另一个数据中心。Google的备用数据中心并不是在灾难发生时才启用,而是一直在使用中,Google 始终在这些数据中心之间进行平衡,保证没有资源浪费。Google的数据中心之间有他们自己的高度连接网络,保证数据快速传送。2.微软数据中心微软的动态数据中心方案通过Windows Server自带的 Hyper-V技术和 System Center完美整合,提供了高可用、动态资源调配、配置管理和数据备份等功能,通过部署 Virtual Machine Manager还能对异构的虚拟化环境做统一的管理。微软的动态数据中心方案集成了H
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算 研究 数据中心
限制150内