第3章云计算平台及关键技术第3章云计算平台及关键技术3.1主要云计算平台3.2云计算的关键技术3.3云计算的计算模型3.4小结第3章云计算平台及关键技术3.1主要云计算平台1.Google的云计算基础设施Google的云计算基础设施是在最初为搜索应用提供服务的基础上逐步扩展的,它主要由分布式文件系统GoogleFileSystem(GFS)、大规模分布式数据库BigTable、程序设计模式MapReduce、分布式锁机制Chubby等几个既相互独立又紧密结合的系统组成。GFS是一个分布式文件系统,能够处理大规模的分布式数据。图3-1所示为GFS的体系结构。系统中每个GFS集群由一个主服务器和多个块服务器组成,被多个客户端访问。第3章云计算平台及关键技术主服务器负责管理元数据,存储文件和块的名空间、文件到块之间的映射关系以及每个块副本的存储位置;块服务器存储块数据,文件被分割成为固定尺寸(64MB)的块,块服务器把块作为Linux文件保存在本地硬盘上。为了保证可靠性,每个块被缺省保存3个备份。主服务器通过客户端向块服务器发送数据请求,而块服务器则将取得的数据直接返回给客户端。第3章云计算平台及关键技术图3-1GFS的体系结构第3章云计算平台及关键技术2.IBM的“蓝云”计算平台IBM的“蓝云(BlueCloud)”计算平台由一个数据中心、IBMTivoli监控(TivoliMonitoring)软件、IBMDB2数据库、IBMTivoli部署管理(TivoliProvisioningManager)软件、IBMWebSphere应用服务器(ApplicationServer)以及开源虚拟化软件和一些开源信息处理软件共同组成,如图3-2所示。“蓝云”采用了Xen、PowerVMHadoop技术,以帮助客户构建云计算环境。“蓝云”软件平台的特点主要体现在虚拟机以及所采用的大规模数据处理软件Hadoop。该体系结构图侧重于云计算平台的核心后端,未涉及用户界面。由于该架构是完全基于IBM公司的产品设计的,所以也可以理解为“蓝云”产品架构。第3章云计算平台及关键技术图3-2IBM“蓝云”的体系结构第3章云计算平台及关键技术3.Sun的云基础设施Sun提出的云基础设施体系结构包括服务、应用程序、中间件、操作系统、虚拟服务器、物理服务器等6个层次。图3-3形象地体现了“云计算可描述在从硬件到应用程序的任何传统层级提供的服务”的观点。第3章云计算平台及关键技术图3-3Sun的云计算平台第3章云计算平台及关键技术4.微软的WindowsAzure云平台如图3-4所示,微软的WindowsAzure云平台包括4个层次。底层是全球基础服务层(GlobalFoundationService,GFS),由遍布全球的第四代数据中心构成;云基础设施服务层(CloudInfrastructureService)以WindowsAzure操作系统为核心,主要从事虚拟化计算资源管理和智能化任务分配;WindowsAzure之上是一个应用服务平台,它发挥着构件(buildingblock)的作用,为用户提供一系列的服务,如Live服务、NET服务、SQL服务等;最上层是客户服务层,如WindowsLive、OfficeLive、ExchangeOnline等。第3章云计算平台及关键技术图3-4微软的WindowsAzure云平台架构第3章云计算平台及关键技术5.Amazon的弹性计算云Amazon是最早提供云计算服务的公司之一,该公司的弹性计算云(ElasticComputeCloud,EC2)平台建立在公司内部的大规模计算机、服务器集群上,为用户提供网络界面操作在“云端”运行的各个虚拟机实例(Instance)。用户只需为自己所使用的计算平台实例付费,运行结束后,计费也随之结束。弹性计算云用户使用客户端通过SOAPoverHTTPS协议与Amazon弹性计算云内部的实例进行交互,如图3-5所示。弹性计算云平台为用户或者开发人员提供了一个虚拟的集群环境,在用户具有充分灵活性的同时,也减轻了云计算平台拥有者(Amazon公司)的管理负担。弹性计算云中的每一个实例代表一个运行中的虚拟机。用户对自己的虚拟机具有完整的访问权限,包括针对此虚拟机操作系统的管理员权限。虚拟机的收费也是根据虚拟机的能力进行费用计算的,实际上,用户租用的是虚拟的计算能力。第3章云计算平台及关键技术图3-5Amazon的弹性计算云第3章云计算平台及关键技术6.学术领域提出的云平台LuisM.Vaquero等人从云计算参与者的角度设计了一种云计算平台的层次结构。该结构中,服务提供商负责为服务消费者提供通过网络访问的各种应用服务,基础架构提供商以服务的形式提供基础设施给服务提供商,从而降低服务提供商的运行成本,提供了更大灵活性和可伸缩性。美国伊利诺伊大学(UniversityofIllinois)的RobertL.Grossman等人提出并实现了一种基于高性能广域网的云计算平台Sector/Sphere,实验测试显示性能方面优于Hadoop。澳大利亚墨尔本大学(UniversityofMelbourne)的RajkumarBuyya等人提出了一种面向市场资源分配的云计算平台原型,其中包括用户(User/Broker)、服务等级协议资源分配(SLAResourceAllocator)、虚拟机(VM)、物理机器(PhysicalMachine)等4个实体(层次)。第3章云计算平台及关键技术3.2云计算的关键技术1.快速部署(RapidDeployment)自数据中心诞生以来,快速部署就是一项重要的功能需求。数据中心管理员和用户一直在追求更快、更高效、更灵活的部署方案。云计算环境对快速部署的要求将会更高。首先,在云环境中资源和应用不仅变化范围大而且动态性高。用户所需的服务主要采用按需部署方式。其次,不同层次云计算环境中服务的部署模式是不一样的。另外,部署过程所支持的软件系统形式多样,系统结构各不相同,部署工具应能适应被部署对象的变化。第3章云计算平台及关键技术2.资源调度(ResourceDispatching)资源调度是指在特定环境下,根据一定的资源使用规则,在不同资源使用者之间进行资源调整的过程。这些资源使用者对应着不同的计算任务,每个计算任务在操作系统中对应于一个或者多个进程。虚拟机的出现使得所有的计算任务都被封装在一个虚拟机内部。虚拟机的核心技术是虚拟机监控程序,它在虚拟机和底层硬件之间建立一个抽象层,把操作系统对硬件的调用拦截下来,并为该操作系统提供虚拟的内存和CPU等资源。目前VMwareESX和CitrixXenServer可以直接运行在硬件上。由于虚拟机具有隔离性,可以采用虚拟机的动态迁移技术来完成计算任务的迁移。第3章云计算平台及关键技术3.大规模数据处理(MassiveDataProcessing)以互联网为计算平台的云计算会广泛地涉及大规模数据处理任务。由于大规模数据处理操作非常频繁,很多研究者在从事支持大规模数据处理的编程模型方面的研究。当今世界最流行的大规模数据处理的编程模型可以说是由Google公司所设计的MapReduce编程模型。MapReduce编程模型将一个任务分成很多更细粒度的子任务,这些子任务能够在空闲的处理节点之间调度,使得处理速度越快的节点处理越多的任务,从而避免处理速度慢的节点延长整个任务的完成时间。第3章云计算平台及关键技术4.大规模消息通信(MassiveMessageCommunication)云计算的一个核心理念就是资源和软件功能都是以服务的形式发布的,不同服务之间经常需要进行消息通信协作,因此,可靠、安全、高性能的通信基础设施对于云计算的成功至关重要。异步消息通信机制可以使得云计算每个层次中的内部组件之间及各个层次之间解耦合,并且保证云计算服务的高可用性。目前,云计算环境中的大规模数据通信技术仍处于发展阶段。第3章云计算平台及关键技术5.大规模分布式存储(MassiveDistributedStorage)分布式存储要求存储资源能够被抽象表示和统一管理,并且能够保证数据读/写操作的安全性、可靠性、性能等各方面要求。分布式文件系统允许用户像访问本地文件系统一样访问远程服务器的文件系统,用户可以将自己的数据存储在多个远程服务器上,分布式文件系统基本上都有冗余备份机制和容错机制,以保证数据读/写的正确性。云环境的存储服务基于分布式文件系统并根据云存储的特征做了相应的配置和改进。典型的分布式文件系统有Google公司设计的可伸缩的GoogleFileSystem(GFS)。目前,在云计算环境下的大规模分布式存储方面已经有了一些研究成果和应用。Google公司设计的用来存储大规模结构化数据的分布式存储系统BigTable用来将网页存储成分布式的、多维的、有序的图。第3章云计算平台及关键技术6.虚拟化技术虚拟化的核心理念是以透明的方式提供抽象的底层资源,这种抽象方法并不受地理位置或底层资源的物理配置所限。就技术本身而言,它并不是全新的事物,早在20世纪70年代就已经在IBM的虚拟计算系统中得以应用。随着云计算的兴起,虚拟化技术再次成为研究热点,究其原因主要在于:首先,计算机系统在功能变得日益强大的同时,本身也越来越难以管理;其次,当计算系统发展到以用户为中心的阶段时,人们更关心的是如何通过接口和服务来满足复杂多变的用户需求。由于虚拟化技术能够灵活组织多种计算资源,解除上、下层资源的绑定和约束关系,提升资源使用效率,发挥资源聚合效能,为用户提供个性化和普适化的资源使用环境,因而得到高度重视。第3章云计算平台及关键技术利用虚拟化技术,能够有效整合数据中心所有的硬件资源、虚拟服务器和其他基础设施,并通过高效的管理和调度为上层应用提供动态、可伸缩、灵活的基础设施平台,从而满足云计算随需扩展、按需部署、即需即用的需求。不过,各种虚拟化技术各有优势和不足,例如目前主流的半虚拟化技术,其虚拟机管理系统带来的CPU额外开销较少但内存性能开销较大,因此原有的CPU密集型应用能够较好地迁移到虚拟化平台上来,而内存或I/O密集型应用(如数据库等)就会遇到较大的性能问题。因此,如何融合各种虚拟化方法的优势,按照应用任务的需求,将各种资源进行动态共享和灵活配置,使计算系统具备按需构建能力,都是云计算中需要深入研究的问题。第3章云计算平台及关键技术3.3云计算的计算模型1.GFS——Google文件系统桌面应用和Internet应用有着巨大的差别。GFS是Google公司开发的专属分布式文件系统,为了在大量廉价硬件上提供有效、可靠的数据访问而设计。GFS针对Google的核心数据存储和使用需求进行优化,用于保存搜索引擎所产生的大量数据。Google的Internet搜索计算借鉴函数式编程模式,函数式操作不会修改原始数据而总是产生新的计算结果数据。因而GFS的应用特点是产生大量的巨型文件,通常以读为主,可以追加但很少重写,具有非常高的吞吐率。第3章云计算平台及关键技术GFS的设计将节点分成两类:一个主节点和大量的块服务器。块服务器用来保存数据文件。每个数据文件被划分成64MB大小的块,每个块都有一个唯一的64位标签以维护文件到块的逻辑映射。主节点只是存储数据块的元数据,包括64位标签到块位置及其组成的文件的映射表,数据块副本位置,哪些进程正在读/写或“按下”某一数据块的“快照”以便复制副本等信息。主节点定期从块服务器接收、更新,以保持元数据的最新状态。变更操作授权通过限时租用实现,主节点在一定时期内只限时给一个进程授予修改数据块的权限。被修改的数据块服务器作为主数据块将更改信息同步到其他块服务器上的副本,通过多个冗余副本提供可靠性和可用性。第3章云计算平台及关键技术应用程序通过查询主节点从而获取文件/块的地址,然后直接和数据块服务器联系并最终取得相应的数据文件。目前在Google中有超过200个Google文件系统集群,一个集群可以由1000甚至5000台机器构成。Google