基于CORBA的移动多Agent框架

时间:2022-09-11 03:46:55

基于CORBA的移动多Agent框架

摘 要:随着网络和移动智能体技术的不断发展,如何在网络资源中找到自己需要的服务成为一个热门话题。描述以一种移动的多智能体系统,并且在进行系统底层通信、智能体在网络环境移动、智能体与服务器之间通信应用CORBA。服务器接受任务,派遣服务请求智能体在网络环境中寻找能为自己提供服务的服务器,完成向服务器预订服务任务。给出系统接受任务后派遣请求智能体的工作流程及服务器接受智能体访问的流程。

关键词:客户/服务器;多智能体;多智能体系统;移动智能体;CORBA

中图分类号:TP393 文献标识码:B

文章编号:1004-373X(2008)06-111-03

CORBA-based Framework for Mobile Multi-Agent

HUANG Tao,WANG Chunmao,HU Xiaohui

(School of Electronic and Information Engineering,Lanzhou Jiaotong University,Lanzhou,730070,China)

Abstract:As the development of network and mobile agent technology,how to find the needed service from Internet resources has become a new problem.In this article we describe a mobile multi-agent system which is based on CORBA for system basic communication,agent moving and communication between agent and server.In the system,servers accept task,send service requests agent in Internet to find the servers which can offer the serviceand when agents find servers,agent will booking the server for the service.We give workflow about sendingrequest-agent and receiving visited agent.

Keywords:client/server;multi-agent;MAS;mobile agent;CORBA

通用对象请求体系结构The Common Object Request Broker Architecture(CORBA)是由对象管理组织(OMG)为解决分布式环境中,硬件和软件系统的互联而提出的一种解决方案;包括 ORB(对象请求)、对象服务、公共设施、域接口和应用程序组成,其核心部分是ORB。ORB提供了一种跨平台的通讯机制,对象可以透明的发出请求和接收响应\[1\]。

移动Agent是一个能在异构网络中自主地从一台主机迁移到另一台主机,并可以与其他Agent或资源进行交互的程序,他是Agent技术与分布式计算技术的混合体\[2\]。本文描述的是移动多Agent系统在接受用户服务寻求命令后,通过互联网寻找能够为自己提供服务的最有利服务器,在最后向最有利服务器订购服务。这里用Java开发系统,在底层使用CORBA进行Agent与系统的通信及Agent在网络中的移动。由于底层使用的CORBA对系统是透明的,所有的上层派遣Agent的信息(目的、信念、愿望等)都是作为调用CORBA对象的参数,CORBA对象可以进入ORB通道,并在通过ORB通道移动到目的地服务器端。服务器端接待到访的以Agent信息为参数的CORBA对象时,通过与CORBA的接口将其中的Agent信息抽取,重新构建出由自己服务器实现语言的对象。

1 CORBA的体系结构

CORBA规范充分利用现今软件技术发展的最新成果, 在基于网络的分布式应用环境下实现应用软件的集成,是面向对象的软件在分布、异构环境下实现可重用、可移植和互操作。其特点总结为以下几个方面\[3\]:

(1) 引入中间件(MiddleWare)作为事务,完成客户机(Client)向服务对象(Server)提出业务请求(引入中间件概念后的分布式计算模式);

(2) 实现客户与服务对象的完全分开,客户不再需要了解服务对象的实现过程以及具置;

(3) 提供软总线机制,使得在任何环境下、采用任何语言开发的软件只要符合接口规范的定义,均能够集成到分布式系统中;

(4) CORBA规范软件系统采用面向对象的软件实现方法开发应用系统,实现对对象内部细节的完整封装,保留对象方法的对外接口定义。

在以上特点中,最突出的是中间件的引入,在CORBA系统中成为对象请求ORB(Object Request Broker)和采用面向对象的开发模式。图1解释Client(客户)端与Object Implementation(对象服务实现)端的所有请求与服务的方法。

在图1中Client端可以通过Dynamic Invocation接口或OMG组织定义的IDL stub(接口定义语言)向Object Implementation(对象服务器端发出服务请求)。Client端也能够直接与ORB就一些功能进行交互。借助OMG组织的IDL框架或dynamic skeleton(动态框架)接受来自Client端的服务请求。Object Implementation 端立即可以调用Object Adapter(对象适配器)也可以通过ORB来对Client端的请求进行服务也可以放在以后其他时间进行服务。通过使用IDL定义的对象接口框架CORBA可以独立于具体的程序语言。目前OMG公布的CORBA能支持多种语言,同时也可以在不同的系统上运行。

2 基于CORBA的多Agent框架

2.1 移动多Agent系统实现

基于CORBA的移动Agent结构如图2所示,用户通过用户接口与系统做信息交流\[2\]。用户通过用户接口把本次工作任务及预期要达到的目的通知工作任务模块,接下来就由任务模块根据用户提交的任务及结果期望参考自己已有的知识和当前的网络环境情况来完成本次任务,并把结果反馈各用户。决策库里存储着先前人们对于这方面问题的处理经验及策略,以供功能模块参考该库里相关问题的处理策略来解决本次任务。在功能模块得到了决策库里以前与本次任务类型相似的处理经验后,就可以决定本次任务解决的具体办法:派遣单Agent到指定服务器;派遣多请求Agent到网络上去查找相关服务器,同时打开自己的服务器,接受相关没有访问的服务器派遣Agent过来访问;

单纯的打开自己服务器,接受请求服务的服务器发过来的请求Agent。

在得到本次任务的具体解决办法后,接下来系统就根据解决办法来派遣请求Agent、接待外来请求Agent的访问并为其提供相应的服务,并重点对派遣请求Agent和检测控制系统进行介绍。

2.2 派遣服务请求Agent

功能模块访问知识库,知识是对于各种问题在求解时对得到的结果进行评价的函数,评价函数是用户事先根据自己所需的服务制定的,对于比较关心的服务特征由服务器提供的相应服务的评价函数。服务结果评价函数是用来作为构造请求Agent的一部分,当用户请求Agent被派遣到目的地,在得到目的地服务器相关服务代价参数时对该服务进行评价。服务评价函数根据服务的类型不同进行分类存储在知识库里。在得到任务的评价函数后,功能模块就会查找地址库里的相关任务以前的处理地址。地址库里存储着以前成功提供过服务的地址,存储的服务器地址信息包括:服务器提供服务种类、提供满意服务的概率、服务器的网络速度、服务代价与市场上提供的同类服务的代价的比率、服务器联通的概率。若从决策库得到的本次任务的处理决策是派遣多个任务请求Agent时,功能模块除了会从地址模块得到部分地址,同时,功能模块还会随机地选择一些以前并未在地址库中出现的网络地址派遣Agent。在系统完成本次任务后,会用根据这些随机产生的网络地址在本次任务解决中的贡献状况,对地址库进行更新;同时,功能模块还会根据从地址库中选择的地址服务器,地址服务器在本次人物求解中的贡献状况,对该地址服务器的相关信息进行更新。

当系统模块完成对构造派遣Agent所需相关信息的收集工作,就会将得到的Agent信息(目标、信念、意愿)构造成基本的Agent信息包准备发送到客户端,并在系统管理模块注册该Agent。系统管理模块会记录本次任务求解过程中功能模块排出的所有Agent的工作进展情况。当派遣的请求Agent与目的地服务器进行成功协商后返回系统,功能模块会删除系统管理模块中关于该Agent的记录信息。

客户端得到来自功能模块的Agent信息包,将信息包里的Agent信息读出,构造成完整具有信息特征的Agent。构造出具有完整信息特征的Agent对象后,在发送Agent对象到目标服务器寻求服务前,客户端会利用本地址特有的信息(如网络IP)为本网站发送的Agent对象注明身份(如图2所示中的Agent-A)。在得到Agent信息包里信息后,客户端会使用IBM的Aglet\[3\]技术构造出运行的Agent对象。Aglet是IBM公司提供的一种用Java语言编写的移动Agent应用平台,用户可以用Aglet平台作为基础构建自己移动Agent平台。

由于Aglet平台是用Java语言开发的平台,Aglet平台使用的是JKQML(Java-based Knowledge Query Manipulation Language),必须由JKQML-CORBA接口实现。Agent对象进入JKQML-CORBA接口,用来把自身的信息代码编译成符合CORBA规范的形式,并作为参数在ORB通道中传输。当Agent对象以参数的形式构造CORBA对象后,这种带有Agent特性的CORBA对象就可以直接进入ORB,并通过ORB到达目的地。当CORBA对象进入网络,就可以通过网络来找到自己的目标地址,在ORB中移动的CORBA对象到达自己的目标服务器地址后,就可以通服务器进行自己任务的协商,以得到服务器对于自己所期望的相关服务。

2.3 接待外来服务请求Agent对象

当以Agent信息作为参数的CORBA对象通过ORB来到目标服务器时,服务器就会接待到访的请求服务Agent,如图2所示的Agent-B,Agent-C,Agent-D。访问CORBA-Agent对象通过服务器的JKQML-CORBA接口向服务器表明自己的身份(代表的服务器、寻求的服务)。由于Agent对象是在以CORBA的参数形式在ORB传输,因此,当CORBA对象到达目的地服务器时可以直接通过JKQML-CORBA进行初步交流。在CORBA-Agent对象通过JKQML-CORBA接口向服务器言明本次的目的后,服务器就会根据CORBA-Agent对象寻求的请求服务类别,判断本服务器是否能够提供此类服务来决定是否接受该CORBA-Agent对象的访问:当服务器能够提供CORBA-Agent所寻求的服务请求时,就会接受CORBA-Agent的访问;当服务器不能提供Agent所寻求的服务请求时就会拒绝该CORBA-Agent的协商。

3 检测与控制系统

由于在多移动Agent系统中,系统不但要向外派遣移动Agent对象在Internet上寻找能够提供自己所需服务的服务器,同时,也接待外来请求本网站服务的移动Agent对象。在接待外来Agent对象并与其协商进行服务时安全问题成为研究人员关注的焦点。服务器在与外来Agent进行协商及对其进行服务时,应尽量避免由于少数Agent对象对服务器资源的过度消耗而使服务器无法对其他应用程序进行响应,导致系统死机。本系统中的系统监控模块的功能是保护系统资源,防止外来Agent对象对系统资源的过度占用。如何保护服务器免受攻击、记录Agent对象对服务器资源的消耗是当前移动Agent研究的热点问题。要解决这个问题需要对服务器系统进行监控,目前用Java语言开发的系统监控器产品还相对较少,如SOMA,J-SEAL等,但是由于是针对于不同应用的,所以其代码较为复杂,造成大量无用代码消耗系统资源。本系统中采用JRes来对系统进行检测控制\[4\]。当系统中的一个外来服务请求Agent对象通过系统对其身份的鉴定,并决定与其进行进一步的协商服务时,系统就会应用JRes创建一个线程负责与这个Agent进行协商,并对性线程对资源的占用情况进行实时检测,防止给线程对系统资源的过量占用,而影响服务器进行其他工作。在JRes接口中有异常处理和资源管理2个Java接口。除初始化函数initialize() 外,所有资源管理类里的其他函数完成线程的相应功能并且每一个函数都拥有函数副本来管理线程的相应资源。

Initialize(pointer):初始化一个子系统资源记录,记录所有对外来请求Agent进行服务的线程对系统资源可占用的最大上限。这样做的目的是仅有一个指针能够管理子系统资源;SetThreadRegistrationCallback(pointer,tCallback):对象通过类里提供的ThreadRegistrationCallback接口管理子系统资源。这个函数的作用是,当有新的外来Agent进行协商的Java线程t创建时 tCallback.ThreadRegistrationNotification(t) 将被调用。把新建t线程及为该线程指定的系统资源占用的上限在pointer子系统资源记录中注册,供以后判断是否占用系统资源过度时参考。这个函数调用与setLimit(pointer,resType,t,limit,oCallback)调用连在一体进行。这个函数的功能是为线程t指定对有限资源resType占用的最大限度limit;resourceUseExceeded(resType,t,resValue):在该线程t对这种resType占用超过设定的限度limit时,该函数就会被oCallback调用。参数resValue通过回调提供关于资源的当前消耗量;clearLimit(pointer,resType,t):当线程t与其协商的外来服务请求Agent对象完成本次协商后,系统终止该线程t,或由于该线程在与其写上的Agent进行协商时,对于子系统资源的占用量超过系统指定的上限时,系统决定终止该线程t时,清除线程t在子系统资源对象pointer下对resType资源的使用限定;getResourceUsage(resType,t):向管理资源子系统询问关于线程t对resType资源的实际使用情况;getResourceLimit(resType,t):用来查询线程t对resType系统资源的占用上限。

在资源管理策略下,解决对外来Agent服务的线程t占用过多的系统资源时可以抛出一个ResourceOveruseException异常。在构建线程t对各类系统资源详细的占用上限问题时争论的焦点是允许上限值和实际应用值之间的的差异。如果将允许占用上限设置的过高,那么会降低服务器最多可以同时接待Agent访问的数目;若过低时会影响t与Agent之间的正常协商,降低服务器接待Agent的效率。应用程序占用过多系统资源的信息可以从捕获的异常信息中得到。对于内存和网络资源的限制值和实际使用值的描述以字节为单位进行,而对于CPU使用时间的描述以毫秒为单位进行。

4 结 语

本系统采用的CORBA体系不是某个专有产品,而是由OMG组织定义,能支持多种语言,从而建立在其基础上的多Agent系统也可以支持多种主要编程语言,编程人员可以使用自己熟悉的编程语言使用上述的框架形式,可以实现和其他公司的Agent平台进行交流。其次,由于在本框架中加入感应模块可以实时监控系统,使得在Agent系统已经运行的情况下,用户再运行别的软件是不会因为Agent平台已经运行而感觉到系统的运行速度降低,从而是一种有效的移动多Agent框架。

参考文献

[1]Vinoski S.CORBA:Integrating Diverse Applications within Distributed Heterogeneous Environments\[J\].Communications Magazine,IEEE,1997,35(2):46-55.

[2]陶先平,吕建.一种移动Agent 结构化迁移机制的设计和实现\[J\].软件学报,2000,11(7):918-923.

[3]刘锦德.一个实用的移动Agent 系统(Aglet)的综述\[J\].计算机应用,2001(8):1-3,9.

[4]Czajkowski G,Von Eicken T.JRes:A Resource Accounting interface for Java\[J\].Proceedings of the 13th ACM SIGPLAN Conference on Object-oriented Programming,Systems,Languages,and Applications.1998:21-35.

作者简介

黄涛男,1979年出生,河南淮滨人,硕士。主要从事人工智能、多Agnet方面的研究工作。

上一篇:基于PCA的人脸识别方法的比较研究 下一篇:IT服务管理与IT安全管理架构在中小企业的应用...