gt 、 gt3 及 gt3 下的服务开发 李春江

46
GT GT3 及 GT3 及及及及及及 李李李

Upload: aletta

Post on 27-Jan-2016

90 views

Category:

Documents


6 download

DESCRIPTION

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

TRANSCRIPT

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

GT 、 GT3 及 GT3下的服务开发

李春江

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

Outline

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

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

Globus 项目简介经历了网格计算发展的 3个阶段

发起, 90 年代中期 (元计算) I-WAY 项目,目标是把美国境内的多个高性

能计算中心通过高性能网络联接起来。 I-WAY 项目最终用 10 个带宽和协议并不完

全相同的网络将位于美国 17 个不同地点的60 多个组织的超级计算设备、数据资源联接起来,构成了一个超级计算环境。

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

Globus 项目简介经历了网格计算发展的 3个阶段

计算网格阶段 ( 96-2002 ) 迅速发展,赢得广泛关注。 其开发的工具包 GT 成为事实上的构建网格

的标准。 服务网格阶段 (2002- )

与 Leading IT Company 、 W3C 组织等企业和研究机构密切合作,带动整个网格计算的发展。

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

Globus 项目简介参与的科研单位

Globus 是美国 Argonne 国家实验室的项目 出始阶段全美有 10 多所大学和研究机构参与 目前的主要参与者 南加州大学的信息科学学院、芝加哥大学、爱

丁堡大学、瑞典的并行计算机中心等 与 IT 公司的合作 特别是与 IBM 的合作。包括 IBM 红皮

书, GT3 的代码开发, OGSI 规范的制定

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

Globus 项目简介当前的情况

处于领导地位,对网格发展举足轻重 组成了 Globus 联盟( Globus Alliance) 开发的网格中间件模块( GT 系列软件及其

中 的组件)已经成为 Leading IT 公司推出的

Grid 产品的基础。

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

GT 的发展历程和版本 最早在 I-WAY 项目中开发的软件 I-POP server

CRB ( Computational Resource Broker ) Nexus ,两层的通信库,支持自动配置机制,

如 TCP/IP 和 AAL5 ( 面向 ATM) 。 MPICH和 CAVEcomm 都面向 Nexus 进行了扩展

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

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 版,继续支持计算网格

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

GT2.x 的体系结构主要功能

安全服务。 Globus 结合了目前成熟的分布式安全技术,并针对计算网格环境进行了一定的扩展实现了,实现了网格安全协议,为其它网格服务提供了安全保证。

信息服务。提供了网格环境下信息收集、存储、分发、查询的机制。

资源管理。屏蔽了网格底层计算资源的异构性,实现了对计算资源的远程访问。

数据管理。提供了副本目录服务和可靠数据传输服务。

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

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

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

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

网格应用

网格高层服务和工具DRM

Cactus

MPI -G2

gl obusrun PUNCH Nimrod/G Condor-G

Gri d

Gl obus核心服务

MDSGri dFTP

GASS

Repl i caCatal og

Gl obusSecuri ty

I nf rastructure I /O

GRAM

本地服务UDPTCP

Sol ari sAI XLi nuxMPINQE

LSF

PBS

Condor

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

GT3 的体系结构

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

GT3 的分类及下载各组成软件包简介

GT3 Core:即指 Grid Service 一段,提供了基本的网格服务和接口。

GT3 Security Services:安全对于一个网格应用是非常重要的。 GT3 的安全服务可以限制对 Grid Service 的访问,只有那些经过安全认证的节点才允许访问。 GT3 提过了多种的安全技术,如 SSL 和 X.509 数字证书认证。

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

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 守护进程。

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

GT3 的分类及下载各组成软件包简介

GT3 Data Services: 包含了 Replica Management 。当我们处理

大数据集的时候,我们通常不会把整个数据集都下载下来,而只是喜欢使用其中的一小部分。 Replica Management 将会对我们使用过的数据子集进行跟踪管理。

Other Grid Services: 其他可以运行在顶部的非 GT3 服务。

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

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 的二进制包。

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

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 的安装包中了。

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

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

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

GT3 的安装启动和察看

启动服务容器 globus-start-container察看服务 ant gui

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

GT3 Core 介绍 OGSI Implementation Interfaces

WSDL, XML SchemaDefault Mix-in Implementations

GridService, Factory, HandleResolver, Registration, NotificationSource, NotificationSink, NotificationSubscription

GSH and GSR API GSDL Extensions to WSDL (Service Data

descriptions and values)

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

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

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

GT3 Core 介绍 Factory PortType Instance Deployment and Registration

Create deployment descriptor information and register in internal registry

Instance ActivationLoad configuration and meta data into instances and call postCreate()

Registry InspectionWS-IL document

Default Generic Factory ImplementationCreates instances of configured class with default constructor

Factory Service DataCreatesPortTypes, CreationInputTypes

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

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 containerRegistration Registration Service Data

RegistrationExtensibilityTypes

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

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

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

GT3 Core 介绍 HandleHelper

GSH GSRGSH parsing

Extended JAX-RPC ServiceLocator GSH GSR GSR API

Get ServiceData descriptionsGet ServiceData valuesGet PortTypesGet EndpointsGet HandlesGet WSDL/DOM representationURL GSROGSI ServiceLocator GSR

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

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>

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

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

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

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

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

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

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

GT3 Core 介绍 Service Data API

ServiceDataSetServiceData myServiceData = serviceDataSet.create(“MyServiceDataName”);…serviceDataSet.add(myServiceData);

ServiceData wrapperserviceData.setValue(myValue);serviceData.notifyChange();

ServiceDataTypeserviceDataType.getName();serviceDataType.getGoodUntil();

AnyHelperMyValueType myValue = (MyValueType)

AnyHelper.getSingleAny(serviceDataType);

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

GT3 Core 介绍QueryEnginequeryEngine.registerEvaluator(myEvaluator,

MyQueryExpression.class);

NotificationEnginenotificationEngine.registerEvaluator(myEvaluator,

MyNotificationExpression.class);

ExpressionEvaluatorpublic interface ExpressionEvaluator { public Object evaluate(Object expression, ServiceDataSet

serviceData) throws InvalidExpressionFault;

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

GT3 Core 介绍Configuration API ServiceProperties

Get/Set Property (loaded from deployment descriptor, set by framework or application)

Get/Set Persistent Property (for recoverable services)

ContainerConfigGet/Set Option – Global Configuaration

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

GT3 Core 介绍ServiceDeployment API

API typically used by factories Deploy/Undeploy transient services Save/Remove persistent services to/from

deployment descriptor

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

GT3 下网格服务开发实例服务开发和部署的基本步骤

提供一个服务接口 生成 Stub文件 实现服务创建部署文件 部署服务

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

GT3 下网格服务开发实例 提供一个服务接口 1. 用 java 语言编写一个接口,然后用工具生成 WSDL poteType 接口描述文件 ;

2.编写WSDL portType 接口文件 ;

这里用第一种方法实现一个例子

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

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); }

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

GT3 下网格服务开发实例 接口文件转换为 wsdl

编译生成 .class 文件 用 java org.apache.axis.wsdl.Java2WSDL 命令生成 WSDL文件

修饰WSDL ,即将 WSDL转换为 GSDL

用命令 Java org.globus.ogsa.tools.wsdl.DecorateWSDL

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

GT3 下网格服务开发实例生成 Stub文件 用命令生成 Stub 文件 java

org.globus.ogsa.tools.wsdl.GSDL2Java MathService.wsdl

将会生成若干个 java文件

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

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; } …… }

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

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>

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

GT3 下网格服务开发实例编译源文件,包括用命令生成的 java文件和

实现服务的 java文件 对 class文件打包 :用 jar创建 GAR 包 (globus archive 包 ) 将 Math.wsdd改名为 server-deploy.wsdd Gar 包中包含如下文件Math.jar , Math-stub.jar , server-

deploy.wsddMathService.wsdl

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

GT3 下网格服务开发实例部署服务 ant deploy -Dgar.name

=D:\GT3\example\gar\Math.gar 启动服务 globus-start-container –p 端口号

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

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]);

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

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(); } } }

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

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

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

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