1.4 云计算与网格计算
在云计算的发展过程中,网格计算扮演了重要的角色。在前文的介绍中,将云计算看作是从网格计算演化而来,能够随需应变地提供资源。那到底什么是网格计算?云计算与网格计算之间的关系是什么?
1.4.1 网格计算
网格计算的产生是应对计算资源和计算能力不断增长需求的结果,其概念来源于电力网(Power Grid)。但与电力网相比,网格的结构更复杂,需要解决的问题也更多,对推动社会的快速发展有巨大的作用。
网格计算实际上应归于分布式计算(Distributed Computing)。网格计算模式首先把要计算的数据分割成若干“小片”,而计算这些“小片”的软件通常是一个预先编制好的程序,然后处于不同节点的计算机根据自己的处理能力下载一个或多个数据片段进行计算。
网格计算的目的是,通过任何一台计算机都可以提供无限的计算能力,可以接入浩如烟海的信息。这种环境将能够使各企业解决以前难以处理的问题,最有效地使用他们的系统,满足客户要求并降低他们计算机资源的拥有和管理总成本。网格计算的主要目的是设计一种能够提供以下功能的系统:
1)提高或拓展企业内所有计算资源的效率和利用率,满足最终用户的需求,同时能够解决以前由于计算、数据或存储资源的短缺而无法解决的问题。
2)建立虚拟组织,通过让他们共享应用和数据来对公共问题进行合作。
3)整合计算能力、存储和其他资源,能使得需要大量计算资源的巨大问题求解成为可能。
4)通过对这些资源进行共享、有效优化和整体管理,能降低计算的总成本。
目前网格计算技术流行的三种体系结构,即五层沙漏体系结构(Five-Level Sandglass Architecture)、开放网格服务体系结构(Open Grid Services Architecture,OGSA)、Web服务资源框架(Web Services Resource Framework,WSRF)。
1.五层沙漏体系结构
五层沙漏体系结构是由Ian Foster等最早提出的一种具有代表性的网格体系结构,也是一个最先出现的应用和影响广泛的结构。它的特点就是简单,主要侧重于定性的描述而不是具体的协议定义,容易从整体上进行理解。在五层沙漏体系结构中,最基本的思想就是:以协议为中心,强调服务与API和SDK的重要性。
五层沙漏体系结构的设计原则就是要保持参与的开销最小,即作为基础的核心协议较少,类似于OS内核,以方便移植。另外,沙漏结构管辖多种资源,允许局部控制,可用来构建高层的、特定领域的应用服务,支持广泛的适应性。
五层沙漏体系结构根据该结构中各组成部分与共享资源的距离,将对共享资源进行操作、管理和使用的功能分散在五个不同的层次,由下至上分别为构造层(Fabric)、连接层(Con-nectivity)、资源层(Resource)、汇聚层(Collective)和应用层(Application),如图1-3所示。
图1-3 沙漏形状的五层结构
在五层结构中,资源层和连接层共同组成了瓶颈部分,使得该结构呈沙漏形状。其内在的含义就是各部分协议的数量是不同的,对于其最核心的部分,要能够实现上层各种协议向核心协议的映射,同时实现核心协议向下层各种协议的映射,核心协议在所有支持网格计算的地点都应该得到支持,因此核心协议的数量不应该太多,这样核心协议就形成了协议层次结构中的一个瓶颈。
2.开放网格服务体系结构
开放网格服务体系结构是继五层沙漏体系结构之后最重要的一种网格体系结构,由Fos-ter等结合Web Service等技术,在IBM的合作下提出的新的网格结构。OGSA最基本的思想就是以“服务”为中心。在OGSA框架中,将一切抽象为服务,包括各种计算资源、存储资源、网络、程序、数据库等,简而言之,一切都是服务。五层沙漏体系结构的目的是要实现对资源的共享,而OGSA中则要实现的是对服务的共享。
OGSA定义了网格服务(Grid Service)的概念。网格服务是一种Web Service,该服务提供了一组接口,这些接口的定义明确并且遵守特定的管理,解决服务发现、动态服务创建、生命周期管理、通知等问题。在OGSA中,将一切都看作网格服务,因此网格就是可扩展的网格服务的集合。网格服务可以通过不同的方式聚集起来满足虚拟组织的需要,虚拟组织自身也可以部分地根据它们操作和共享的服务来定义。简单地说,网格服务=接口/行为+服务数据。图1-4所示为网格服务体系结构示意图。
图1-4 网格服务体系结构示意图
OGSA包括两大关键技术,即网格技术(如Globus软件包)和Web Service技术,它是在五层沙漏体系结构的基础上,结合Web Service技术提出来的,解决了两个重要问题——标准服务接口的定义和协议的识别。
3.Web服务资源框架
在OGSA刚提出不久,GGF及时推出了开放网格服务基础架构(Open Grid Services In-frastructure,OGSI)草案,通过扩展Web服务定义语言WSDL和XML Schema的使用,来解决具有状态属性的Web服务问题。OGSI通过封装资源的状态,将具有状态的资源建模为Web服务,这种做法引起了“Web服务没有状态和实例”的争议,同时某些Web服务的实现不能满足网格服务的动态创建和销毁的需求。因此,Web服务资源框架(Web Service Re-source Framework,WSRF)开始出现。
WSRF采用了与网格服务完全不同的定义:资源是有状态的,服务是无状态的。为了充分兼容现有的Web服务,WSRF使用WSDL 1.1定义OGSI中的各项能力,避免对扩展工具的要求,原有的网格服务已经演变成了Web服务和资源文档两部分。WSRF推出的目的在于,定义出一个通用且开放的架构,利用Web服务对具有状态属性的资源进行存取,并包含描述状态属性的机制,另外也包含如何将机制延伸至Web服务中的方式。
WSRF是一个服务资源的框架,一个具有五个技术规范的集合,它们根据特定的Web服务消息交换和相关的XML规范来定义Web服务资源方法的标准化描述。在表1-1中总结了这些技术规范。
表1-1 WSRF中五个标准化的技术规范
(续)
1.4.2 云计算与网格计算的异同点
没有网格计算打下的基础,云计算也不会这么快到来。云计算是从网格计算发展演化而来的,网格计算为云计算提供了基本的框架支持。网格计算关注于提供计算能力和存储能力,而云计算侧重于在此基础上提供抽象的资源和服务。
两者具有如下相同点:
1)都具有超强的数据处理能力。两者都能够通过互联网将本地计算机上的计算转移到网络计算机上,以此来获得数据或者计算能力。
2)都构建自己的虚拟资源池,而且资源及使用都是动态可伸缩的。两者的服务都可以快速方便地获得,且在某种情况下是自动化获取的;都可以通过增加新的节点或者分配新的计算资源来解决计算量的增加;CPU和网络带宽根据需要分配和回收;系统存储能力根据特定时间的用户数量、实例的数量和传输的数据量进行调整。
3)两种计算类型都涉及多租户和多任务。即很多用户可以执行不同的任务,访问一个或多个应用程序实例。
可以看出云计算和网格计算有着很多相同点,但它们的区别也是明显的,其不同点如下:
1)网格计算重在资源共享,强调转移工作量到远程的可用计算资源上;云计算则强调专有,任何人都可以获取自己的专有资源。网格计算侧重并行的集中性计算需求,并且难以自动扩展;云计算侧重事务性应用,大量的单独请求,可以实现自动或半自动的扩展。
2)网格构建是尽可能地聚合网络上的各种分布资源,将这些资源进行协同调度,来支持挑战性的应用或者完成某一个特定的任务需要。它使用网格软件,将庞大的项目分解为相互独立的、不太相关的若干子任务,然后交由分布在不同地域、不同机构的各个计算节点进行计算。云计算一般来说都是为了通用应用而设计的,云计算的资源一般相对集中在大型云数据中心里,资源配置一般也比较统一,以Internet的形式向用户提供底层资源的获得和使用。
3)对待异构理念不同。网格计算用中间件屏蔽异构系统,力图使用户面向同样的环境,把困难留在中间件,让中间件完成任务。而云计算是不同的服务采用不同的方法对待异构性,一般用虚拟机和镜像来执行,或者以提供服务的机制来解决异构性的问题。
4)网格计算更多地面向大型科研应用,比如大型强子对撞机、引力波探测、天体物理、生物信息学、放射医学等领域的应用,非常重视标准规范,也非常复杂,但缺乏成功的商业模式。而云计算从诞生开始就是针对企业商业应用,商业模型比较清晰。
总之,云计算是以相对集中的资源,运行分散的应用(大量分散的应用在若干大的中心执行)(见图1-5a);而网格计算则是聚合分散的资源,支持大型集中式应用(一个大的应用分到多处执行)(见图1-5b)。但从根本上来说,从应对Internet的应用的特征特点来说,它们是一致的,为了完成在Internet情况下支持应用,解决异构性、资源共享等问题。
1.4.3 云计算与网格计算的互补关系
云计算无疑是迄今最为成功的商业计算模型,但它并不能包治百病,而它的一些缺陷正是网格计算所擅长的。
1)从平台统一角度看。目前云计算还没有统一的标准,不同厂商的解决方案风格迥异、互不兼容,未来一定会朝着形成统一平台的方向发展;而网格计算生来就是为了解决跨平台、跨系统、跨地域的异构资源动态集成与共享的,而且国际网格界已经形成了统一的标准体系和成功应用。网格计算能够帮助在云计算平台之间实现互操作,从而达成云计算设施的一体化,使得未来的云计算不再以厂商为单位提供,而构成一个统一的虚拟平台。因而,可以预见,云和云之间的协同共享离不开网格的支持。
2)从计算角度看。云计算管理的是由PC和服务器构成的廉价计算资源池,主要针对松耦合型的数据处理应用,对于不容易分解成众多相互独立子任务的紧耦合型计算任务,采用云计算模式来处理效率很低,因为节点之间存在频繁的通信;网格计算能够集成分布在不同机构的高性能计算机,它们比较擅长处理紧耦合型应用,而有许多应用都属于紧耦合型应用,如数值天气预报、汽车模拟碰撞试验、高楼受力分析等。这类应用并不是云计算所擅长的,如果云计算与网格计算能够一体化,则可以充分发挥各自的特点。
3)从数据角度看。云计算主要管理和分析商业数据;网格计算已经集成了极其海量的科学数据,如物种基因数据、天文观测数据、地球遥感数据、气象数据、海洋数据、药物数据、人口统计数据等。如果将云计算与网格计算集成在一起,则可以大大扩大云计算的应用范畴。目前亚马逊在不断征集供公众共享使用的数据集,包括人类基因数据、化学数据、经济数据、交通数据等,这充分说明云计算对于这些数据集的需求,同时也反映出这种征集的方法过于原始。
4)从资源集成角度看。要使用云计算,就必须要将各种数据、系统、应用集中到云计算数据中心上去,而很多现有信息系统要改变运行模式、迁移到云计算平台上的难度和成本是不低的。还有些系统的数据源离数据中心可能距离较远,且数据源的数据是不断更新的(物联网就具有此种特性),如果要求随时随刻将这些数据传送到云计算中心,则对网络带宽的消耗是不经济的。因此还会有大量的应用系统处于分散运转状态,而不会集中到云计算平台上去;而网格计算可以在现有的资源上实现集成,达到物理分散、逻辑集中的效果,可以巧妙地解决这方面的问题。
图1-5 云计算与网格计算的异同
5)从信息安全角度看。许多用户担心将自己宝贵的数据托管到云计算中心,就相当于丧失了对数据的绝对控制权,存在被第三方窥看、非法利用或丢失的可能,从而不敢采用云计算技术;而在网格环境中,数据可以仍然保存在原来的数据中心,仍然由其所有者管控,但对外界提供数据访问服务,是一种可以用但不能全部拿走的模式,不会丧失数据的所有权,但数据资源的使用范围扩大了、利用率提高了。由于数据源头分别由不同所有者控制,它们可以决定每一种数据是否共享和在什么范围共享,较之将所有数据都放进云计算数据中心进行共享更有利于避免敏感数据的扩散。
因此,云计算与网格计算其实是互补的关系,而不是取代的关系。网格计算主要解决分布在不同机构的各种信息资源的共享问题,而云计算主要解决计算力和存储空间的集中共享使用问题。可以预见,云计算与网格计算终将融为一体,这就是云计算的明天。