1 / 46

GT 、 GT3 及 GT3 下的服务开发 李春江

GT 、 GT3 及 GT3 下的服务开发 李春江. Outline. Globus 项目简介 GT 的发展历程和版本 GT2.x 的体系结构 GT3 的体系结构 GT3 的分类及下载 GT3 的安装 GT3 core 介绍 GT3 下网格服务开发实例 结束语. Globus 项目简介 经历了网格计算发展的 3 个阶段. 发起, 90 年代中期 ( 元计算 ) I-WAY 项目,目标是把美国境内的多个高性能计算中心通过高性能网络联接起来。

aletta
Download Presentation

GT 、 GT3 及 GT3 下的服务开发 李春江

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. GT、GT3及GT3下的服务开发李春江

  2. Outline • Globus项目简介 • GT的发展历程和版本 • GT2.x的体系结构 • GT3的体系结构 • GT3的分类及下载 • GT3的安装 • GT3 core介绍 • GT3下网格服务开发实例 • 结束语

  3. Globus项目简介经历了网格计算发展的3个阶段 • 发起,90年代中期 (元计算) I-WAY项目,目标是把美国境内的多个高性能计算中心通过高性能网络联接起来。 I-WAY项目最终用10个带宽和协议并不完全相同的网络将位于美国17个不同地点的60多个组织的超级计算设备、数据资源联接起来,构成了一个超级计算环境。

  4. Globus项目简介经历了网格计算发展的3个阶段 • 计算网格阶段 (96-2002) 迅速发展,赢得广泛关注。 其开发的工具包GT成为事实上的构建网格的标准。 • 服务网格阶段 (2002- ) 与Leading IT Company、W3C组织等企业和研究机构密切合作,带动整个网格计算的发展。

  5. Globus项目简介参与的科研单位 • Globus 是美国Argonne国家实验室的项目 出始阶段全美有10多所大学和研究机构参与 • 目前的主要参与者 南加州大学的信息科学学院、芝加哥大学、爱丁堡大学、瑞典的并行计算机中心等 • 与IT公司的合作 特别是与IBM的合作。包括IBM红皮书,GT3的代码开发,OGSI规范的制定

  6. Globus项目简介当前的情况 • 处于领导地位,对网格发展举足轻重 • 组成了Globus联盟(Globus Alliance) • 开发的网格中间件模块(GT系列软件及其中 的组件)已经成为Leading IT 公司推出的Grid产品的基础。

  7. GT的发展历程和版本 • 最早在I-WAY项目中开发的软件 I-POP server CRB(Computational Resource Broker) Nexus,两层的通信库,支持自动配置机制,如TCP/IP 和AAL5 (面向ATM)。MPICH和CAVEcomm都面向Nexus进行了扩展

  8. GT的发展历程和版本 • 1999年推出Globus Toolkit 的第一个版本 其后的主要版本有1.1.3和1.1.4 (储瑞) • 2002年初推出2.0版,年底推出2.2版(IBM红皮书) • 2003年推出GT3.0 的alpha, beta, 正式版,3.01,3.02,目前网站上可以下载到3.2版,从计算网格向服务网格迈进,预期面向WSRF将推出GT4. • 在推出GT3.0的同时,也推出GT2.4版,继续支持计算网格

  9. GT2.x的体系结构主要功能 • 安全服务。Globus结合了目前成熟的分布式安全技术,并针对计算网格环境进行了一定的扩展实现了,实现了网格安全协议,为其它网格服务提供了安全保证。 • 信息服务。提供了网格环境下信息收集、存储、分发、查询的机制。 • 资源管理。屏蔽了网格底层计算资源的异构性,实现了对计算资源的远程访问。 • 数据管理。提供了副本目录服务和可靠数据传输服务。

  10. GT2.x的体系结构主要组件间的关系

  11. GT2.x的体系结构核心功能模块

  12. GT3的体系结构

  13. GT3的分类及下载各组成软件包简介 • GT3 Core:即指Grid Service 一段,提供了基本的网格服务和接口。 • GT3 Security Services:安全对于一个网格应用是非常重要的。GT3 的安全服务可以限制对Grid Service 的访问,只有那些经过安全认证的节点才允许访问。GT3 提过了多种的安全技术,如SSL 和X.509数字证书认证。

  14. GT3的分类及下载各组成软件包简介 • GT3 Base Services:GT3 基础服务包含了3 个部分。 • Job Management Services 提供了一种远程提交和监视作业的方法,遵循了OGSI(Open Grid Services Infrastructure)定义的接口,使用了基于XML的WSDL(Web Services Description Language)。并且提供了一个客户端命令:managed-job-globusrun,通过激活Master Managed Job Factory Service(MMJFS)来提交作业。 • Index Services Index services 主要使用在发现服务的操作中,基本上它们提过了一个查询和产生Service Data 的一个方法。 • Reliable File Transfer(RFT)Services 又叫做mutltiRFT 是数据管理实现的一部分,其他的两部分是GridFTP 和RLS(Replica Relocation Service)。它提供了从客户端到网格服务的可靠文件传输(RFT)的接口。在客户端,有一个基于java 的程序叫RFTClient。在服务器端,数据管理就使用了GT2 中的GridFTP 守护进程。

  15. GT3的分类及下载各组成软件包简介 • GT3 Data Services: 包含了Replica Management。当我们处理大数据集的时候,我们通常不会把整个数据集都下载下来,而只是喜欢使用其中的一小部分。Replica Management 将会对我们使用过的数据子集进行跟踪管理。 • Other Grid Services: 其他可以运行在顶部的非GT3 服务。

  16. GT3的分类及下载分类包简介 • GT3 All Services(UNIX 环境) 包含了所有GT2.x 和GT3.x 的程序。提供了GT3 内核和所有的GT3 服务,只能安装在UNIX 环境下。包括Binary 版本和Source 版本。源码版本中不仅包含了GT3 的代码,也包含了GT2.4.3 的源码包。同时,也包含了RLS安装包,不过除非预先安装了IODBC(Independent Open Database Connectivity,实现了ODBC和X/Open 的标准,与平台无关且开放源码),否则安装时会跳过RLS 安装包。二进制版本中不仅包含了GT3 的代码,也包含了GT2.4.3 的二进制包。

  17. GT3的分类及下载分类包简介 • Base Services(UNIX 环境) 包含了GT3 和其他支持工具中新增的服务。不仅包含了GT3 核心服务,GT3 GRAM 的基本服务,索引服务,可靠文件传输服务,也提供了使用可靠文件传输的GridFTP 服务。只有binary 版本,且只能运行在UNIX 环境下。 • GT3 GARs(UNIX 和Windows 环境) 提供了GT3 中用Java 编写的高级服务,必须先安装GT3 Core,然后在gars 中运行“ant deploy”。GT3 GARs 可运行于UNIX 和Windows 环境下。与Base services 相比,GARs 不包含GT3 GRAM 和GridFTP 服务。 • Core(UNIX 和Windows 环境) 只提供GT3 的内核,是GT3 中OGSI 的实现部分。提供Binary 版本和Source 版本。 • Replica Location Service (UNIX 环境) 只包含了复制定位服务(Replica Location Service),这部分服务其实已经包括在Allservices 的安装包中了。

  18. GT3的安装安装流程和配置 • 环境安装流程 Java →→ Apache ant →→ Junit →→Jakarta oro →→ PostgreSQL(如果jdk目录下的\jre\lib目录下没有axis.jar文件,则安装Apache Axis ) • GT3的安装流程 GT3安装→→安全证书安装→→MMJFS的安装 • 配置 环境变量,gsi配置(CA,生成证书) • 配置MMJFS grid-mapfile,grim-port-type.xml

  19. GT3的安装启动和察看 • 启动服务容器 globus-start-container • 察看服务 ant gui

  20. GT3 Core介绍 • OGSI Implementation • Interfaces WSDL, XML Schema Default Mix-in Implementations • GridService, Factory, HandleResolver, Registration, NotificationSource, NotificationSink, NotificationSubscription • GSH and GSR API • GSDL Extensions to WSDL (Service Data descriptions and values)

  21. GT3 Core介绍 • GridService PortType • Soft-state timeout • Destruction • Service Data queries • GridService Service Data ServiceDataNames, FactoryHandle, QueryExpressionTypes, CurrentTime, TerminationTime • All Grid services inherit from this implementation

  22. GT3 Core介绍 • Factory PortType • Instance Deployment and Registration Create deployment descriptor information and register in internal registry • Instance Activation Load configuration and meta data into instances and call postCreate() • Registry Inspection WS-IL document • Default Generic Factory Implementation Creates instances of configured class with default constructor • Factory Service Data CreatesPortTypes, CreationInputTypes

  23. GT3 Core介绍 • HandleResolver and Registration PortTypes HandleResolver • Http and Https resolver service • Container Redirection (used in virtual hosting environment) • HandleResolver Service Data HandleResolverSchemes • One service per container Registration • Registration Service Data RegistrationExtensibilityTypes

  24. GT3 Core介绍 • Notification PortTypes • Default NotificationSource publish/subscribe implementation creating NotificationSubscription services • Support for Service Data name subscriptions • Asynchronous message delivery to sinks • Hooked into ServiceData API and Notification Framework • NotificationSink client wrapper API- NotificationSinkManager • NotificationSubscription service implementation – can be deactivated and persisted • Subscription Service Data SubscriptionExpression, SinkLocator

  25. GT3 Core介绍 • HandleHelper GSH  GSR GSH parsing • Extended JAX-RPC ServiceLocator GSH  GSR • GSR API Get ServiceData descriptions Get ServiceData values Get PortTypes Get Endpoints Get Handles Get WSDL/DOM representation URL  GSR OGSI ServiceLocator  GSR

  26. GT3 Core介绍 • GSDL Extensions to WSDL • ServiceData descriptions WSDL 1.1 compliant extension of wsdl:definitions <<gsdl:serviceDataDescription name="QueryExpressionTypes" element="gsdl:queryExpressionType" minOccurs="1" maxOccurs="unbounded" mutability="append"> <</gsdl:serviceDataDescription> • ServiceData values - loaded into service at activation time <gsdl:serviceData name="QueryExpressionTypes"> <gsdl:queryExpressionType xmlns:gsdl="http://www.gridforum.org/namespaces/2002/10/gridServices" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:QName"> gsdl:queryByServiceDataName </gsdl:queryExpressionType> </gsdl:serviceData>

  27. GT3 Core介绍 • Container Design • Modeled after EJB/Servlet • Container of Components – Grid Services • Implements System Infrastructure • Deploy Services into portable Container • Container can be hosted in many hosting environments but always provides the same interface to services • Container implements OGSI on behalf of applications • Powerful Infrastructure Reuse model, example Query/Notification Framework

  28. GT3 Core介绍 • Java OGSI Container • Standardized through GGF –initial draft submitted to GGF5 July 2002 • Sits on top of JAX-RPC • Supports J2SE and J2EE • Specifies contract/interfaces between services and container • Service Activation, Service Registration, Service Properties, Service Data API

  29. GT3 Core介绍 • Activation/Deactivation Design • Pluggable Activators/Deactivators • Default implementations provided • Lazy Load Activator • TTL/LRU Deactivator • Can be applied both to recoverable (persistent) as well as transient service instances

  30. GT3 Core介绍 • Service Data API • ServiceDataSet ServiceData myServiceData = serviceDataSet.create(“MyServiceDataName”); … serviceDataSet.add(myServiceData); • ServiceData wrapper serviceData.setValue(myValue); serviceData.notifyChange(); • ServiceDataType serviceDataType.getName(); serviceDataType.getGoodUntil(); • AnyHelper MyValueType myValue = (MyValueType) AnyHelper.getSingleAny(serviceDataType);

  31. GT3 Core介绍 • QueryEngine queryEngine.registerEvaluator(myEvaluator, MyQueryExpression.class); • NotificationEngine notificationEngine.registerEvaluator(myEvaluator, MyNotificationExpression.class); • ExpressionEvaluator public interface ExpressionEvaluator { public Object evaluate(Object expression, ServiceDataSet serviceData) throws InvalidExpressionFault;

  32. GT3 Core介绍 • Configuration API • ServiceProperties Get/Set Property (loaded from deployment descriptor, set by framework or application) Get/Set Persistent Property (for recoverable services) • ContainerConfig Get/Set Option – Global Configuaration

  33. GT3 Core介绍 • ServiceDeployment API API typically used by factories • Deploy/Undeploy transient services • Save/Remove persistent services to/from deployment descriptor

  34. GT3下网格服务开发实例服务开发和部署的基本步骤GT3下网格服务开发实例服务开发和部署的基本步骤 • 提供一个服务接口 • 生成Stub文件 • 实现服务 • 创建部署文件 • 部署服务

  35. GT3下网格服务开发实例 • 提供一个服务接口 1. 用java语言编写一个接口,然后用工具生成WSDL poteType 接口描述文件; 2.编写WSDL portType 接口文件; 这里用第一种方法实现一个例子

  36. GT3下网格服务开发实例 • 接口文件举例: package gt3tutorial.core.first.impl; public interface Math { public int add(int a, int b); public int subtract(int a, int b); public int multiply(int a, int b); public float divide(int a, int b); }

  37. GT3下网格服务开发实例 • 接口文件转换为wsdl 编译生成 .class 文件 用java org.apache.axis.wsdl.Java2WSDL 命令生成WSDL文件 • 修饰WSDL,即将WSDL转换为GSDL 用命令 Java org.globus.ogsa.tools.wsdl.DecorateWSDL

  38. GT3下网格服务开发实例 • 生成Stub文件 用命令生成Stub 文件 java org.globus.ogsa.tools.wsdl.GSDL2Java MathService.wsdl 将会生成若干个java文件

  39. GT3下网格服务开发实例 • 实现服务 package gt3tutorial.core.first.impl; import org.globus.ogsa.impl.ogsi.GridServiceImpl; import gt3tutorial.core.first.Math.MathPortType; import java.rmi.RemoteException; public class MathImpl extends GridServiceImpl implements MathPortType { public MathImpl() { super("Simple Math Service"); } public int add(int a, int b) throws RemoteException { return a + b; } …… }

  40. GT3下网格服务开发实例 • 创建部署文件 • 生成部署描述文件 <?xml version="1.0"?> <deployment name="defaultServerConfig" xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="tutorial/core/first/MathService" provider="java:RPC"> <parameter name="allowedMethods" value="*"/> <parameter name="className" value="gt3tutorial.core.first.impl.MathImpl"/> </service> </deployment>

  41. GT3下网格服务开发实例 • 编译源文件,包括用命令生成的java文件和实现服务的java文件 • 对class文件打包 :用jar • 创建GAR包(globus archive 包) • 将Math.wsdd改名为server-deploy.wsdd • Gar包中包含如下文件 Math.jar,Math-stub.jar,server-deploy.wsdd MathService.wsdl

  42. GT3下网格服务开发实例 • 部署服务 ant deploy -Dgar.name =D:\GT3\example\gar\Math.gar • 启动服务 globus-start-container –p 端口号

  43. GT3下网格服务开发实例如何使用服务 • 应用程序实例 package gt3tutorial.core.first.client; import gt3tutorial.core.first.Math.MathServiceLocator; import gt3tutorial.core.first.Math.MathPortType; import java.net.URL; public class MathClient { public static void main(String[] args) { try { // Get command-line arguments int a = Integer.parseInt(args[1]); int b = Integer.parseInt(args[2]); URL GSH = new java.net.URL(args[0]);

  44. GT3下网格服务开发实例如何使用服务 // Get a reference to the remote web service MathServiceLocator mathService = new MathServiceLocator(); MathPortType math = mathService.getMathService(GSH); // Call remote method 'add' int sum = math.add(a,b); // Print result System.out.println(a + " + " + b + " = " + sum); }catch(Exception e) { System.out.println("ERROR!"); e.printStackTrace(); } } }

  45. GT3下网格服务开发实例如何使用服务 • 编译 javac -sourcepath D:\GT3\example\gt3tutorial\core\first\Math D:\GT3\example\gt3tutorial\core\first\client\MathClient.java • 运行 java gt3tutorial.core.first.client.MathClient http://localhost:8080/ogsa/services/tutorial/core/first/MathService 3 2

  46. 结束语 • 网格计算技术蓬勃发展 • 万变不离其衷 • 欢迎参与和交流

More Related