1、第第10章章 云计算云计算 10.1 云计算概述10.2 云计算系统的组成及其技术10.3 典型云计算系统简介10.4 云计算的应用示例10.1 云云计计算算概概述述当今社会,PC依然是日常工作生活中的核心工具我们用PC处理文档、存储资料,通过电子邮件或U盘与他人分享信息。如果PC硬盘坏了,我们会因为资料丢失而束手无策。而在“云计算”时代,“云”会替我们做存储和计算的工作。“云”就是计算机群,每一群包括了几十万台、甚至上百万台计算机。“云”的好处还在于,其中的计算机可以随时更新,保证“云”长生不老。大约在2007年,包括IBM、Google、亚马逊等在内的知名企业纷纷提出云计算的概念。在“20
2、09云计算中国论坛”上,成都信息工程学院副教授王鹏(走进云计算的作者)指出,这些企业在提出云计算概念的时候,往往依据自己已有的技术基础和自己商业的利益,从不同的角度提出了云计算模型。尽管如此,这些知名企业的推动,促使了整个云计算的概念明确和出现。在云计算市场,Google的应用引擎(Google App Engine)和微软的Live Mesh为开发云计算应用提供了截然不同的平台。Live Mesh是微软推出的基于云计算的数据同步和设备管理平台。Live Mesh把用户数据的原版拷贝保留在自己的服务器上,这样用户就能从与互联网相连的任何设备访问最新版本的文件。在传统的计算模式中,使用应用程序来
3、创建文档(无论是打字稿、电子表格、数据库还是其他文档),当需要保存文档时,应用程序就把它交给操作系统,操作系统会在本地存储设备中以文件的形式保留一份文档拷贝。Google的模式却截然不同。在这种模式中,云计算是多计算机环境下的计算。用户不需要维护任何磁盘,也不需要“文件”或者用来保存文件的文件系统这种人工概念。Google的云计算还有其他优势,Google免费提供应用程序。由于这些应用程序存在于云计算环境中,所以用户不需要安装软件,也不需要管理程序升级或者安全补丁。实际上,用户完全摆脱了与操作系统之间的所有日常交互。当然,服务器底层运行着某种操作系统,负责运行Google的诸多应用程序;还有某
4、种有组织的存储系统。但这些仅仅是技术细节,不需要用户操心。虽然Google基于互联网的应用程序确实给人留下了深刻印象,但其中缺乏像微软Office这类桌面软件的高级功能。正由于如此,这种方式很难让习惯于Office的忠实用户改变立场,转身投向Google。另外,在云计算环境中,而不是在本地驱动器上保存及管理文档这种方式也可能让企业客户心生疑虑。比较而言,Google的云计算方案是革命性的,微软的云计算方案却是演进性的。Live Mesh迎合的是现有用户,这比较容易打动人心。不过,Google的发展势头又是不可阻挡的。10.1.1 云计算的定义云计算的定义云计算(Cloud Computing)
5、是一种新提出的计算模式。维基百科给云计算下的定义为:云计算将IT相关的能力以服务的方式提供给用户,允许用户在不了解提供服务的技术、没有相关知识以及设备操作能力的情况下,通过Internet获取需要服务。中国云计算网将云计算定义为:云计算是分布式计算(Distributed Computing)、并行计算(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些科学概念的商业实现。Forrester Research的分析师James Staten将云计算定义为:云计算是一个具备高度扩展性和管理性并能够胜任终端用户应用软件计算基础架构的系统池。1狭义云
6、计算狭义云计算狭义云计算是指IT基础设施的交付和使用模式,即通过网络以按需、易扩展的方式获得所需的资源(硬件、平台、软件)。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。日常生活的供水、供电系统就具有这样的特性,故狭义云计算也就意味着像使用水电一样使用IT基础设施。2广义云计算广义云计算是指服务的交付和使用模式,即通过网络以按需、易扩展的方式获得所需的服务。这种服务可以是IT和软件、互联网相关的,也可以是任意其他的服务。在广义云计算意义上,“云”是一些可以自我维护和管理的虚拟计算资源,通常为一些大型服务器集群,包括计算
7、服务器、存储服务器、宽带资源等。云计算将所有的计算资源集中起来,并由软件实现自动管理,无需人为参与。这使得应用提供者无需为繁琐的细节而烦恼,能够更加专注于自己的业务,有利于创新和降低成本。有人打了个比方:这就好比是从古老的单台发电机模式转向了电厂集中供电的模式。它意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。最大的不同在于,它是通过互联网进行传输的。云计算是并行计算(Parallel Computing)、分布式计算(Distributed Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。云计算是虚
8、拟化(Virtualization)、效用计算(Utility Computing)、IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等概念混合演进并跃升的结果。虽然目前云计算没有统一的定义,但结合上述定义,可以总结出云计算的一些本质特征,即分布式计算和存储特性、高扩展性、用户友好性和良好的管理性。云计算具有以下特点:(1)超大规模。“云”具有相当的规模,Google云计算已经拥有100多万台服务器,Amazon、IBM、Microsoft、Yahoo等的“云”均拥有几十万台服务器。企业私有云一般拥有数百上千台服务器。“云”能赋予用户前所未有的计算能力。(2)虚拟化。
9、云计算支持用户在任意位置、使用各种终端获取应用服务。所请求的资源来自“云”,而不是固定的有形的实体。应用在“云”中某处运行,但实际上用户无需了解、也不用担心应用运行的具体位置。只需要一台笔记本或者一部手机,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。(3)高可靠性。“云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机可靠。(4)通用性。云计算不针对特定的应用,在“云”的支撑下可以构造出千变万化的应用,同一个“云”可以同时支撑不同的应用运行。(5)高可扩展性。“云”的规模可以动态伸缩,满足应用和用户规模增长的需要。(6)按需
10、服务。“云”是一个庞大的资源池,可按需购买;“云”可以像自来水、电、煤气那样计费。(7)极其廉价。由于“云”的特殊容错措施可以采用极其廉价的节点来构成云,“云”的自动化集中式管理使大量企业无需负担日益高昂的数据中心管理成本,“云”的通用性使资源的利用率较之传统系统大幅提升,用户可以充分享受“云”的低成本优势,经常只要花费几百美元、几天时间就能完成以前需要数万美元、数月时间才能完成的任务。10.1.2 云计算的类型云计算的类型谷歌和雅虎提供的基于Web的电子邮件服务,Carbonite或MozyHome提供的备份服务,S提供的客户资源管理应用软件,以及美国在线(AOL)、谷歌、Skype、Von
11、age及其他公司提供的即时通信和VoIP服务,这些都是云计算服务。云计算服务隐藏在另一个抽象层后面,可使最终用户原本需要复杂计算架构才能提供的那种功能变得更为简单。下面主要从服务类型和服务方式的角度介绍云计算的类型。1按服务类型分类按服务类型分类从服务类型方面可把云计算分为基础设施云、平台云和应用云。(1)基础设施云:基础架构服务(Infrastructure as a Service),提供网格或集群形式的虚拟化服务器、网络、存储和系统软件,旨在补充或更换整个数据中心的功能。这些云为用户提供底层的接近于直接操作硬件资源的服务。这方面最显著的例子有亚马逊的弹性计算云(EC2)和简单存储服务(S
12、imple Storage Service)。(2)平台云:亦称平台即服务(Platform as a Service),提供虚拟化服务器,用户可以在虚拟化服务器上运行现有的应用程序,或者开发新的应用程序,不必为维护操作系统、服务器硬件、负载均衡或计算容量而操心。平台可为开发人员提供应用程序的托管,一旦开发人员开发出满足平台运行的应用程序且成功部署后,运行过程中的资源分配和其他的管理工作等将由平台云自行管理。这方面最显著的例子有微软的Azure和Salesforce的F。(3)应用云:又称软件即服务(Software as a Service),作为知名度最高、应用最广泛的一种云计算,SaaS
13、提供了复杂的传统应用程序的所有功能,这些功能通过Web浏览器而不是安装在本地的应用程序来使用。SaaS消除了应用服务器、存储、应用程序开发及相关的常见IT问题方面的担忧。这方面最显著的例子是S、谷歌的Gmail和Apps、美国在线、雅虎和谷歌的即时通信,以及Vonage和Skype的VoIP。2按服务方式分类从服务方式方面可把云计算分为公有云、私有云和混合云。(1)公有云:就是有若干企业和若干客户使用的形式。在公有云中,用户使用的服务都是由第三方云服务提供商提供的,该提供商也为其他的客户提供服务,所有的用户共享云服务提供商提供的所有资源。(2)私有云:就是只在某个企业内部独立建立的云环境。私有
14、云是专门为企业提供服务的专有云计算服务,企业内部的员工都可以访问这个私有云内部的所有服务资源,当然这也类似我们平时构建的管理系统,可以设置相应的权限,公司或者组织以外的用户无法访问这个云环境中的资源。(3)混合云:就是公有云和私有云相结合的形式。10.1.3 云计算与物联网云计算与物联网每当人们谈及互联网,联想到的不只是物理设备构成的网,还有一个巨大的信息系统。物联网的情况也与之类似。物联网多被看做是互联网通过各种信息感应、探测、识别、定位、跟踪和监控等手段和设备向物理世界的延伸。对客观世界的感应、探测、监控等,只是人类社会对物理世界实现“感、知、控”的第一个环节,即为物联网“前端”。基于互联
15、网计算的涌现智能以及对物理世界的反馈和控制是另外两个环节,即为物联网“后端”。当前,无论是学术界还是工业界,目光普遍聚焦在物联网“前端”。本节将从物联网“后端”来说明物联网与云计算的关系。1从“后端”看物联网如前面所述,物联网可以看做是互联网通过传感器网络向物理世界的延伸,其最终目标是实现对物理世界的智能化管理。在逻辑上,物联网包括如图10.1所示的三个层次,其中:(1)物理世界感知是物联网的基础,基于传感技术和网络通信技术,实现对物理世界的探测、识别、定位、跟踪和监控,可以看做是物联网的“前端”。(2)大量独立建设的单一物联网应用是物联网建设的起点与基本元素,该类应用往往局限于对单一物品的感
16、应与智能管理,每个物联网应用都是物联网上的一个逻辑节点。(3)通过对众多单一物联网应用的深度互联和跨域协作,物联网可以形成一个多层嵌套的“网中网”,这是实现物联网智能化管理目标和价值追求的关键所在,可以看做是物联网的“后端”。图10.1 物联网的三个层次从“后端”来看,物联网可以看做是一个基于互联网的,以提高物理世界的运行、管理、资源使用效率等水平为目标的大规模信息系统。由于物联网“前端”在对物理世界感应方面具有高度并发的特性,并将产生大量引发“后端”深度互联和跨域协作需求的事件,从而使得上述大规模信息系统表现出以下性质:(1)不可预见性:对物理世界的感知具有实时性,会产生大量不可预见的事件,
17、从而需要应对大量即时协同的需求。(2)涌现智能:对诸多单一物联网应用的集成能够提升对物理世界综合管理的水平,物联网“后端”是产生放大效应的源泉。(3)多维度动态变化:对物理世界的感知往往具有多个维度,并且是不断动态变化的,从而要求物联网“后端”具有更高的适应能力。(4)大数据量、实效性:物联网中涉及的传感信息具有大数据量、实效性等特征,对物联网“后端”的信息处理带来诸多新的挑战。综上所述,实时感应、高度并发、自主协同和涌现效应等特征要求从新的角度审视物联网“后端”信息基础设施,对当前互联网计算(包括云计算、服务计算、网格等)的研究提出了新的挑战,需要有针对性地研究物联网特定的应用集成问题、体系
18、结构及标准规范,特别是大量高并发事件驱动的应用自动关联和智能协作问题。2云与物联网云与物联网“后端后端”认为“云”是支撑物联网“后端”的认识存在着误区。云计算起源于互联网公司对特定的大规模数据处理问题解决方案,由于问题和商业模式明确、产业界大力推动以及已有网格等相关前期研究基础等原因,而迅速被热捧和泛化,但其本身远未成熟。即使在不考虑标准化过渡和互操作性等因素的情况下,基本实现云计算愿景恐怕也还要经过一到数个创新周期。因此,我们不能简单地设想和推断云计算便可应对物联网“后端”的需求。当前所谓的软件即服务(SaaS)、平台即服务(PaaS)和基础设施即服务(IaaS)三个层次的划分也只是对现有云
19、计算的初级认识,并未全面体现云计算的内涵、外延和发展。“云”的发展大体分为三个阶段:第一阶段,网格从科学领域需求出发,云计算从互联网特定的大规模数据处理需求出发,Web 2.0从用户参与的角度出发,尽管各自的应用领域、视角和侧重不同,但都取得了明显的进步,出现了一些令人鼓舞的典型应用;第二阶段,技术体系将互相渗透,会出现统一运营的“行业云”、第三方运营中心等;第三阶段也是互联网计算的愿景:客户通过基于标准的服务交互方式,以极低的成本按需从基础设施获取高质量的计算、存储、数据、平台和应用等服务,客户无需关心服务是由什么“云”提供的。在早期的客户/服务器模式下,应用服务器由各组织机构自行运营维护,
20、服务体现为紧耦合的对应程序调用结果的消息。随着以CORBA(Common Object Request Broker Architecture,公用对象请求代理(调度)程序体系结构)、J2EE(Java2 Platform,Enterprise Edition)等分布式对象系统的发展,服务也升级为分布式平台为客户端提供价值的纽带;随着互联网的发展,原来属于应用系统的共性功能逐渐下沉至基础设施,越来越多的应用服务器交给“云”上的运营者运营维护,客户端则基于服务中间件(如ESB(Enterprise Service Bus)、Service Registry等)享受云端提供的万维网服务(Web S
21、ervice)和REST(REpresentational State Transfer,表述性状态转变)服务形式的松耦合的服务。未来,“云”提供的服务将从多个层面、不同视角在“服务空间”中进行一体化管理和组织,服务不再是一维的抽象,将覆盖业务牵引的角度、以用户为中心的角度、层次的角度等各个视角。CSI将云体系结构归纳为用户端和基础设施,服务是其纽带,也是构造基于互联网的应用系统的第一元素(First-Class Entity)。随着以“云”为标识的互联网信息处理基础设施的发展,服务计算的重要性将更加凸显。针对物联网需求特征的优化策略、优化方法和涌现智能也将更多地以服务组合的形式体现,并出现物
22、联网服务新形态,进一步推动服务计算相关学科的发展。人类基础设施的发展经过上百年还未完善,同样可以断定,物联网“后端”的发展完善也是一个长远的事情。因此,人们不能把云计算的愿景当做现实。我们应在考虑长期战略目标的同时,以价值和典型应用为牵引,先建立特定领域中统一运营的“行业云”和第三方运营中心,以实现资源优化利用以及跨域的资源共享和应用集成。同时,需要充分考虑到物联网上的信息具有多元、多源、多级过滤和分析、动态变化、数据量巨大等特点。10.2 云计算系统的组成及其技术云计算系统的组成及其技术10.2.1 云计算系统的组成云计算系统的组成云计算的体系结构由五部分组成,分别为资源层、平台层、应用层、
23、用户访问层和管理层,如图10.2所示。云计算的本质是通过网络提供服务,所以其体系结构以服务为核心。1资源层资源层资源层是指基础架构层面的云计算服务,这些服务可以提供虚拟化的资源,从而隐藏物理资源的复杂性。资源层包括物理资源、服务器服务、网络服务和存储服务。(1)物理资源指的是物理设备,如服务器等。(2)服务器服务指的是操作系统的环境,如Linux集群等。(3)网络服务指的是提供的网络处理能力,如防火墙、VLAN、负载等。(4)存储服务为用户提供存储能力。图10.2 云计算的体系结构2平台层平台层为用户提供对资源层服务的封装,使用户可以构建自己的应用。平台层包括数据库服务和中间件服务。(1)数据
24、库服务提供可扩展的数据库处理的能力。(2)中间件服务为用户提供可扩展的消息中间件或事务处理中间件等服务。3应用层应用层提供软件服务,包括企业应用服务和个人应用服务。(1)企业应用是指面向企业的用户,如财务管理、客户关系管理、商业智能等。(2)个人应用是指面向个人用户的服务,如电子邮件、文本处理、个人信息存储等。4用户访问层用户访问层是方便用户使用云计算服务所需的各种支撑服务,针对每个层次的云计算服务都需要提供相应的访问接口。它包括服务目录、订阅管理和服务访问。(1)服务目录是一个服务列表,用户可以从中选择需要使用的云计算服务。(2)订阅管理是提供给用户的管理功能,用户可以查阅自己订阅的服务,或
25、者终止订阅的服务。(3)服务访问是针对每种层次的云计算服务提供的访问接口。针对资源层的访问可能是远程桌面或者XWindows;针对应用层的访问,提供的接口可能是Web。5管理层管理层提供对所有层次云计算服务的管理功能,包括安全管理、服务组合、服务目录管理、服务使用计量、服务质量管理、部署管理和服务监控。(1)安全管理:提供对服务的授权控制、用户认证、审计、一致性检查等功能。(2)服务组合:提供对自己有云计算服务进行组合的功能,使得新的服务可以基于已有服务创建时间。(3)服务目录管理服务:提供服务目录和服务本身的管理功能,管理员可以增加新的服务,或者从服务目录中除去服务。(4)服务使用计量:对用
26、户的使用情况进行统计,并以此为依据对用户进行计费。(5)服务质量管理:提供对服务的性能、可靠性、可扩展性进行管理的功能。(6)部署管理:提供对服务实例的自动化部署和配置功能。当用户通过订阅管理增加新的服务订阅后,部署管理模块自动为用户准备服务实例。(7)服务监控:提供对服务的健康状态的记录功能。10.2.2 云计算系统的服务层次1云计算的服务层次在云计算中,根据其服务集合所提供的服务类型,整个云计算服务集合被划分成应用层、平台层、基础设施层和虚拟化层四个层次,每一层都对应着一个子服务集合。云计算的服务层次如图10.3所示。图10.3 云计算的服务层次云计算的服务层次是根据服务类型即服务集合来划
27、分的,与大家熟悉的计算机网络体系结构中层次的划分不同。在计算机网络中,每个层次都实现一定的功能,层与层之间有一定关联。而云计算体系结构中的层次是可以分割的,即某一层次可以单独完成一项用户的请求而不需要其他层次为其提供必要的服务和支持。在云计算服务体系结构中,各层次与相关云产品对应如下:(1)应用层对应SaaS(软件即服务),如Google APPS、SoftWare+Services。(2)平台层对应PaaS(平台即服务),如IBM IT Factory、Google APP Engine、F。(3)基础设施层对应IaaS(基础设施即服务),如Amazon Ec2、IBM Blue Cloud
28、、Sun Grid。(4)虚拟化层对应硬件即服务结合Paas提供硬件服务,包括服务器集群及硬件检测等服务。2云计算的技术层次云计算的技术层次云计算的技术层次和云计算的服务层次不是一个概念,后者从服务的角度来划分云的层次,主要突出了云服务能给我们带来什么。而云计算的技术层次主要从系统属性和设计思想角度来说明云,是对软、硬件资源在云计算技术中所充当角色的说明。从云计算技术角度来分,云计算大约由服务接口、服务管理中间件、虚拟化资源、物理资源四部分构成,如图10.4所示。图10.4 云计算技术结构(1)服务接口:统一规定了在云计算时代使用计算机的各种规范、云计算服务的各种标准等,用户端与云端交互操作的
29、入口,可完成用户或服务注册,对服务进行定制和使用等。(2)服务管理中间件:在云计算技术中,中间件位于服务和服务器集群之间,提供管理和服务即云计算体系结构中的管理系统。对标识、认证、授权、目录、安全性等服务进行标准化和操作,为应用提供统一的标准化程序接口和协议,隐藏底层硬件、操作系统和网络的异构性,统一管理网络资源。其用户管理包括用户身份验证、用户许可、用户定制管理;资源管理包括负载均衡、资源监控、故障检测等;安全管理包括身份验证、访问授权、安全审计、综合防护等;映像管理包括映像创建、部署、管理等。(3)虚拟化资源:指一些可以实现一定操作、具有一定功能,但其本身是虚拟而不是真实的资源,如计算池、
30、存储池和网络池、数据库资源等,通过软件技术来实现相关的虚拟化功能,如虚拟环境、虚拟系统、虚拟平台。(4)物理资源:主要指能支持计算机正常运行的一些硬件设备及技术,可以是价格低廉的PC,也可以是价格昂贵的服务器及磁盘阵列等设备,可以通过现有网络技术和并行技术、分布式技术将分散的计算机组成一个能提供超强功能的集群用于计算和存储等云计算操作。在云计算时代,本地计算机可能不再像传统计算机那样需要空间足够的硬盘、大功率的处理器和大容量的内存,只需要一些必要的硬件设备,如网络设备和基本的输入/输出设备等。10.2.3 云计算的关键技术云计算的关键技术云计算是分布式处理、并行计算和网格计算等概念的发展和商业
31、实现,其技术实质是计算、存储、服务器、应用软件等IT软、硬件资源的虚拟化。云计算在虚拟化、数据存储、数据管理、编程模式等方面具有自身独特的技术。云计算的关键技术包括以下几个方面。1虚拟机技术虚拟机即服务器虚拟化,是云计算底层架构的重要基石。在服务器虚拟化中,虚拟化软件需要实现对硬件的抽象,资源的分配、调度和管理,虚拟机与宿主操作系统及多个虚拟机间的隔离等功能,目前典型的实现(基本成为事实标准)有Citrix Xen、VMware ESX Server和Microsoft Hype-V等。2数据存储技术云计算系统需要同时满足大量用户的需求,并行地为大量用户提供服务。因此,云计算的数据存储技术必须
32、具有分布式、高吞吐率和高传输率的特点。目前数据存储技术主要有Google的GFS(Google File System,非开源)以及HDFS(Hadoop Distributed File System,开源),这两种技术已经成为事实标准。3数据管理技术云计算的特点是对海量的数据存储、读取后进行大量的分析,如何提高数据的更新速率以及进一步提高随机读速率是未来数据管理技术必须解决的问题。云计算的数据管理技术最著名的是谷歌的BigTable数据管理技术,同时Hadoop开发团队已开发出类似BigTable的开源数据管理模块。4分布式编程与计算为了使用户能更轻松的享受云计算带来的服务,让用户能利用该
33、编程模型编写简单的程序来实现特定的目的,云计算上的编程模型必须十分简单。必须保证后台复杂的并行执行和任务调度向用户和编程人员透明。当前各IT厂商提出的“云”计划的编程工具均基于Map-Reduce的编程模型。10.3 典型云计算系统简介典型云计算系统简介10.3.1 Amazon云计算基础架构平台云计算基础架构平台目前,最受欢迎的云计算平台是Amazon Web Services(AWS),在云上最受欢迎的数据库是MySQL。尽管Amazon在2002年就已经开始着手AWS,并从那时已使许多新的计算服务,包括基础架构、电子商务和Web信息服务变得可用,然而我们希望继续集中部署这些与MySQL最
34、相关的内容,如Elastic Computing Cloud(EC2,弹性计算云),Simple Storage Service(S3,简便存储服务)和Elastic Block Store(EBS,持久存储)。针对这些服务,开发人员可以使用Web服务、具体的REST和SOAP协议访问。Amazon EC2和MySQL,对于一个想减少资金花费和运营成本,同时以最小的成本和投入来动态扩展其应用的机构来说,是相当适合的。亚马逊Amazon EC2上订阅一个 MySQL Enterprise,开发人员充分依托MySQL数据库专家,可以在云上更具成本效益地交付Web-scale数据库应用。1Amazo
35、n弹性计算云(EC2)Amazon EC2服务开始于2006年,在2008年变得普遍广泛可用。EC2使得亚马逊云能够动态扩展计算能力。它使开发人员更容易交付Web-scale应用。亚马逊云计算能够忽略硬件,取而代之的是当需求增加时,可以使用(或不使用)额外的虚拟硬件。支撑EC2服务的是Xen虚拟技术。Xen是开源软件,它允许操作系统(如Linux、Windows或者Solaris)作为“虚拟机器”,并同时运行在相同的硬件上。使用Xen时,EC2可以快速提供客户虚拟服务器的规格说明书,定制硬件特性,如CPU数、内存和软件容错。2Amazon简单存储服务(S3)Amazon也发行了S3,它可提供在
36、线存储Web服务。S3给开发人员提供一个简单、安全、本质上拥有无限能力的连续在线存储。S3可以被看成在“云”上的一个很大的磁盘驱动或一个SAN。和带宽的收费模式一样,Amazon对最终用户按每GB存储收费,并且当存储和检索S3数据时要求收费。用S3可以存储和获得Amazon认为是对象的无组织的数据。亚马逊存储如图10.5所示。图10.5 亚马逊存储这些对象可以是拥有2 KB相关元数据,而这些对象又可以存放在1 B到5 GB范围内的任何地方。S3里没有目录或文件名,对象存储在“Buckets”当中,并由开发人员通过预设的唯一键进行检索。Buckets和其内部包含的对象存储在两个不同的物理区域中,
37、但是它们可以从任何地方访问。使用一个REST和SOAP接口,开发人员可以创建、列出和检索Buckets和对象,同时可以通过GET接口或者BitTorrent协议下载亚马逊Web MySQL。3Amazon持久存储(EBS)EBS在2008年开始运营时,是Amazon EC2最令人期待的特性之一。在EBS之前,EC2存储是和本地实例联系在一起的,这就意味着如果EC2实例被破坏,本地实例上存储的数据就变得不可用了。为了解决该问题,Amazon创建了EBS,提供块级水平存储容量,其可以不考虑EC2实例的状态。对于开发人员,EBS Volume的出现作为标准的块机制,其大小从1 GB变化到1 TB。指
38、定机制名称和块机制接口以后,用户可以配置一个他们选择的EBS Volume 的文件系统。1)在Amazon EC2上部署MySQL在EC2上开始MySQL是很简单的,亚马逊Web MySQL如图10.6所示。首先,假定已经设置了Amazon账号,可以从Amazon AMI目录使用一个已存在的AMI预设置MySQL,或者使用自己的Amazon SDK创建。用户还可以从其他的资源获得可用的“模板化”AMI图形。其次,一旦做了任何配置,为了再次使用和安全保存,应该上传用户的AMI到S3。最后,选择想部署的EC2实例,配置安全和网络控制。图10.6 亚马逊Web MySQL2)亚马逊Web Serve
39、r亚马逊Web Server如图10.7所示。用于Amazon EC2上的MySQL Enterprise是基于支持而提供的订阅,使得开发人员可以低成本地在云上交付Web扩展数据库应用,在云上使用世界上最受欢迎的开源数据库。在Amazon EC2上使用MySQL Enterprise的好处包括:可利用MySQL的可靠性、高性能和易用性,可在云上交付大量的可扩展的Web应用;使用MySQL Replication进行主从数据库复制、切换和备份,实现高可用性应用。图10.7 亚马逊 Web Server 10.3.2 Google云计算应用平台云计算应用平台Google的云计算技术实际上是针对Go
40、ogle特定的网络应用程序而定制的。针对内部网络数据规模超大的特点,Google提出了一整套基于分布式并行集群方式的基础架构,利用软件的能力来处理集群中经常发生的节点失效问题。从2003年开始,Google连续几年在计算机系统研究领域的顶级会议与杂志上发表论文,揭示了其内部的分布式数据处理方法,向外界展示其使用的云计算核心技术。从其近几年发表的论文来看,Google使用的云计算基础架构模式包括四个相互独立又紧密结合在一起的系统,即建立在集群之上的Google文件系统(Google File System,GFS),针对Google应用程序的特点提出的Map/Reduce分布式编程环境,分布式的
41、锁机制Chubby以及Google开发的模型简化的大规模分布式数据库管理系统BigTable。1Google文件系统为了满足Google迅速增长的数据处理需求,Google设计并实现了Google文件系统(GFS)。GFS与过去的分布式文件系统拥有许多相同的目标,例如高性能、可伸缩性、可靠性以及可用性。然而,它的设计还受到Google应用负载和技术环境的影响,主要体现在以下四个方面:(1)集群中的节点失效是一种常态,而不是一种异常。由于参与运算与处理的节点数目非常庞大,通常会使用上千个节点进行共同计算,因此,每时每刻总会有节点处在失效状态。需要通过软件程序模块,监视系统的动态运行状况,侦测错误
42、,并且将容错以及自动恢复系统集成在系统中。(2)Google系统中的文件大小与通常文件系统中的文件大小的概念不一样,文件大小通常以GB计。另外,文件系统中的文件含义与通常文件的不同,一个大文件可能包含大量数目的通常意义上的小文件。所以,设计预期和参数(例如I/O操作和块尺寸)都要重新考虑。(3)Google文件系统中的文件读写模式和传统的文件系统不同。在Google应用(如搜索)中对大部分文件的修改,不是覆盖原有数据,而是在文件尾追加新数据,对文件的随机写是几乎不存在的。对于这类巨大文件的访问模式,客户端对数据块缓存失去了意义,追加操作成为性能优化和原子性(把一个事务看做是一个程序,它要么被完
43、整地执行,要么完全不执行)保证的焦点。(4)文件系统的某些具体操作不再透明,而且需要应用程序的协助完成,应用程序和文件系统API的协同设计提高了整个系统的灵活性。例如,放松了对GFS一致性模型的要求,这样不用加重应用程序的负担,就大大简化了文件系统的设计。GFS还引入了原子性的追加操作,这样多个客户端同时进行追加的时候,就不需要额外的同步操作了。总之,GFS是为Google应用程序本身而设计的。Google File System的系统架构如图10.8所示,一个GFS集群包含一个主服务器和多个块服务器,被多个客户端访问。文件被分割成固定尺寸的块。在每个块创建的时候,服务器分配给它一个不变的、全
44、球唯一的64位块句柄对它进行标识。块服务器把块作为Linux文件保存在本地硬盘上,并根据指定的块句柄和字节范围来读写块数据。为了保证可靠性,每个块都会复制到多个块服务器上,缺省保存三个备份。主服务器管理文件系统所有的元数据,包括名字空间、访问控制信息和文件到块的映射信息,以及块当前所在的位置。GFS客户端代码被嵌入到每个程序里,它实现了Google文件系统 API,帮助应用程序与主服务器和块服务器通信,对数据进行读写。客户端跟主服务器交互进行元数据操作,但是所有的数据操作的通信都是直接和块服务器进行的。客户端提供的访问接口类似于POSIX接口,但有一定的修改,并不完全兼容POSIX标准。通过服
45、务器端和客户端的联合设计,GoogleFile System能够针对它本身的应用获得最大的性能以及可用性效果。2Map/Reduce分布式编程环境分布式编程环境为了让内部非分布式系统方向背景的员工能够有机会将应用程序建立在大规模的集群基础之上,Google还设计并实现了一套大规模数据处理的编程规范Map/Reduce系统。这样,非分布式专业的程序编写人员也能够为大规模的集群编写应用程序而不用去顾虑集群的可靠性、可扩展性等问题。应用程序编写人员只需要将精力放在应用程序本身,而关于集群的处理问题则交由平台来处理。Map/Reduce通过“Map(映射)”和“Reduce(化简)”这样两个简单的概念
46、来参加运算,用户只需要提供自己的Map函数以及Reduce函数就可以在集群上进行大规模的分布式数据处理。Google的文本索引方法,即搜索引擎的核心部分,已经通过Map/Reduce的方法进行了改写,获得了更加清晰的程序架构。在Google内部,每天有上千个Map/Reduce的应用程序在运行。3大规模分布式数据库管理系统BigTable构建于上述两项基础之上的第三个云计算平台就是Google将数据库系统扩展到分布式平台上的BigTable系统。很多应用程序对于数据的组织都是非常有规则的,一般来说,数据库对格式化数据的处理也是非常方便的,但是由于关系数据库很强的一致性要求,很难将其扩展到很大的
47、规模。为了处理Google内部大量的格式化以及半格式化数据,Google构建了弱一致性要求的大规模数据库系统BigTable。图10.9给出了在BigTable模型中的数据模型。数据模型包括行列以及相应的时间戳,所有的数据都存放在表格中的单元里。BigTable的内容按照行来划分,将多个行组成一个小表,保存到某一个服务器节点中。这一个小表就被称为Tablet。以上是Google内部云计算基础平台的三个主要部分,除了这三个部分之外,Google还建立了分布式的锁服务等一系列相关的云计算服务平台。图10.9 Google BigTable的数据模型4Google的云应用除了上述的云计算基础设施之外
48、,Google还在其云计算基础设施之上建立了一系列新型网络应用程序。由于借鉴了异步网络数据传输的Web 2.0技术,这些应用程序给予用户全新的界面感受以及更加强大的多用户交互能力。其中典型的Google云计算应用程序就是Google推出的Docs网络服务程序。Google Docs是一个基于Web的工具,它有跟Microsoft Office相近的编辑界面,有一套简单易用的文档权限管理,并能记录下所有用户对文档所做的修改。Google Docs的这些功能非常适用于网上共享与协作编辑文档。Google Docs甚至可以用于监控责任清晰、目标明确的项目进度。当前,Google Docs已经推出了文
49、档编辑、电子表格、幻灯片演示、日程管理等多个功能的编辑模块,能够替代Microsoft Office相应的一部分功能。值得注意的是,通过这种云计算方式形成的应用程序非常适合于多个用户进行共享以及协同编辑,为一个小组的人员进行共同创作带来很大的方便性。虽然Google可以说是云计算的最大实践者,但是,Google的云计算平台是私有的环境,特别是Google的云计算基础设施还没有开放。除了开放有限的应用程序接口,例如GWT(Google Web Toolkit)以及Google Map API等,Google并没有将云计算的内部基础设施共享给外部的用户使用,上述的所有基础设施都是私有的。幸运的是,
50、Google公开了其内部集群计算环境的一部分技术,使得全球的技术开发人员能够根据这一部分文档构建开源的大规模数据处理云计算基础设施,其中最有名的项目即Apache旗下的Hadoop项目。而IBM的蓝云计算和亚马逊的弹性计算云的实现则为外部的开发人员以及中小公司提供了云计算的平台环境,使得开发者能够在云计算的基础设施之上构建自己的新型网络应用。IBM的蓝云计算平台是可供销售的计算平台,用户可以基于这些软硬件产品自己构建云计算平台。亚马逊的弹性计算云则是托管式的云计算平台,用户可以通过远端的操作界面直接使用。10.3.3 Microsoft云计算服务云计算服务对微软来说,进入云计算的领域不是最早的