1、0。 前言计算机网络的出现,为日常的信息交流和共享提供了极大的便利和快捷,从本质意义上来说,计算机网络主要提供快速的数据计算、存储和传输服务。日益扩大的需求不断提高企业用户等对数据计算和存储性能的要求,这也对数据处理及传输等的硬件支撑优化提出了挑战,如构建高性能的处理器和快速的数据存储系统,可以大大提高整个系统投资,增加系统管理的复杂程度。随着多核处理器、网格计算、虚拟化、分布式存储、宽带互联网和统一管理等技术的发展与应用,以及人们对计算机的要求不断提升,产生了一种新型的网络架构模式云计算(Cloud Computing)。它是网络时代信息处理和应用服务架构模式质的飞跃,是今后网络发展的必然趋
2、势1。云计算集成了各种网络资源和技术,即资源池,通过一系列、多层次接口或界面,为用户各类业务承载提供按需部署计算资源和存储资源,提供高可靠、高性能服务和多层次控制,同时简化用户管理和节约投资。1。 基本概念1。1 基本概念目前云计算还没有一个统一的定义,其中的一个较有参考性的定义如下:云计算(Cloud Computing)是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟
3、化(Virtualization)、负载均衡(Load Balance)等传统计算机技术和网络技术发展融合的产物。它旨在通过网络把多个成本相对较低的计算实体整合成一个具有强大计算能力的完美系统,并借助IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)、MSP(管理服务提供商)等先进的商业模式把这强大的计算能力分布到终端用户手中。云计算的一个核心理念就是通过不断提高“云的处理能力,进而减少用户终端的处理负担,最终使用户终端简化成一个单纯的输入输出设备,并能按需享受“云”的强大计算处理能力2。云计算,在广范应用的同时,还需要云存储来作为其辅助。所谓云存储就是在云计算概念上延
4、伸和发展出来的一个新的概念,是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统.当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,那么云计算系统就转变成为一个云存储系统,所以云存储是一个以数据存储和管理为核心的云计算系统3.狭义的云计算中提供资源的网络被称为“云.“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。这种特性经常被称为像水电一样使用IT基础设施.广义的云计算中这种服务可以是IT和软件、互联网
5、相关的,也可以是任意其他的服务。 这种资源池称为“云”.“云是一些可以自我维护和管理的虚拟计算资源,通常为一些大型服务器集群,包括计算服务器、存储服务器、宽带资源等等。云计算将所有的计算资源集中起来,并由软件实现自动管理,无需人为参与。这使得应用提供者无需为繁琐的细节而烦恼,能够更加专注于自己的业务,有利于创新和降低成本4。 1。2 云计算基本架构模式与服务云计算的形成主要是两个方面的推动:一方面是IT提供方如AMAZON、GOOGLE、IBM、MICROSOFT、YAHOO等,积极利用先进技术和资源提供先进的服务架构;另一方面是客户对计算、存储的动态扩展和节省投资、简化管理的服务需求。从IT
6、 提供方来说,云计算大体分为4 个方面,如图1.1所示。第4层第3层第2层第1层面向用户服务的接口或界面云中运行的各类程序资源池(基于抽象或虚拟的软硬件资源)云中各类原始的软硬件设备或系统图1。1 基于IT提供方角度的云计算基本架构其中,第1层包含基本的硬件资源,如计算资源、存储资源和网络资源。第2层包含第3层、第4层和终端用户调用的抽象和封装的资源,通过虚拟技术实现云中各类资源的使用和管理,如虚拟计算机或集群、逻辑文件系统、数据库系统、开发环境、业务流程、云间资源整合等.第3层包含所有在云中运行的程序,如各类业务的实现和进程调度管理、资源管理和监控、网络管理、数据安全管理、用户管理和费用计算
7、等。第4层包含特殊化工具、中间件和服务的集合,为用户提供开发和环境部署,如部署Web服务、其他应用服务系统的开发和部署等5。从用户角度来说,云计算模型主要是提供服务和资源,具体技术实现和内部管理对于用户来说是不可见的,根据服务内容和层次可分为3个方面,如图2所示.费用管理、需求动态扩展、业务状态监控面向终端用户的服务Cloud Application(SaaS)面向开发人员的平台环境服务Cloud Software Environments(PaaS)云计算的核心服务Haas DssS CaaS图2 基于用户角度的云计算基本架构其中,面向终端用户的服务层(SaaS)直接面对终端用户,基于Web
8、2。0技术通过Web界面提供用户服务,用户通过表单提交方式,实现其业务在云中部署,获得云中高性能服务支撑,如精确的CPU计算、深度的数据存储等;另外在该层中,利用SOA技术实现云间的资源整合和服务集成.面向开发人员的平台环境服务层(PaaS)是面向应用开发者提供系统运行环境和编程开发环境,利用一系列定义好的API,实现开发环境与云中运行程序的交互,满足业务的快速部署和动态扩展需求,如通过选择系统内核镜像文件部署用户需要的系统运行环境;选择并部署合适的编程开发环境,结合业务逻辑、工作流、页面布局、表单等实现用户的业务服务。核心服务层为上层和用户提供基础的资源服务,主要有硬件资源服务HaaS(Ha
9、rdware as Sevice)、数据存储服务DaaS(Database as Sevice)、通讯服务CaaS(Communication as Sevice)6。2。 云计算的特点 云计算主要有以下几个特点7:2。1资源集中化管理和服务云中集成大量的计算资源、存储资源、软件资源,提供各种各样的服务,实现各种资源的集中化管理和服务提供,目前一般的云中都集成了成千上万台设备.2.2虚拟化技术现有的云计算平台的最大的特点是利用软件和一系列接口或协议来实现软硬件资源的虚拟化管理、调度及应用。用户通过虚拟平台使用网络资源、计算资源、数据库资源、硬件资源、存储资源等,实现自己的业务部署和应用服务,与
10、自己的本地计算机上使用的感觉是一样的,同时虚拟化技术还可大大降低维护成本并提高资源的利用率.2.3资源和业务的灵活定制用户可以根据自己的需要或喜好定制相应的服务、应用及资源, 云计算平台可以按照用户的需求来部署相应的资源、计算能力、服务及应用。用户不必关心资源在哪里、如何部署,只需要把自己的需求告诉云,剩下的工作就交给云了,云将返回用户定制的结果,当然用户也可以对定制的服务进行管理,如退订或删除一些服务等。2。4动态可扩展性在云计算体系中,一方面,整个资源集成、调用和管理是动态可扩展的,包括硬软件系统的增加、升级;另一方面,根据用户的业务需求可以动态调用和管理云中的资源,提高“云”处理能力,如
11、果云中某服务节点出现故障,则通过相应策略,动态调度别的节点接替该节点的任务,在节点恢复后再实时加入云中.2。5高可靠性和安全性用户的业务和数据部署在云中,基于主从和冗余架构的并行处理方式以及分布式数据存储、身份认证、数据加密措施,不仅保证了业务计算的快速、不间断运行,而且保障用户数据的可靠性和安全性。此外,云中数据被复制到多个节点上,作为多个副本(备份),这样存储在云里的数据即使意外删除或硬件崩溃都不会受到影响.2。6高性价比云计算对用户端的硬件设备要求最低,使用起来也最方便,服务只需定制就可以了,费用按照实际资源使用计算。云中也可以用价格低廉的PC提供环境支撑,而计算能力却可超过大型主机,同
12、时对用户的技术要求也比较低,投入也相对较低。2。7超强大的计算和存储能力用户在任何时间、任意地点,采用任何设备登录到云计算系统后就可以进行计算服务;云计算云端由成千上万台甚至更多服务器组成的集群具有无限空间、无限速度。2.8 以用户为核心,服务人性化云计算集成的各类资源和服务,不仅满足用户的各类业务承载按需部署,提供高可靠、高性能服务和多层次控制,而且在业务运行过程中,按照业务突发需求,提供弹性的资源配置,在技术上对用户无过多要求。费用计算按照不同用户需求和实际的资源使用,节约用户投资。3. 国内外研究现状3.1国外研究现状目前,Amazon、Google、IBM、Microsoft、Sun等
13、公司提出的云计算基础设施或云计算平台,虽然比较商业化,但对于研究云计算却是比较有参考价值的.当然,针对目前商业云计算解决方案存在的种种问题,开源组织和学术界也纷纷提出了许多云计算系统或平台方案8.(1)Google 的云计算基础设施Google的云计算基础设施是在最初为搜索应用提供服务基础上逐步扩展的,主要由分布式文件系统GoogleFile System (GFS)、大规模分布式数据库BigTable、程序设计模式MapReduce、分布式锁机制Chubby等几个相互独立又紧密结合的系统组成.GFS 是一个分布式文件系统,它能够处理大规模的分布式数据。图3.1所示为GFS 的体系结构。系统中
14、每个GFS集群由一个主服务器和多个块服务器组成,被多个客户端访问。主服务器负责管理元数据,存储文件和块的名空间、文件到块之间的映射关系以及每一个块副本的存储位置;块服务器存储块数据,文件被分割成为固定尺寸(64MB)的块,块服务器把块作为Linux文件保存在本地硬盘上。为了保证可靠性,每个块被缺省保存3个备份。主服务器通过客户端向块服务器发送数据请求,而块服务器则将取得的数据直接返回给客户端9。图3。1 Google File System体系结构 2008年,Google在Google I/O大会上发布App Engine公众云系统.2010年,Google已经开放App Engine给企业
15、使用,使其可以打造自己的私有云系统10。(2)IBM“蓝云计算平台IBM的“蓝云(blue cloud)计算平台是由一个数据中心、IBM Tivoli监控软件(Tivoli monitoring)、IBM DB2数据库、IBM Tivoli部署管理软件(Tivoli provisioning manager)、IBM WebSphere应用服务器以及开源虚拟化软件和一些开源信息处理软件共同组成,如图3。2所示。“蓝云”采用了Xen、PowerVM 虚拟技术和Hadoop技术,以期帮助客户构建云计算环境。“蓝云软件平台的特点主要体现在虚拟机以及所采用的大规模数据处理软件Hadoop.该体系结构图
16、侧重于云计算平台的核心后端,未涉及用户界面.由于该架构是完全基于IBM公司的产品设计的,所以也可以理解为“蓝云产品架构11。图3。2 IBM“蓝云”体系结构(3)Sun的云基础设施Sun提出的云基础设施体系结构包括服务、应用程序、中间件、操作系统、虚拟服务器、物理服务器等6个层次,如图3。3所示,形象地体现了其提出的“云计算可描述在从硬件到应用程序的任何传统层级提供的服务”的观点12.图3.3 Sun的云计算平台(4)微软的Azure 云平台微软的Azure云平台包括4个层次,如图3。4所示。底层是微软全球基础服务系统(global foundation service,GFS),由遍布全球的
17、第四代数据中心构成;云基础设施服务层 (cloud infrastructure service)以Windows Azure操作系统为核心, 主要从事虚拟化计算资源管理和智能化任务分配;Windows Azure之上是一个应用服务平台,它发挥着构件(building block)的作用,为用户提供一系列的服务,如Live服务、NET服务、SQL服务等;再往上是微软提供给开发者的API、数据结构和程序库,最上层是微软为客户提供的服务(finished service),如Windows Live、Office Live、Exchange Online等13。图3.4 微软的Azure 云平台(
18、5)Amazon的弹性计算云Amazon是最早提供云计算服务的公司之一,该公司的弹性计算云(elastic compute cloud,EC2)平台建立在公司内部的大规模计算机、服务器集群上,平台为用户提供网络界面操作在“云端运行的各个虚拟机实例(instance).用户只需为自己所使用的计算平台实例付费,运行结束后计费也随之结束.弹性计算云用户使用客户端通过SOAP over HTTPS协议与Amazon弹性计算云内部的实例进行交互,如图3。5所示.图3。5 Amazon的弹性计算云弹性计算云平台为用户或者开发人员提供了一个虚拟的集群环境,在用户具有充分灵活性的同时,也减轻了云计算平台拥有者
19、(Amazon公司)的管理负担.弹性计算云中的每一个实例代表一个运行中的虚拟机。用户对自己的虚拟机具有完整的访问权限,包括针对此虚拟机操作系统的管理员权限。虚拟机的收费也是根据虚拟机的能力进行费用计算的,实际上,用户租用的是虚拟的计算能力14。硬件公司Dell 提供了DCS(Dell Cloud Computing Solution)解决方案,帮助用户构建云计算平台,该解决方案能够降低数据中心的运维成本,提升计算速度、简化数据中心管理,具有良好的可扩展性。软件公司RedHat则与亚马逊公司合作,在亚马逊公司的弹性计算云中部署了RedHat Enterprise Linux并通过虚拟化的方式部署
20、整个弹性计算云平台2008年7月29日,雅虎、惠普和英特尔宣布一项涵盖美国、德国和新加坡的联合研究计划,推出云计算研究测试床,推进云计算。该计划要与合作伙伴建立6个数据中心作为研究试验平台,每个数据中心配置1400个至400个处理器.这些合作伙伴包括新加坡资讯通信发展管理局、德国卡尔斯鲁厄大学Steinbuch计算中心、美国伊利诺大学香宾分校、英特尔研究院、惠普实验室和雅虎。Salesforce。com已经宣布推出面向谷歌App Engine应用开发平台的新型PaaS(平台及服务)F平台,其和VM公司亦将合作推出相应的云计算平台15。(6)中国移动的大云1。0云计算平台中国移动研究院从2007
21、年开始进行云计算的研究和开发,是最早介入云计算研发和实践的企业之一。2009年,中国移动研究院正式对外公布了正在研发和试验的平台“BigCloud-大云”,并以此提升中国移动未来在移动互联网方面的信息服务能力,2009年9月,在中国移动研究院内部发布了大云(Big Cloud 0。5)版本,供内部试用,Big Cloud 1。0版本已经在2010年5月21日发布。经过3年多的努力,中国移动研究院在开源软件基础上自主开发的“大云”系统已实现分布式文件系统、分布式海量数据仓库、分布式计算框架、集群管理、云存储系统、弹性计算系统、并行数据挖掘工具等关键功能,其技术架构如图3.6所示。 图3。6 中国
22、移动Big Cloud体系结构该体系结构具体包括:分布式文件系统。为保证高可用、高可靠和经济性,采用分布式冗余存储的方式来存储数据,以高可靠软件来弥补硬件的不可靠.分布式海量数据仓库。采用列存储的数据管理模式,保证海量数据存储和分析性能.分布式计算框架。采用MapReduce并行编程模式,将任务自动分成多个子任务,通过Map和Reduce两步实现任务在大规模计算节点中的调度与分配,保证后台复杂的并行执行和任务调度向用户和编程人员透明。集群管理。使大量的服务器协同工作,方便地进行业务部署和开通,快速发现和恢复系统故障,通过自动化、智能化的手段实现大规模系统的可运营、可管理。云存储系统.利用“大云
23、”平台存放、管理用户的文件(如:照片、视频,文档等),根据企业用户和个人用户的不同使用方式,提供多种便捷的文件获取方式,同时支持用户之间的文件共享。弹性计算系统。使用开源Xen、KVM提供计算资源的虚拟化,通过对计算资源、网络资源和存储资源进行集中管理和调度,并与用户自服务流程进行管理整合,提供弹性计算服务.并行数据挖掘工具。基于“大云的并行数据挖掘工具库,提供基于SaaS的数据挖掘服务,支持高性能低成本的商务智能应用开发.中国移动在2007年初利用闲置的15台PC服务器,基于开源软件搭建了海量数据处理试验平台,并成功运行搜索引擎软件。2008年底,中国移动进一步建设了256台PC服务器、10
24、00个CPU Core、256TB存储组成的“大云”试验平台,结合现网数据挖掘、用户行为分析等需求进行了应用试点,在提高效率、降低成本、节能减排等方面取得了极为显著的效果.2009年底,中国移动“大云试验平台进一步扩容,达到1000台服务器、5000个CPU Core、3000TB的存储规模16。中国电信亦在2010年5月21日发布了“星云”计划在4个城市进行云计算试验。最近在美国匹兹堡举行的Open Cirrus峰会上,中国移动和中国电信正式加入全球云计算研发测试平台Open Cirrus.2008年5月10日,IBM在中国无锡太湖新城科教产业园建立的中国第一个云计算中心投入运营。2008年
25、6月24日,IBM在北京IBM中国创新中心成立了第二家中国的云计算中心IBM大中华区云计算中心;2008年11月28日,广东电子工业研究院与东莞松山湖科技产业园管委会签约,广东电子工业研究院将在东莞松山湖投资2亿元建立云计算平台;2008年12月30日,阿里巴巴集团旗下子公司阿里软件与江苏省南京市政府正式签订了2009年战略合作框架协议,计划于2009年初在南京建立国内首个“电子商务云计算中心”,首期投资额将达上亿元人民币;世纪互联推出了CloudEx产品线,包括完整的互联网主机服务”CloudEx Computing Service”,基于在线存储虚拟化的”CloudEx Storage S
26、ervice,供个人及企业进行互联网云端备份的数据保全服务等等系列互联网云计算服务。中国的百会公司已经推出在线办公云计算平台,浪潮公司2010年8月份正式发布了云计算战略,将行业云应用作为业务重心,并称将推自主云操作系统17。(6)学术领域提出的云平台Luis M。Vaquero等18从云计算参与者的角度,设计了一种云计算平台的层次结构。该结构中,服务提供商负责为服务消费者提供通过网络访问的各种应用服务,基础架构提供商以服务的形式提供基础设施给服务提供商,从而降低服务提供商的运行成本,提供了更大灵活性和可伸缩性。美国伊利诺伊大学(university of illinois)的Robert L
27、。 Grossman等19提出并实现了一种基于高性能广域网的云计算平台Sector/Sphere,实验测试显示性能方面优于Hadoop。澳大利亚墨尔本大学(university of melbourne)的Rajkumar Buyya等20提出了一种面向市场资源分配的云计算平台原型,其中包括用户(user/broker)、服务等级协议资源分配器(SLA resource allocator)、虚拟机(VM)、物理机器(physical machine)等4个实体(层次),如图3。7所示。图3。7 云平台体系结构清华大学的张尧学教授研究团队提出的“透明计算平台”与云计算基础服务设施构想也基本一致
28、,该透明计算平台的3层体系结构如图3.8所示,包括:透明客户端(transparent client),包括各种个人计算机、笔记本、PDA、智能手机等;中间的透明网络(transparent network)则整合了各种有线和无线网络传输设施,主要用来在各种透明客户端与后台服务器之间完成数据的传递,而用户无须意识到网络的存在;透明服务器(transparent server)不排斥任何一种可能的服务提供方式,既可通过当前流行的PC服务器集群方式来构建透明服务器集群,也可使用大型服务器等21。图3。8 透明计算系统的组成结构(7)开源云计算平台Hadoop由于得到Yahoo、Amazon等公司的
29、直接参与和支持,已成为目前应用最广、最成熟的云计算开源项目。Hadoop本来是Apache Lucene的一个子项目,是从Nutch项目中分离出来的专门负责分布式存储以及分布式运算的项目.Hadoop实现了一种分布式文件系统(hadoop distributed filesystem,HDFS),采用主从构架,如图3.9所示,每个集群由一个名字节点(name node)、多个数据节点(data node)、多个客户端组成。Hadoop 还实现了MapReduce分布式计算模型,将应用程序的工作分解成很多小的工作小块(small block of work)。此外, 国内外很多开源云计算平台项目
30、也都提出了较完整的体系结构设计,比较成熟的包括AbiCloud、Eucalyptus、MongoDB、ECP、Nimbus等项目,均有助于对云计算平台的理解22。图3。9 HDFS的主从构架4。 关键技术分析按需部署是云计算的核心。要解决按需部署, 必须解决资源的动态可重构、监控和自动化部署等, 而这些又需要以虚拟化、高性能存储、处理器、高速互联网等技术为基础。所以云计算除了需要仔细研究其体系结构外, 还要特别注意研究资源的动态可重构、自动化部署、资源监控、虚拟化、高性能存储、处理器、数据管理、编程模式等关键技术23.在此主要介绍云计算特有的技术, 主要包括体系结构及自动化部署、数据存储技术、
31、数据管理技术、编程模式、资源监控等.4.1 体系结构及自动化部署为了有效支持云计算,其体系结构必须支持几个关键特征.首先,系统必须是自治的, 即需要内嵌有自动化技术,以减轻或消除人工部署和管理任务,而允许平台智能地响应应用的要求;其次,云计算的架构必须是敏捷的,能够对需求信号或变化做出迅还的反应。内嵌的虚拟化技术和集群化技术,能应付增长或服务级要求的快速变化。云计算平台的体系结构,如图4。1所示,这是一个云服务器的互连网络图。用户界面资源监控管理系统部署工具服务目录服务器集群图4。1 云计算平台的体系结构其中,(1)用户界面:“云用户请求服务的交互界面;(2)服务目录:用户可选择的服务列表;(
32、3)管理系统:用于管理可用计算资源和服务;(4)部署工具:自治的,根据用户请求智能地部署资源和应用,动态地部署、配置和回收资源;(5)监控:监控云系统资源的使用情况,以便做出迅疾的反应;(6)服务器集群:虚拟或者物理服务器,由管理系统管理。其中的部署工具使用自动化部署方式,是指通过自动安装和部署,将计算资源从原始状态变为可用状态.在云计算中体现为将虚拟资源池中的资源进行划分、安装和部署成可以为用户提供各种服务和应用的过程,其中包括硬件(服务器)、软件(用户需要的软件和配置)、网络和存储。系统资源的部署有多个步骤,自动化部署通过调用脚本,实现不同厂商设备管理工具的自动配置、应用软件的部署和配置,
33、确保这些调用过程可以以静默的方式实现,免除了大量的人机交互, 使得部署过程不再依赖人工操作。整个部署过程基于工作流来实现,如图4.2所示。图4.2自动化部署方案构架其中,工作流引擎和数据模型是在自动化部署管理工具中涉及的功能模块,通过将具体的软硬件甚至逻辑概念定义在数据模型中,管理工具可以标识并在工作流中调度这些资源,实现分类管理。工作流引擎是调用和触发工作流,实现部署自动化的核心机制,自动将不同种类的脚本流程整合在一个集中、可重复使用的工作流数据库中。这些工作流可以自动完成原来需要手工完成的服务器、操作系统、中间件、应用程序、存储器和网络设备的配置任务24。4. 2 数据存储技术为保证高可用
34、、高可靠和经济性, 云计算采用分布式存储的方式来存储数据, 采用冗余存储的方式来保证存储数据的可靠性, 即为同一份数据存储多个副本.另外, 云计算系统需要同时满足大量用户的需求, 并行地为大量用户提供服务。因此, 云计算的数据存储技术必须具有高吞吐率和高传输率的特点。云计算的数据存储技术主要有谷歌的非开源的GFS(Google File System)和Hadoop开发团队开发的GFS的开源实现HDFS(Hadoop Distributed File System)。大部分IT厂商, 包括雅虎、英特尔的云计划采用的都是HDFS的数据存储技术。云计算的数据存储技术未来的发展将集中在超大规模的数据
35、存储、数据加密和安全性保证以及继续提高I/O 速率等方面.以GFS为例。GFS是一个管理大型分布式数据密集型计算的可扩展的分布式文件系统。它使用廉价的商用硬件搭建系统并向大量用户提供容错的高性能的服务。GFS系统由一个Master和大量块服务器构成.Master存放文件系统的所有元数据, 包括名字空间、存取控制、文件分块信息、文件块的位置信息等。GFS中的文件切分为64MB的块进行存储。在GFS文件系统中, 采用冗余存储的方式来保证数据的可靠性。每份数据在系统中保存3个以上的备份。为了保证数据的一致性, 对于数据的所有修改需要在所有的备份上进行, 并用版本号的方式来确保所有备份处于一致的状态.
36、客户端不通过Master读取数据, 避免了大量读操作使Master成为系统瓶颈。客户端从Master获取目标数据块的位置信息后, 直接和块服务器交互进行读操作.GFS的写操作将写操作控制信号和数据流分开, 如图4。3所示。图4。3 写控制信号和写数据流即客户端在获取Master的写授权后, 将数据传输给所有的数据副本, 在所有的数据副本都收到修改的数据后, 客户端才发出写请求控制信号。在所有的数据副本更新完数据后,由主副本向客户端发出写操作完成控制信号.当然, 云计算的数据存储技术并不仅仅只是GFS, 其他IT厂商, 包括微软、Hadoop开发团队也在开发相应的数据管理工具.本质上是一种分布式
37、的数据存储技术, 以及与之相关的虚拟化技术, 对上层屏蔽具体的物理存储器的位置、信息等。快速的数据定位、数据安全性、数据可靠性以及底层设备内存储数据量的均衡等方面都需要继续研究完善25.4。 3 数据管理技术云计算系统对大数据集进行处理、分析向用户提供高效的服务.因此, 数据管理技术必须能够高效地管理大数据集。其次, 如何在规模巨大的数据中找到特定的数据, 也是云计算数据管理技术所必须解决的问题。云计算的特点是对海量的数据存储、读取后进行大量的分析, 数据的读操作频率远大于数据的更新频率, 云中的数据管理是一种读优化的数据管理。因此, 云系统的数据管理往往采用数据库领域中列存储的数据管理模式,
38、将表按列划分后存储.云计算的数据管理技术中最著名的是谷歌提出的BigTable数据管理技术26.由于采用列存储的方式管理数据, 如何提高数据的更新速率以及进一步提高随机读速率是未来的数据管理技术必须解决的问题。以BigTable为例,BigTable数据管理方式设计者-Google给出了如下定义:BigTable是一种为了管理结构化数据而设计的分布式存储系统, 这些数据可以扩展到非常大的规模, 例如在数千台商用服务器上的达到PB(Petabytes)规模的数据.BigTable对数据读操作进行优化, 采用列存储的方式,提高数据读取效率。BigTable管理的数据的存储结构为: string.B
39、igTable的基本元素是:行,列,记录板和时间戳。其中, 记录板是一段行的集合体.如图4。4所示。图4.4 BigTable的逻辑结构BigTable中的数据项按照行关键字的字典序排列, 每行动态地划分到记录板中。每个节点管理大约100个记录板。时间戳是一个64位的整数, 表示数据的不同版本.列族是若干列的集合,BigTable中的存取权限控制在列族的粒度进行。BigTable在执行时需要三个主要的组件:链接到每个客户端的库,一个主服务器,多个记录板服务器.主服务器用于分配记录板到记录板服务器以及负载平衡,垃圾回收等。记录板服务器用于直接管理一组记录板,处理读写请求等。为保证数据结构的高可扩
40、展性,BigTable采用三级的层次化的方式来存储位置信息,如图4.5所示.其中第一级的Chubby file中包含Root Tablet的位置,Root Tablet有且仅有一个,包含所有METADATA tablets的位置信息,每个METADATA tablets包含许多User Table的位置信息。图4。5 BigTable中存储记录板位置信息的结构当客户端读取数据时,首先从Chubby file中获取Root Tablet的位置,并从中读取相应METADATA tablet的位置信息。接着从该METADATA tablet中读取包含目标数据位置信息的User Table的位置,然后
41、从该User Table中读取目标数据的位置信息项。据此信息到服务器中特定位置读取数据。这种数据管理技术虽然已经投入使用,但是仍然具有部分缺点.例如,对类似数据库中的Join操作效率太低,表内数据如何切分存储,数据类型限定为string类型过于简单等。而微软的DryadLINQ系统则将操作的对象封装为.NET类,这样有利于对数据进行各种操作,同时对Join进行了优化,得到了比BigTable+ MapReduce更快的Join速率和更易用的数据操作方式27.4. 4 编程模型为了使用户能更轻松地享受云计算带来的服务,让用户能利用该编程模型编写简单的程序来实现特定的目的,云计算上的编程模型必须十
42、分简单。必须保证后台复杂的并行执行和任务调度向用户和编程人员透明。云计算大部分采用Map2Reduce的编程模式.现在大部分IT厂商提出的云计划中采用的编程模型,都是基于Map2Reduce的思想开发的编程工具。Map2Reduce不仅仅是一种编程模型,同时也是一种高效的任务调度模型。Map2Reduce这种编程模型并不仅适用于云计算,在多核和多处理器、cell processor以及异构机群上同样有良好的性能。该编程模式仅适用于编写任务内部松耦合、能够高度并行化的程序.如何改进该编程模式,使程序员得能够轻松地编写紧耦合的程序,运行时能高效地调度和执行任务,是Map2Reduce编程模型未来的
43、发展方向.Map2Reduce是一种处理和产生大规模数据集的编程模型,程序员在Map函数中指定对各分块数据的处理过程,在Reduce函数中指定如何对分块数据处理的中间结果进行归约.用户只需要指定map和reduce函数来编写分布式的并行程序。当在集群上运行Map2Reduce程序时,程序员不需要关心如何将输入的数据分块、分配和调度,同时系统还将处理集群内节点失败以及节点间通信的管理等。图4。6给出了一个Map2Reduce程序的具体执行过程28。图4.6 Map2Reduce程序的具体执行过程从图4。6可以看出,执行一个Map2Reduce程序需要五个步骤:输入文件、将文件分配给多个worke
44、r并行地执行、写中间文件(本地写)、多个Reduce workers同时运行、输出最终结果。本地写中间文件在减少了对网络带宽的压力同时减少了写中间文件的时间耗费.执行Reduce时,根据从Master获得的中间文件位置信息,Reduce使用远程过程调用,从中间文件所在节点读取所需的数据。Map2Reduce模型具有很强的容错性,当worker节点出现错误时,只需要将该worke节点屏蔽在系统外等待修复,并将该worker上执行的程序迁移到其他worker上重新执行,同时将该迁移信息通过Master发送给需要该节点处理结果的节点.Map2Reduce使用检查点的方式来处理Master出错失败的问
45、题,当Master出现错误时,可以根据最近的一个检查点重新选择一个节点作为Master并由此检查点位置继续运行.Map2Reduce仅为编程模式的一种,微软提出的DryadLINQ是另外一种并行编程模式。但它局限于。NET的LINQ系统同时并不开源,限制了它的发展前景。Map2Reduce作为一种较为流行的云计算编程模型,在云计算系统中应用广阔。但是基于它的开发工具Hadoop并不完善。特别是其调度算法过于简单,判断需要进行推测执行的任务的算法造成过多任务需要推测执行,降低了整个系统的性能.改进Map2Reduce的开发工具,包括任务调度器、底层数据存储系统、输入数据切分、监控云系统等方面是将
46、来一段时间的主要发展方向.另外,将Map2Reduce的思想运用在云计算以外的其他方面也是一个流行的研究方向。4.5 资源监控“云”通常具有大量服务器,并且资源是动态变化的,需要及时、准确、动态的资源信息。资源监控可以为“云”对资源的动态部署提供依据,并有效监控资源的使用情况和负载情况.资源监控是实现“云”资源管理的一个重要环节,它可提供对系统资源的实时监控,并为其它子系统提供系统性能信息,以便更好地完成系统资源的分配.云计算通过一个监视服务器监控和管理计算资源池中的所有资源,并通过在云中的各个服务器上部署Agent代理程序,配置并监视各资源服务器,定期将资源使用信息数据传送至数据仓库,监视服
47、务器数据仓库中“云资源的使用情况,对数据进行分析及跟踪资源的可用性,为排除故障和均衡资源提供信息29。5 结束语5.1云计算存在的问题当前的云计算主要存在如下几个问题:没有统一的协议和规范虽然云计算是网络服务的发展趋势,但其形成主要是利用最新的技术,如并行网格计算、虚拟技术、分布存储、大文件系统、SOA和Web2。0技术等,按照松散耦合方式实现资源整合管理和提供网上服务,还没有形成统一的协议和规范,每一个云中的服务都有一个特定接口,对应相应的存取协议,还没有形成统一接口30。标准不统一带来的问题就是,各大巨头各自推出自己的云计算,在目前云计算影响较小时,可能还没什么问题,到了今后大范围推广后,
48、就会有很多问题。比如说兼容性之类的出现了,而这些问题如果不解决好,对云计算的发展会是很不利的,就好像比较早的时候,中国移动和中国联通用户不能互发短信一样,会造成很多麻烦。数据安全问题目前制约云计算大规模应用的一个重要因素就是数据安全问题,由于云中的数据存储是基于虚拟技术和分布式架构,用户不知道自己的数据究竟存放在云中的哪台设备上,虽然云中已利用身份认证和数据加密等技术确保数据的安全,但由于相关云计算的法律法规没有制定,用户还是担心自己重要数据和敏感数据的泄密。此外,云中数据的所有权问题也没有界定。对于某些用户来说,信息就等同于他的全部财富,如果泄漏出去,甚至会变的一无所有.像这样一些问题都需要云计算的提供者拿出强有力的证据并通过长时间的努力才能解决31。推广问题一旦进入云计算时代,那么所有的传统硬件厂商和操作系统企业将何去何从?新事物的出现必将伴随旧事物的阻挠.另外,云计算自身的稳定性也影响到人们对它的印象,google和amazon都出现过宕机导致无法提供服务,这都会让人们