网格计算及其标准综述
一. 什么是网格
    网格计算是伴随着互联网而迅速发展起来的,专门针对复杂科学计算的新型计算模式。这种计算模式是利用互联网将分散在不同地理位置的电脑组织成一个“虚拟的超级计算机”,其中每一台参与计算的计算机就是一个“节点”,而整个计算系统是由成千上万个“节点”组成的“一张网格”,所以这种计算方式叫网格计算[1](这里并不是对于网格的定义)。
    这里应该指出[2],网格技术不同于上世纪90年代中期美国推出的Intemet2和NGI(下一代因特网),因为.二者开发的目标不同。Intemet2和NGI的开发目标主要是提高因特网的传输速率(提高100-1000倍)以及具有更强的功能、更安全和更多的网址,实现真正意义上的信息高速公路。为此采用新的网络协议IPV.6,其原型还是TCP/IP。网格的开发目的是连接所有的网络资源,实现资源共享、异地协同工作,支持开放标准、功能动态变化。它所采用的协议标准也将不同。其最终目标是构建一台虚拟超级计算机,能实现服务点播(Service On Demand)和一步到位服务(On Click Is Enough)。
二. 网格计算的发展阶段
    网格一词最早出现在 20世纪90年代中期,而网格计算的概念在1995年的I-WAY项目中被提出。
    20世纪90年代初,美国国家科学基金会(NFS),将其4个超级计算中心构筑成一个能够进行元计算(meta-computing)的整体[3]。元计算的含义是通过网络,将计算资源连接起来,形成对用户透明的超级计算环境。这是网格的雏型,如今这个术语已被网格计算所代替。Sun公司技术产品营销经理PeterJeffcock认为[1],网格计算有明显的三个阶段:①利用软件控制分布式计算系统的独立软件工程发展起来的集网格(Cluster Grid);②校园网格(Campus Grid)从几个建筑物或地点合并计算资源;③全球网格(Global Grid)将作为新一代网格计算概念浮现[4]
    我们比较认同这种说法,以前我们所研究的集系统就属于集网格;目前我国在国内的十所高校设立了十个网格计算结点的研究,这属于校园网格研究;而在规范和技术成熟后应用于全球的计算网格,应该就是全球网格。 
    还有一些跟网格计算相关的概念是分布式计算(Distributed Computing),对等式计算(Peer-to-Peer Computing),因特网计算(Internet Computing),全球计算(Global Computing),无缝的可扩展计算(Seamless Scalable Computing),基于Web的并行计算(web-based parallel computing)等。api接口和sdk接口的区别
    必须明确指出的是:目前网格及网格计算本身没有公认的定义。比如GGF(Global Grid Forum)认为网格就是分布式计算,对等式计算是工业界对网格计算的另外一种叫法。
2002年,Ian Foster[5]在《Grid Today》-Global Grid周报上,从三个方面更清晰地定义网格,他认为网格是一个满足如下三个条件的系统:
(1)能协调不服从集中式控制的资源网格能集成和协调资源与用户在不同控制域内的活动。不同的控制域有:使用集中计算的用户桌面,同一公司的不同的管理部门,或不同的公司等;同时,网格能解决包括安全、策略、付款、成员资格等各种问题。
(2)使用标准的、开放的、通用的协议和接口网格是由多用途协议和接口来构建的,该协议将能解决诸如鉴别、授权、资源发现和资源访问等一些基本问题。这里强调这些协议和接口的标准化和开放性是很重要的。
(3)提供非常的服务质量网格允许按协作的方式来使用其成分资源,以提供各种各样的服务内容,如反应时间、容许能力、可利用性和安全性,以及协作配置多重资源类型以满足复杂的用户要求等,这种组合系统的效用大大高于该系统的部分总和。
由于目前网格和网格计算本身还在发展之中,所以我们也不去区分这些概念的严格界限,清华大学的研究组统一把它们叫做相关研究领域,我们基本同意这种处理意见,在我们的研究中更以Foster的对于网格计算的理解为基准。
三. 网格计算及其标准
再次重申:迄今为止,网格计算还没有正式的标准。
但是就像Internet 需要依赖TCP/IP 协议一样,网格也需要依赖标准协议才能共享和互通。目前,包括全球网格论坛GGF(Global Grid Forum)、对象管理组织OMG(Object Management Group)、寰球网联盟W3C(World Wide Web Consortium)以及Globus项目组在内的诸多团体都试图争夺网格标准的制定权。而迄今为止,Globus项目组在网格协议制定上有很大发言权,因为由美国阿尔贡国家实验室与南加州大学信息科学学院合作开发的Globus Toolkit已成
为网格计算事实上的标准,包括Entropia、IBM、Microsoft、Compaq、Cray、SGI、Sun、Viridian、Fujitsu、Hitachi、NEC在内的12家计算机和软件厂商已宣布采用Globus Toolkit。作为一种开放架构和开放标准基础设施,Globus Toolkit提供了构建网格应用所需的基本服务,如网格安全、资源搜索、资源管理、数据访问等。目前所有重大的网格项目都是基于Globus Toolkit提供的协议与服务建设的,例如美国的物理网格GriPhyN、欧洲的数据网格DataGrid、荷兰的集计算机网格DAS-2、美国能源部的科学网格和DISCOM 网格、美国学术界的TeraGrid,等等。
2002 年2 月,在加拿大多伦多市召开的全球网格论坛GGF 会议上,Globus项目组和IBM共同倡议了一个全新的网格标准OGSA。OGSA 叫做开放网格服务体系(Open Grid Services Architecture),它把Globus标准与以商用为主的Web Services 的标准结合起来,网格服务统一以Services的方式对外界提供。OGSA的诞生,标志着网格已经从学术界的象牙塔延伸到了商业世界中,而且从一个封闭的世界走向了开放的环境中。到目前为止,OGSA 已经广为接受,几乎所有的业界同仁都认为它就是网格的未来。由于OGSA是在GGF 会议上提出来的,GGF也就顺理成章地成为OGSA标准化进程的领头羊。目前,GGF有4个研究组负责与OGSA相关的标准制定工作:开放网格服务体系结构工作组OGSA-WG、开放网格服务基础
设施工作组OGSI-WG、开放网格服务体系结构安全工作组OGSA-SEC-WG和数据库访问和集成服务工作组DAIS-WG。
接下来我们所说的,就是对于网格计算的架构设计、OGSA和Globus Toolkit的一个较详细的介绍,缺省条件下我们所指的网格就是Globus的标准。
1. 目前的分布式计算工具的缺点
    当前的分布式计算技术有几大不足[6],比如现在Internet技术强调的是计算机间的互联和信息交换,但是并没有提供完整的综合多个网站的资源进行计算的方法。诸如CORBAEJB这样的企业分布式计算技术只能在单一组织内实现资源共享。开放式分布式计算环境(OGDCE)支持通过网站的安全性资源的共享,但是它太繁琐并且不够灵活。而且与Globus的目标相比,现有的数据共享和互操作方案,比如P2PCOM/DCOMCORBADCEJ2EE等,在共享配置的灵活性、动态性和在共享资源种类上不能完全满足动态虚拟组织的需要。
    这就是引入网格技术的必要性了。网格(Globus)并不试图取代现有技术,而是希望在现有
技术之上建立更高层次的共享。从技术角度讲,共享是资源或主体间的互操作,比如用甲计算机的分析程序调用乙计算机的数据库并把图形显示在丙计算机上。Globus认为,要实现网络环境中的互操作就意味着:首先需要开发一套支持网格计算的通用协议(如网格计算安全协议、网格计算数据传输协议、网格计算信息获取协议等),用它来描述消息的格式和消息交换的规则;然后在这些协议之上,需要开发一系列支持网格计算的服务(如网格安全服务、网格信息服务、网格数据安全服务等),这与建立在TCP/IP协议上的Web服务原理相同;由于需要通过具体的软件实现这些服务,这就需要定义API,基于这些API再构建各种软件开发工具(SDK)(如Globus工具包和CoG开发工具包等)。
    Globus项目的主要工作就是建立支持网格计算的通用协议,开发支持网格计算的服务,实现支持网格计算环境的软件开发工具。
2.网格体系结构(Grid Architecture
    到目前为止,比较重要的网格体系结构有两个,一个是Foster等在2001年左右提出的沙漏结构(hourglass model)[6];然后就是在以IBM为代表的工业界的影响下,在考虑到Web技术的发展与影响后,Foster等结合Web Service提出的开放网格服务结构OGSA(Open Grid
Services Architecture[7]
2.1 沙漏结构
    Foster提出的沙漏结构有五层,主要特点是简单,主要侧重于定性的描述而不是具体协议的定义。
  2.1.1 基本思想与概念
  (1)共享
    这里的共享不只是交换文件,而是更强调对计算机、软件、数据以及其他资源的直接访问。而且这种共享还必须是高度受控制的,需要在资源控制者和使用者之间小心地定义什么是可以共享的,哪些人可以共享,在什么条件下可以共享。
   
                          1. 三种基本的共享关系
这里的共享关系又是十分灵活的,包括三种基本的形式,即客户端与服务器(C/S)的共享,端到端(Peer to Peer, P2P)的共享以及代理(Proxy)共享。
这里的共享是一种随时间变化的动态的共享,而不是静态的共享。网格具有动态性的特点,网格资源的共享也必然满足动态性的要求。在一些ASP/SSP的应用中,其共享是基于静态的配置建立起来的,因此缺乏灵活性,利用网格可以建立动态的计算与存储资源共享。而这种共享不能局限于某一机构或单位之内,它是一种更广泛的共享,可以跨越不同的单位与组织的管理范围。当然这种共享也是跨越不同的地理位置的。
    因此,在五层沙漏结构中的共享,是深层次、广泛、动态、具有多种形式的有条件受控制的共享。这是和我们以前见到的共享形式有很大区别的。
  (2)互操作
    另外一个重要的概念就是互操作,这里将共享定义为对各种资源的直接访问,也就是支持互操作。共享关系需要在任意的组织、团体之间在一开始就建立,可以动态增加新的成员,并且可以跨越不同的平台、语言和编程环境,在这样的情况下,如果不能够提供一种互操作机制,使得可以跨越不同的组织边界、使用策略以及资源类型,就不能够达到共享的目的。没有互操作机制的保证,动态虚拟组织的形成是不可能的,而且可以形成的虚拟组织的类型是非常有限的。