图6 BigTable系统的组织结构
与前述的系统类似,BigTable也是客户端和服务器端的联合设计,使得性能能够最大程度地符合应用的需求,BigTable系统依赖于集群系统的底层结构,一个是分布式的集群任务调度器,一个是前述的Google文件系统,还有一个分布式的锁服务Chubby,Chubby是一个非常鲁棒的粗粒度锁,BigTable使用Chubby来保存根数据表格的指针,即用户可以首先从Chubby锁服务器中获得根表的位置,进而对数据进行访问,BigTable使用一台服务器作为主服务器,用来保存和操作元数据,主服务器除了管理元数据之外,还负责对tablet服务器(即一般意义上的数据服务器)进行远程管理与负载调配,客户端通过编程接口与主服务器进行元数据通信,与tablet服务器进行数据通信。
以上是Google内部云计算基础平台的3个主要部分,Google还构建其他云计算组件,包括一个领域描述语言以及分布式锁服务机制等,文献[5]描述了Google内部构建集群的方法,即使用了大量的x86服务器集群来构建整个计算的硬件基础设施,Sawzall是一种建立在MapReduce基础上的领域语言,专门用于大规模的信息处理,Chubby[9]是前述的一个高可用、分布式数据锁服务,当有机器失效时,Chubby使用Paxos算法来保证备份的一致性,Chubby的小型分布式文件系统的每一个单元都可以用来提供锁服务。
3 IBM“蓝云”计算平台
IBM的“蓝云”计算平台是一套软、硬件平台,将Internet上使用的技术扩展到企业平台上,使得数据中心使用类似于互联网的计算环境,“蓝云”大量使用了IBM先进的大规模计算技术,结合了IBM自身的软、硬件系统以及服务技术,支持开放标准与开放源代码软件,“蓝云”基于IBM Almaden研究中心的云基础架构,采用了Xen和PowerVM虚拟化软件,Linux操作系统映像以及Hadoop软件(Google File System以及MapReduce的开源实现),IBM已经正式推出了基于x86芯片服务器系统的“蓝云”产品。
图7 IBM“蓝云”产品架构
由图可知,“蓝云”计算平台由一个数据中心、IBM Tivoli部署管理软件(Tivoli provisioning manager)、IBM Tivoli监控软件(IBM Tivoli monitoring)、IBM WebSphere应用服务器、IBM DB2数据库以及一些开源信息处理软件和开源虚拟化软件共同组成,“蓝云”的硬件平台环境与一般的x86服务器集群类似,使用刀片的方式增加了计算密度,“蓝云”软件平台的特点主要体现在虚拟机以及对于大规模数据处理软件Apache Hadoop的使用上,Hadoop是开源版本的Google File System软件和MapReduce编程规范。
·“蓝云”计算平台中的虚拟化技术
“蓝云”软件的一个重要特点是虚拟化技术的使用,虚拟化的方式在“蓝云”中有两个级别,一个是在硬件级别上实现虚拟化,另一个是通过开源软件实现虚拟化,硬件级别的虚拟化可以使用IBM p系列的服务器,获得硬件的逻辑分区LPAR(logic partition),逻辑分区的CPU资源能够通过IBM EntERPrise Workload Manager来管理,通过这样的方式加上在实际使用过程中的资源分配策略,能够使相应的资源合理地分配到各个逻辑分区,p系列系统的逻辑分区最小粒度是1/10颗中央处理器(CPU),Xen则是软件级别上的虚拟化,能够在Linux基础上运行另外一个操作系统。
虚拟机是一类特殊的软件,能够完全模拟硬件的执行,运行不经修改的完整的操作系统,保留了一整套运行IBM Tivoli Tivoli provising WebSphere application Virtualization infrastructure based on open source Linux & Xen Monitoring Provisioning baremental & Xen VM环境语义,通过虚拟机的方式,在云计算平台上获得如下一些优点:
1) 云计算的管理平台能够动态地将计算平台定位到所需要的物理节点上,而无须停止运行在虚拟机平台上的应用程序,进程迁移方法更加灵活;
2) 降低集群电能消耗,将多个负载不是很重的虚拟机计算节点合并到同一个物理节点上,从而能够关闭空闲的物理节点,达到节约电能的目的;
3) 通过虚拟机在不同物理节点上的动态迁移,迁移了整体的虚拟运行环境,能够获得与应用无关的负载平衡性能;
4) 在部署上也更加灵活,即可以将虚拟机直接部署到物理计算平台上,而虚拟机本身就包括了相应的操作系统以及相应的应用软件,直接将大量的虚拟机映像复制到对应的物理节点即可。
·“蓝云”计算平台中的存储体系结构
“蓝云”计算平台中的存储体系结构对于云计算来说也是非常重要的,无论是操作系统、服务程序还是用户的应用程序的数据都保存在存储体系中,“蓝云”存储体系结构包含类似于Google File System的集群文件系统以及基于块设备方式的存储区域网络SAN。
在设计云计算平台的存储体系结构时,不仅仅是需要考虑存储容量的问题,实际上,随着硬盘容量的不断扩充以及硬盘价格的不断下降,可以通过组合多个磁盘获得很大的磁盘容量,相对于磁盘的容量,在云计算平台的存储中,磁盘数据的读写速度是一个更重要的问题,因此需要对多个磁盘进行同时读写,这种方式要求将数据分配到多个节点的多个磁盘当中,为达到这一目的,存储技术有两个选择,一个是使用类似于Google File System的集群文件系统,另一个是基于块设备的存储区域网络SAN系统。
在蓝云计算平台上,SAN系统与分布式文件系统(例如Google File System)并不是相互对立的系统,SAN提供的是块设备接口,需要在此基础上构建文件系统,才能被上层应用程序所使用,而Google File System正好是一个分布式的文件系统,能够建立在SAN之上,两者都能提供可靠性、可扩展性,至于如何使用还需要由建立在云计算平台上的应用程序来决定,这也体现了计算平台与上层应用相互协作的关系。
4 Amazon的弹性计算云
Amazon是互联网上最大的在线零售商,每天负担着大量的网络交易,同时Amazon也为独立软件开发人员以及开发商提供云计算服务平台,Amazon将他们的云计算平台称为弹性计算云(elastic compute cloud,简称EC2),是最早提供远程云计算平台服务的公司,Amazon将自己的弹性计算云建立在公司内部的大规模集群计算的平台上,而用户可以通过弹性计算云的网络界面去操作在云计算平台上运行的各个实例(instance),用户使用实例的付费方式由用户的使用状况决定,即用户只需为自己所使用的计算平台实例付费,运行结束后计费也随之结束,这里所说的实例即是由用户控制的完整的虚拟机运行实例,通过这种方式,用户不必自己去建立云计算平台,节省了设备与维护费用。
Amazon的弹性计算云由名为Amazon网络服务(Amazon Web services)的现有平台发展而来,2006年3月,Amazon发布了简单存储服务(simple storage service,简称S3),用户使用SOAP协议存放和获取自己的数据对象,在2007年7月,Amazon公司推出了简单队列服务(simple queue service,简称SQS),这项服务能够使得托管虚拟主机之间发送的消息,支持分布式程序之间的数据传递,无须考虑消息丢失的问题,Amazon又继续提供了EBS(elastic block storage)服务,为用户提供块级别的存储接口,在提供这些基础设施的同时,Amazon公司开发了弹性计算云EC2系统,开放给外部开发人员使用,图8给出了一个EC2系统的使用模式。
从图8中可以看出,弹性计算云用户使用客户端通过SOAP over HTTPS协议与Amazon弹性计算云内部的实例进行交互,这样,弹性计算云平台为用户或者开发人员提供了一个虚拟的集群环境,在用户具有充分灵活性的同时,也减轻了云计算平台拥有者(Amazon公司)的管理负担,弹性计算云中的每一个实例代表一个运行中的虚拟机,用户对自己的虚拟机具有完整的访问权限,包括针对此虚拟机操作系统的管理员权限,虚拟机的收费也是根据虚拟机的能力进行费用计算的,实际上,用户租用的是虚拟的计算能力。
总而言之,Amazon通过提供弹性计算云,满足了小规模软件开发人员对集群系统的需求,减小了维护负担,其收费方式相对简单明了:用户使用多少资源,只需为这一部分资源付费即可。
为了弹性计算云的进一步发展,Amazon规划了如何在云计算平台基础上帮助用户开发网络化的应用程序,除了网络零售业务以外,云计算也是Amazon公司的核心价值所在,必然会在弹性计算云的平台上添加更多的网络服务组件模块,为用户构建云计算应用提供方便。
图8 Amazon弹性计算云使用模式
5 云计算的学术研究
本节我们将主要讨论与上述系统有关的文献资料以及分布式计算实际系统最新进展的论文,由于云计算技术在互联网应用上的重要性,有很多论文都出自各个大公司的研究院,这包括传统的软件和服务公司(如Microsoft,惠普)以及新兴的网络服务公司(如Yahoo,Google等),关于云计算技术上的研究主要包括两个方面,一个是如何构建分布式平台的基础设施,另一个是如何帮助开发人员在云计算的分布式平台上进行编程。
在分布式平台的基础设施研究上,主要包括微软的Dryad框架,Amazon公司的Dynamo框架,以及应用于Ask,com公司的Neptune框架,微软公司为了方便应用程序开发人员进行分布式程序的开发,提供了一个平台Dryad,以支持有向无环图类型数据流的并行程序,Dryad是一个一般化的框架,能够支持MapReduce类型的应用程序以及关系代数的一些操作,而Dryad的整体框架则根据程序的要求完成调度工作,自动完成任务在各个节点上的运行,Amazon公司的研究人员研究了如何通过集群的技术快速存取大量的(键值,数据)对的问题(即Key,Value对),并建立Dynamo系统来维护这些信息,由于Amazon公司的特殊性,其公司内部的应用程序在很多情况下需要处理(键值,数据)对,并且需要扩展到大规模集群上,在对于读写控制方面,传统的读写处理方式是尽量简化读的操作,而将复杂性放在写操作上,Dynamo系统则将复杂性放在读的方面,将整个系统设计成总是可以写入的,以提高网络用户购物的体验,Dynamo主要使用结构化的P2P结构一致性哈希算法来对数据进行划分与存储,使用向量时钟的方式帮助完成数据读取,并采用哈希树与Gossip协议等一些手段对错误进行处理,应用于Ask,com的Neptune技术则针对大量数据进行归并,总体框架首先将数据分布到大规模集群网络上,每一个网络中的节点只需保存一部分数据即可,而后每一个节点在数据上做相应的操作,将操作输出的中间结果进行归并操作即可获得最终的结果,这种归并方式在网络数据处理的应用上非常广泛。
在帮助开发人员在云计算的分布式平台上进行编程的研究方面,有很多研究机构开发了新的编程模式,对MapReduce编程模式进行扩展或者更新,Yahoo公司扩展了MapReduce框架,在MapReduce步骤之后加入一个Merge的步骤,从而形成一个新的MapReduceMerge框架,使用这样的框架应用程序开发人员可以自己提供Merge函数,做两个数据集合的合并操作,Stanford大学的研究人员将MapReduce的思想应用到多核处理器上,主要工作是在多核处理器的基础上构建了一套MapReduce的编程框架,并结合各种不同的应用程序在多核上的表现与现有的使用pthread编程方式进行比较,结果表明,在适合MapReduce表达的应用程序上,MapReduce效率较高,在多核上的应用是有价值的,Wisconsin大学的研究人员在Cell处理器上运行了基于MapReduce的应用程序,由于Cell处理器是异构多核的处理器,由1个中央处理器和8个协处理器构成,对此编程比较困难,他们将MapReduce的框架移植到Cell处理器的架构上,实验结果表明,Cell处理器上的MapReduce程序有一定程度的性能提高,在不同于MapReduce编程方面,HP的Sinfonia将注意力关注于分布式共享内存的使用,Sinfornia提供了一个新的编程接口,一个对于内存的读写操作三元组(Compare,Read,Write),在这个三元组中,Compare是比较列表,由应用程序提供一系列的值与相应的集群内存中的数值进行比较,类似地,Read和Write是读出和写入的列表,表明一系列的读写操作,其语意是首先进行Compare列表的比较,如果所有的比较都能得到满足,则进行三元组中的读写操作,如果上述的任何一个部分操作失败,则整个操作回卷到操作之前的状态,保持系统一致,目前已经在这种模式上完成了分布式文件系统的构建以及分布式的垃圾收集系统等,同时,这样的一种系统也能够容忍大量节点的失败,完成了对于可用性的保证。
6 云计算系统的特征比较与未来的发展
本节主要讨论云计算的共同特征以及它们之间的差异点,从用户的角度来看,云计算系统将各种数据包括用户数据都通过网络保存到远端的云存储平台上,减小了用户对于数据管理的负担;同时,云计算系统也将处理数据的服务程序通过远程的大规模云计算处理平台进行,能够负担大量数据的处理工作,可以说,云计算是数据共享计算模式与服务共享计算模式的结合体,是下一代计算模式的发展方向,从平台技术构建来看,云计算具有3个基本特征,即系统建立在大规模的廉价服务器集群之上,通过基础设施与上层应用程序的协同构建以达到最大效率利用硬件资源的目的,以及通过软件的方法容忍多个节点的错误,通过云计算对这3个方面基本特征的体现,达到了分布式系统两个方面的目标,即系统的可扩展性和可靠性。
各个云计算平台也各自具有不同的特点,特别是在平台的使用上,透明计算平台为用户同时提供了用户实际接触的客户端节点以及无法接触的远程虚拟存储服务器,是一个半公开的环境,Google的云计算平台环境是私有的环境,除了开放有限的应用程序接口,例如GWT(Google Web toolkit),Google App Engine以及Google Map API等以外,Google并没有将云计算的内部基础设施共享给外部的用户使用,IBM的“蓝云”计算平台则是可供销售的软、硬件集合,用户基于这些软、硬件产品构建自己的云计算应用,Amazon的弹性计算云则是托管式的云计算平台,用户可以通过远端的操作界面直接操作使用,看不到实际的物理节点,表1从其他角度比较了各个云计算系统的不同之处,可以看出,虽然云计算系统在很多方面具有共性,但实际上各个系统之间还是有很大不同的,这也给云计算用户或者开发人员带来了不同的体验。
云计算未来主要有两个发展方向:一个是构建与应用程序紧密结合的大规模底层基础设施,使得应用能够扩展到很大的规模;另一个是通过构建新型的云计算应用程序,在网络上提供更加丰富的用户体验,第1个发展趋势能够从现有的云计算研究状况中体现出来,详见上一节的分析,而在云计算应用的构造上,很多新型的社会服务型网络,如facebook等,已经体现了这个发展趋势,而在研究上则开始注重如何通过云计算基础平台将多个业务融合起来。
7 结束语
本文讨论了当前云计算技术发展的前沿技术,通过具体的云计算实例进行详细分析与研究,使读者能够掌握云计算的内部含义,从总体上来说,云计算可以从大规模分布式的基础架构以及平台之上的云计算应用程序两个方面去理解,而本文的重点则放在云计算的基础架构建设方面,这是构建整个云计算平台的根本,总结本文的云计算系统实例以及相关的研究现状,相信随着云计算概念的提出以及相应系统构建实践经验的获得,在不久的将来,工业界和学术界对云计算的研究无疑会成为一个热点。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:云计算:系统实例与研究现状(下)
本文网址:http://www.toberp.com/html/consultation/1083979201.html