网格技术是随着Web技术的发展而出现的一种新兴技术,它较好的适应了 Internet的特点,能充分实现资源的共享和任务之间的协作完成。目前,网格环 境中有许多计算资源被闲置,如何充分利用这些资源,一方面需要构建网格的计 算基础设施,同时还需要有好的网格应用开发
支撑平台。尽管GT3(Globus Toolkit 3.x,Globus工具箱3)已经为网格应用开发提供了功能支持,所有的网 格服务遵循OGSA(Open Grid Service Architecture,开放网格服务)/OGSI(Open Grid Service Infrastructure,开放网格服务基础),但是在开发速度和可视化 方面还存在着不足。
由于模型驱动方法(MDA)有着诸多优点,它在
电子商务、移动计算和分布式 计算等方面都有较好的应用前景,对模型驱动开发方法的研究正成为学术界和工 业界的热点之一。模型驱动开发方法的关键技术包括平台独立模型PIM (Platform-independent model)的建立、平台相关模型 PSM(Platform-sepecificmodel)的建立、模型的可视化操作和代码的自动生成。 而可视化显示和代码自动生成是影响网格技术广泛使用的重要因素之一,因此研 究网格计算平台下的模型驱动开发方法具有重要意义。
网格计算平台的模型驱动开发过程主要包括三个方面:(1)网格计算平台体 系结构的设计(2)基于MVC(Model-View-Control,模型-视图-控制)体系的MDA 设计流程(3)基于网格计算平台的应用开发流程。目前对前两个方面的研究已 经实现,可以通过设计的网格计算平台从一个网格服务从
接口定义到客户端的请 求自动完成;也可以通过自动生成网格服务的可视化显示,在显示模型上通过点 击操作自动生成网格服务流程中需要的代码,同时对生成的代码进行
修改,完成 模型间的相互协作,达到整个网格服务流程的一致性。当前国内外对模型驱动方 法的研究主要是基于J2EE的Bean模型来进行
软件开发的,关于网格计算平台进 行模型驱动还是尝试阶段,在设计过程中对于PIM和PSM分别是通过IBM公司的 Eclipse平台中增加平台建模
框架EMF(Eclipse Modeling Framework)和 GEF(Graphical Editing Framework,图形编辑框架)
插件来实现的。
技术问题:本发明的目的是提供一种可视化用于网格计算的模型驱动方法, 来解决网格计算服务基于GT3的开发速度慢和操作烦琐的问题,与过去使用的开 台软件开发方法不同,本方法是一种通过建立模型来驱动生成代码的方法,通过 使用本发明提出的方法可以达到快速发布一个网格服务的目的。
技术方案:本发明的方法是一种模型驱动的软件开发方法,通过使用GT3 开发网格服务和结合IBM公司研发的开源项目Eclipse的使用而提出的,其目标 是通过开源项目中的平台建模框架EMF(Eclipse建模框架)/GEF(图形编辑框 架)插件来完成网格服务的可视化编程和代码的模型驱动生成。
以下为本发明中对应的中英文术语: 英文术语 中文术语 MDA 模型驱动框架 GBuilder 网格计算平台 EMF 平台建模框架 UML 统一
建模语言 XML 可扩展建模语言 XMI 扩展建模语言模型交互 Java Annotation 瓜哇语言注释 Draw2d 二维图形插件 PolylineConnection 对象联接类 org.eclipse.draw2d.widgets 小部件图形绘图类 org.eclipse.draw2d.widgets.event 小部件图形事件类 Tomcat 网格容器 GEF 图形编辑框架 EMF Ecore 平台建模框架核心 UDDI 通用描述发现调用
一、体系结构
图1给出了网格计算平台(Gbuilder)的设计体系结构,它的功能部件包括 命令
控制器、解释器、模型
驱动器、创建工厂、插件管理器、适配工厂/适配器、 图形用户接口、策略集、模型库和配置集。
下面我们给出几个主要部分的具体说明:
模型驱动器:模型驱动器的概念借鉴了模型驱动的开发(MDA)的概念,通过 模型至少是预先定义的一些模型允许用户完成基于模型的网格应用开发,模型驱 动器用来处理这些模型,一个简单的模型驱动器的实现是基于状态机和组合模式 两种设计模式,我们采用组合模式,将EMF插件提供的模型和GEF插件提供的可 视化图形编辑结合起来。根据网格的应用类型我们将网格计算分为:数据密集、 任务密集、普遍共享等几种形式,并将模型安装这些形式进行分类从而方便最终 用户的使用。
适配工厂/适配器:适配工厂/适配器是对客户应用的封装,当然如果通过自 动生成,组件可以跨过适配工厂直接调用API(Application Program Interface, 应用程序接口),当然,增加效率的同时牺牲了可扩展性,因为并不知道被调用 的Toolkit(工具箱)会提供怎样的API,适配工厂/适配器通过定义满足通用框 架的API来适配具体的Toolkit从而可以使得Toolkit对用户透明,对未支持的 API,直接返回异常,初步的API定义,我们参照OGSA(Open Grid Services Architecture,开放网格服务框架)和Globus Toolkit来进行。
图形用户接口:良好的用户接口是开发符合用户需求的软件的一个很重要 的方面,通过增加图形用户接口的数量和
质量可以大大提供最终用户的体验。我 们的图形用户接口将基于Eclipse的JFace/VE等来开发,其基本面是基于SWT 的。
二、网格计算平台GBuilder的实现与应用方案
1、GT3实现网格服务流程
通过使用GT3来部署网格服务,得到网格服务的基本执行流程,如图2所 示,包括网格服务客户端的
请求发起和网格
服务器端的服务发布。
主要工作流程:
1)网格服务器端流程
步骤1:设置与GT3相关的环境变量,并使开发的网格服务的客户和服务 器端在同一目录下;
步骤2:安装Apache Axis,使%Java_home%/jre/lib下包括%Apache Axis% /lib下所有的*.jar文件;
步骤3:定义网格服务接口和服务实现的Java文件,对应后面的端口类型 PortType;
步骤4:直接书写WSDL文件或通过step3定义的Java接口和实现文件来 生成WSDL,生成*(如果是数学服务就命名为Math)Service.wsdl文件;
步骤5:利用JDK通过编译由step4生成的Java文件,得到服务器端的Stubs 文件;
步骤6:将Stubs文件进行打包生成对应服务的Jar文件,进一步将Jar文 件打包成Gar文件;
步骤7:部署由step1~step5生成的网格服务文件,向客户端提供唯一的 GSH(=http:∥IP_a:Port/GSR(Grid Service Resource,网格服务资源),Grid Service Handle,网格服务句柄)。
2)网格客户端流程
步骤1:编写请求网格服务的客户端程序,同时设置GT3及相关的环境变 量;
步骤2:编译客户端程序,生成客户端请求执行文件;
步骤3:执行该请求文件,向网格服务器端提供一个对应的GSH (http:∥IP_c:Port/Package);
步骤4:如果服务器端有相应的网格服务提供,则完成用户的任务,在客 户端显示执行结果,反之,则提供一个报错消息;
步骤5:网格服务生命周期结束。
2、MDA方法实现网格服务流程
网格平台的开发采用IBM公司提供的开放源码开发平台Eclipse3.1(中文 版),该平台下的EMF插件和GEF插件为实现和体现MDA思想提供了诸多的 方便。在网格计算平台(Gbuilder)中实现由模型到自动生成代码的过程①生成 PIM模型—>②映射成PSM模型—>③自动生成代码,具体设计思想和实现中用 到的技术如图3所示。网格计算平台的模型驱动设计过程采用典型的三层结构: 应用分析层、应用建模层和应用表示层。应用分析层通过对GT3工具包提供的 网格服务流程思想,利用EMF插件方便快捷的建立网格计算平台的平台无关模 型PIM;应用建模层主要利用现有的PIM与PSM之间的转换技术,结合GEF 插件来设计出与具体应用平台相关的PSM模型;应用表示层将生成的PSM模 型通过Xdoclet和Velocity代码生成引擎,在Eclipse开发平台中利用与系统无关 的轻量级的图形显示功能SWT和Swing来进行流程的可视化设计。
主要工作流程:
步骤1:将图2中左下
角的模型模型基本元素,通过EMF插件进行PIM建 模,对源文件采用UML类图来定义模型、执行模型采用UML事件来定义。 实现时将这些基本元模型采用SWT设计成相应的可操作图标,放图标显示 区里,支持用户的拖拉操作;
1)EMF模型定义层:通过XML、UML和Java来定义模型;
2)EMF模型表示层:将定义的模型转换为XMI、EMF Ecore和Java Annotation;
3)EMF模型建立层:生成EMF核心模型;
4)EMF模型生成成:通过EMF提供的EMF.Edit和EMF.Generate来编 辑和生成PIM模型;
步骤2:将建立好的PIM模型通过GEF插件来生成可视化的界面,得到图 2所示的网格服务工作流,在编辑区支持对PIM模型的连接、拖拉、建立 和修改等操作,实现时采用GEF中Draw2D提供的PolylineConnection类 来建立连接,其它操作都通过包org.eclipse.draw2d.widgets和 org.eclipse.draw2d.widgets.event.*实现的;
步骤3:实现图标区PIM和编辑区PSM之间的同步操作;
步骤4:通过拖拉等可视化操作生成网格服务端和客户端的源文件,并自 动调用Tomcat容器来部署网格服务;
步骤5:如果部署成功,则转到步骤6,反之则转到步骤1进行修改;
步骤6:通过客户端来调用服务器端提供的网格服务,如果成功,则一个 网格服务生命周期结束,否则转到步骤4。
3、基于网格平台的应用开发拓扑结构
如图4所示,在实现基于Gbuilder平台开发的网格应用拓扑结构分为服务 请求层、服务注册/查找层和服务提供层三层体系结构,并且各层之间是通过 SOAP(Simple Object Access Protocol,简单对象
访问协议)相互通信的。
第一层:服务请求层是网格环境下的客户提出的任务请求,他首先向服务 中心提交的参数只是任务的描述集合。这里对每个任务可形式化表示为 TK_c=
,其中IP_A为局域网环境下客户端的IP地址; GSH是实现该客户请求任务的网格服务提供地址;Parameter是一个集合,如对 数学运算任务,可能是包括操作符和操作数,对图形填充包括边界点和填充区域;
第二层:服务注册查找层是客户和服务之间交互的中心环节,它有二方面 的功能。
1)服务提供层向其提交相应的网格服务的GSH值和任务描述接口;
2)服务请求层向其发出相应的网格服务GSH和任务描述。
第三层:服务提供层由不同的虚拟组织构成,负责向服务中心自动提交其 具有的网格服务对应的任务描述TK_s=,如果客户请求层 的TK_c中的GSH和Parameter两个参数与TK_s中的完全匹配就能满足要求并 完成相应的任务,否则就说明还没有哪个虚拟组织VO可以提供客户的请求。
4、基于应用拓扑结构下的图形填充应用实现时序图
在网格应用实现拓扑结构的基础上,我们在Gbuilder平台上进行了图形填 充的实验,通过该实例来体现该平台在设计开发过程的优越性和网格计算的分布 性及协作性。实验通过一个局域网内的N台(N=8)配置相同的机器组成一个虚拟 组织、一个客户端程序和一个服务注册中心组成的实现环境。每个服务提供者分 成两个服务子项,一个用于填充整个图形,另一个用于填充部分图形,并以不同 的TK_s注册在注册中心。每个客户端提交服务请求后,由注册中心负责查找相 应的与之TK_c相匹配的任务来响应,如果没有则返回相应的消息给客户并结束 这次客户请求。所以,得到如图6所示的网格计算平台下的图形填充执行流程。
步骤21:客户端向UDDI中心发送图形填充请求,同时各服务器端向 UDDI中心发布服务;
步骤22:服务中心对客户请求的服务进行查找,最简单的查找方法就是遍 历法,也可以考虑引入智能查找算法;
步骤23:对查找结果进行匹配判断,如果没有相应的请求服务,则跳转步 骤27;
步骤24:如果匹配成功,则需进行任务分解,如果是部分填充,则将任务 分配到虚拟组织下已注册该服务的服务器端,如果是全部填充,刚无需进行任务 分解,直接找一台最优性能的机器完成该任务;
步骤25:服务器端进行图形的填充任务,客户端同步显示填充进度,让用 户能实时了解任务的执行情况;
步骤26:当客户端图形填充完毕,说明这次的网格服务生命周期结束;
步骤27:向客户端提交“目前没有完成客户请求任务的服务端”的提示信 息,并结束。
有益效果:
本发明方法提出了网格计算平台软件设计的新方法,主要用于解决网格服 务流程的可视化实现问题,通过使用本发明提出的方法可以避免通过GT3开发 网格服务的复杂性、可以提高设计方法的灵活性,可以有效的达到快捷部署一个 网格服务的目的。模型驱动方法及其平台具有如下优点:
1)代码重用性高
利用模型驱动开过,最主要的工作是建立PIM模型和PSM模型,其中PIM 是跨平台的,与应用无关的,PSM是与平台相关的。所以对于建立好的PIM模 型可以在任何平台上重复利用。
2)开发周期短
模型驱动开发方法不同与传的过程化设计方法和模块化设计方法,它的主 要工作在于给系统建模,建模可以利用现有的工具,这里采用的是EMF插件和 GEF插件。一但模型建立好后,代码可以利用现有的代码生成引擎(如XDoclet 和Velocity等)自动生成。
3)网格服务流程的可视化实现;
为网格开发中的一些源文件(服务器端的接口文件、实现文件和WSDD文 件等)提供建立向导和编辑环境。
4)网格服务的快速部署和发布;
当网格服务需要的源文件生成以后,将网格服务的部署容器(设计过程中 采用Tomcat)可以通过按钮操作来启动、暂停、重启和停止。同时也可以通过 按钮来自动将服务器端的源文件生成相应的Stubs文件。
5)支持网格应用的快速开发;
开发网格平台的目标就是为了能更好的方便用户开发网格应用,为了能更 好的体现该平台在应用开发上的优点,提出了一种通用的网格服务应用开发的拓 扑结构,该结构采用典型的网格开发的三层C/S(Client/Server,客户/服务器)结构。
附图说明
图1是网格计算平台软件Gbuilder的体系结构示意图。图中包括模型驱动 器、适配工厂/适配器和图形用户接口等功能模块。
图2是通用网格服务客户端和服务器端的实现流程图。图中左下角一些基本 元素为EMF建模对象。
图3是基于MVC体系的网格平台MDA方法实现流程图。表示本发明方法 的流程示意图。
图4是网格平台的应用实现拓扑结构图。表示基于本发明的一个通用应用框 架。
图5是网格平台下的图形填充实现时序图。表示基于本发明的一个具体应用 实现流程。
图6为网格计算平台GBuilder的MDA实现流程图。
图7为基于网格计算平台GBuilder的网格应用开发流程图。