基于CCA模型和OGSI架构的XCAT开发

2011-05-12 02:10李剑平
无线电通信技术 2011年4期
关键词:实例应用程序端口

李剑平

(中国电子科技集团公司第十五研究所,北京100083)

0 引言

计算网格是一组硬件、软件资源,可以对高端计算提供无缝、独立以及普遍访问。为了将万亿次计算与存储系统通过网络有效地互连,网格提供了研究的新途径。网格的成功关键依赖于工具和应用程序的开发,使得终端用户可以方便地使用它们。

工业界广泛采用的构件技术,已经解决了诸如不同程序设计语言、第三方软件进行应用开发以及不断增加的大量的软件遗产所导致的互操作问题。在商业领域也存专为商业环境而设计件技术标准,但都没有考虑大规模并行计算的相关问题。

1 开放网格服务架构和通用构件架构

目前,只有一种网格服务标准,即开放网格服务架构(OGSA),以及它的配套实现标准-开放网格服务基础设施。本质上,OGSA标准定义了什么是网格服务,网格服务可以做些什么,以及网格服务所基于的技术。但是,OGSA并没有深入阐述规范中的技术细节,它的主要目的是澄清什么是网格系统,什么不是网格系统。OGSI是OGSA所描述的概念的正式技术规范。OGSI中包含如何管理任务、分配任务以及如何描述服务提供者和网格服务的规范。

OGSI是一项基于新兴的服务标准的网格软件基础结构标准化工作,用于为OGSA软件组件提供最大的互操作性。网格服务实例基于OGSI规范,是一个网络服务,符合用网络服务描述语言表达为服务接口、扩展和行为的一组约定。

设计CCA的初衷是为了生成大规模并行超级计算机的应用程序和构件,但是其语义特性并不适应在网格环境中的应用。CCA的核心思想是通过构件技术建立应用程序。2个CCA构件通过它们的端口连接组合,提供端口可以显示构件所能提供的功能性。在语义上,非常类似于服务的远程系统调用端口。使用端口则显示了构件所需要的功能。使用和提供端口绑定在一起。当使用端口连接到提供端口后,任何使用端口所需的功能可以通过调用所连接的提供端口获得。

比较CCA和构件体系模型(CCM),和CCA一样,CCM也有端口的概念。但CCA所设计的连接是动态运行时行为,端口可以在运行时被动态添加、删除以及连接。CCM不允许添加或删除端口。CCM连接被看作应用程序汇编语言的一部分,终端用户无法动态对其操作。而CCA支持手动添加端口,使得用户可以直接对构件连接进行操作从而手动解决特殊问题,为用户提供更灵活的处理方案。

CCA的每一个端口由其名字所确定,并且具有一个操作接口。操作接口由科学接口定义语言或简单的JAVA接口或扩展标记语言(XML)规范定义,图1为2个构件通过CCA端口实现绑定连接。

图1 构件通过CCA实现绑定连接

如同OGSA,CCA提供了一系列标准的服务和接口。其中最重要的是构件的创建服务,可以使得一个构件实例创建另一个构件实例以及连接服务,使程序员可以将一个构件的需求端口绑定到另一个构件的提供端口上。

2 基于服务的CCA实现

分布式网格应用构件结合了构件技术和服务的优势,以C++和JAVA语言实现,提供了2种语言所写构件之间的无缝的互操作性。

XCAT实现的每一个提供端口是一个具有端口类型的服务。通过XML规范定义端口。这些规范也常用于生成封装代码,该代码中使用XCAT进行通讯的低层细节对用户透明,并且该代码也处理C++和JAVA构件之间互操作性转化。

XCAT通过通讯系统进行消息传递,提供了不同地址空间相互之间通讯的有效模型,该通讯系统是使用简单对象访问协议(SOAP)作为通讯协议的模型实现。

XCAT提供了封装了构件实例的创建服务,因此底层的实现细节对构件开发者是透明的。首先可以根据一系列环境值生成构件实例。例如执行区域、主程序以及创建机制。对于同样的地址空间,不同主程序所生成构件实例可能不同。当构件实例创建后,创建服务将会返回一个构件ID作为新构件的编号。其次可以通过构件ID删除相应的构件实例。

XCAT也提供了不同构件实例建立通讯的连接服务。如:端口之间通讯的连接和断开与端口的显性或隐性特性,供助此服务有助于动态构成应用程序,并向终端用户呈现一个简单的接口,隐藏不必要的细节。

XCAT可以作为一个分布式计算框架使用,主要基于以下重要特性:

①安全性:任何提供端口的远程调用发生前,这些调用都会被XCAT-JAVA框架截获。因此在提供端口和XCAT框架之间提供了安全服务。安全服务检查远程调用,当安全需求达到时,允许调用通过;

②构件ID:为构件提供了可移植的句柄。XCAT使用通讯系统提供的远程应用机制来表示。这个句柄被公布到注册服务器,之后可以被任意需要的组织发现并且使用它来调用构件上的方法;

③异常:XCAT为构件之间的通讯提供了异常模型。构件通讯时发生的异常被获取及返回到启动通讯的构件;

④事件和通知:XCAT-JAVA使用事件通知系统,这是为网格应用程序从发布者到用户之间可靠地传递XML消息所设计的消息中间件,即使用户的位置发生改变或者消息发布者重启都不会受到影响。

3 构件的组合方法与应用举例

构件体系结构描述了不同构件组成应用程序的方法以及它们之间的互连。构件在特定的主程序上创建,并且以分布式系统的方式互连。同样,也可以创建元构件。

为了实现这种组合,用户可以直接使用XCAT服务的应用程序编程接口写简单的JAVA程序,从而使用远程构件。通过使用创建服务,JAVA程序创建构件并且获得引用来运行构件例程。之后程序使用连接服务来连接这些构件的提供端口和使用端口,命名服务用于保存和检索正在运行构件的ID。

以上这些方法仅仅适合于存在适合的需要运行和被监控的构件集合。如果需要更为灵活的动态机制创建和管理构件,而不需要重新编译程序,可以使用Jython脚本。Jython是使用Python语言的纯JAVA实现。由于XCAT可以通过JAVA而得以实现,因此可以为XCAT库提供了Jython接口。

如图2所示,使用XCAT可实现构件空间上的结合,从而可被任意客户端访问。每一个XCAT构件有一个提供端口实现了OGSI网格服务端口类型,其余的提供端口是一级的服务端口即CCA端口。使用CCA连接方法连接构件,并且XCAT的使用端口连接到传统的服务。

图2 使用XCAT实现构件空间上的结合

服务技术广泛应用的最主要原因是因为它可以将已经存在的过程和服务组合称为更加有用的新应用。工作流是将过程的组织定义为良定义的操作流,可以被认为为了实现特定目标,服务在时间上的结合。这是超越了当前OGSI规范的一个领域。

构件在时间上的结合定义了任意时间点构件的逻辑连接,工作流系统定义了控制流和数据流表达的方式。目前一些工程都用到了工作流机制,然而大多数服务工作流系统并没有有效地实现空间上的组合,因为Web服务描述语言没有完全定义超越操作等等,而服务本身就是调用者。而XCAT结合了标准构件体系结构在空间组合上的优势和服务在时间组合上的优势,这个系统的实现存在一定的难度。

使用XCAT系统的工程包括天气研究和预报、化学工程、碰撞风险评估以及线性系统分析。图3为基于CCA模型和OGSI架构在碰撞风险评估中XCAT的开发应用,图中主要描述了构件状态在空间上的组成方法。

图3 在碰撞风险评估中XCAT的开发应用

如图3所示,整个应用程序被一个协调程序所控制。该协调程序首先运行一个主构件和一组工作构件。为了接收来自于主构件的全仿真事件,协调程序访问事件通道。当模拟结束后,主构件将模拟结果异步发送到事件通道。事件通道在永久存储器中存储这些数据,并且将它们传输给协调程序。当接收到来自事件通道的事件后,协调程序生成一个本地可视化程序,将接收到的数据传输给可视化程序。可视化程序将模拟结果可视化。至此,XCAT在时间和空间上都完成了构件的结合,从而构造复杂的分布式应用程序。

4 结束语

构件方法推动了程序模块结构的封装,使得构件可以再利用,提高了应用程序的产出率。通过XCAT将CCA和OGSI二者的优势结合,从而可以着重于不同的方面。将构件基于时间和空间进行分类,从而实现构件在时间和空间上的结合。在上述研究成果基础上设计的可扩展的消息传递和消息发布系统,为构件提供了发布和预定消息的简单途径。此系统比目前的OGSI通知方案功能更加丰富其组织方法,为科学计算和模拟构件程序设计奠定了基础。

[1]曾万聃,常桂然,戴勃,等.基于代理的OGSI网格调度系统研究[J].计算机工程,2006(23):24-26.

[2]刘会斌,都志辉.网格与Web服务的融合-WSRF和WS-Notification[J].计算机科学,2005(2):76-79.

[3]于洋,杨愚鲁,杨学刚.贺铭分布式网格系统的任务调度算法DE Scheduling[J].计算机工程,2008(14):75-77.

[4]王鹏,邵伟民,李伟.QoS感知的分布式网格工作流引擎的研究和设计[J].计算机工程与设计,2008(12):3040-3042.

[5]李红,刘鲁.分布式网格资源发现研究综述[J].计算机应用与软件,2010(2):16-18.

[6]吴林.基于OGSA的网格数据库研究现状和趋势[J].计算机工程与设计,2008(22):5843-5846.

[7]胡明生,陈学广.基于OGSI NET的网格计算研究[J].计算机技术与发展,2006(4):7-10.

猜你喜欢
实例应用程序端口
一种端口故障的解决方案
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
端口阻塞与优先级
系统网络端口安全防护
完形填空Ⅱ
完形填空Ⅰ
卫星三端口DC-DC变换器技术综述
三星电子将开设应用程序下载商店
微软软件商店开始接受应用程序