mobile agent 学习

计算机智能化和网络化进程促成了Agent技术的迅速崛起和广泛应用,移动Agent技术是为解决复杂、动态、分布式智能应用而提出的一种全新的计算手段,是计算机软件技术的又一次深刻变革。

本系列文章分两个部分介绍移动Agent这一智能化的分布式计算新模型:第一部分对软件Agent和移动Agent的一些基本概念作了简要阐述,提出了基于移动Agent的分布式计算模型;第二部分简明介绍了目前常用的移动Agent平台,并以Voyager这一移动Agent开发平台为例,讲述如何用Java开发移动Agent应用程序。

随着人工智能和计算机网络的飞速发展,特别是近年来Internet及其相关技术的普遍应用,网络已经成为目前人们发布和获取信息的基本平台。在这样的背景下,计算已经不再像以前那样仅仅局限于网络中的几台服务器上,而是要求所有计算机都融入到分布式计算这一大环境中来,这就引发了分布式计算新一轮的研究热潮,这期间最引人注目的就是智能软件Agent。

软件Agent

软件Agent技术的诞生和发展是人工智能和网络技术相结合的产物。从20世纪60年代起,传统的人工智能技术开始致力于对知识表达、智能推理、机器学习等领域的研究,这些研究成果在计算机软件中的应用使得软件有了一定程度上的主动性,并在自主判断和行为选择上有了一定的智能性。目前,人工智能围绕知识这一中心所进行的研究和应用正在促成知识工程这一新兴学科的生成,它涉及到知识的获取、存储和管理等一系列课题,对这些问题的深入研究必将促进软件智能化的进程。

在Internet这一目前最庞大的互联网络环境中,计算机软件体系结构和组织结构的复杂性不断增加,传统的软件设计方法已经无法满足实际需要,分布式、智能化才是今后软件发展的基本方向。软件分布式的目标是要将问题进行分解,由多个实现了知识共享的软件模块或网络节点来共同完成问题求解,而智能化的目标是要在智能主机之间实现智能行为的协调,两者的结合就产生了软件Agent的概念。

软件Agent技术最早可以追溯到人工智能研究的初期阶段,1977年Hewitt在研究Concurrent Actor Model时就首次提出了具有自组织性、反应机制和同步执行能力的软件模型,这就是最初的软件Agent思想。此后从70年代末到90年代初,科学家都将精力集中于对软件Agent理论的研究,并从系统的角度提出了一些基本概念。软件Agent的具体实践开始于90年代,期间人们进行了一些非常成功的尝试(如Pleiades,ARCHON 计划等),并对软件Agent有了进一步的认识,例如Microsoft就认为:"Agent是受人委托代表或代替用户行为,其智能性显示或表现在其优良的判断力或合理的思想。"

目前软件Agent在研究领域中尚没有一个理想的定义,但人们普通认为:软件Agent是运行于动态环境的、具有高度自治能力的实体,它能够接受其它实体的委托并为之服务。不难看出,软件Agent首先具有智能特性,它对环境有响应性、自主性和主动性;同时,软件Agent还具有社会特性。对软件Agent的完整描述如图1所示:


图1. 软件Agent
图1. 软件Agent
  • 自治性(Autonomy) 软件Agent在运行过程中不直接由人或其它主体控制,它能在没有与环境相互作用的情况下自主执行任务,对自己的行为和内部状态有一定的控制权。自治性是软件Agent区别于普通软件程序的基本特征。
  • 响应性(Reactivity) 软件Agent能对来自环境的信息做出适当的响应,它能感知所处的环境,并能通过自己的行为改变环境。
  • 主动性(Proactivity) 传统应用程序接受用户指令被动执行,而软件Agent不仅能对环境变化做出反应,而且更重要的是能在特定情况下采取主动行为。
  • 推理性(Reasoning) 软件Agent可根据已有的知识和经验,以理性的方式进行推理。软件Agent的智能由三个主要部件来完成,即内部知识库、自适应能力以及基于知识库的推理能力。
  • 角色(Character) 软件Agent在社会活动中需要对安全、风险、诚信等因素进行考虑。
  • 通信/合作/协调(Communication/Cooperation/Coordination) 这是在软件Agent群体中应该具有的社会属性。

软件Agent属于人工智能的范畴,它在一定程序上模拟了人类社会的行为和关系,具有一定的智能并能够自主运行,向其它软件实体提供相应的服务。软件Agent具有极大的灵活性和适应性,更加适合于开放、动态的网络环境,也更能体现人类的社会职责。

移动Agent

随着Internet应用的逐步深入,特别是信息搜索、分布式计算以及电子商务的蓬勃发展,人们越来越希望在整个Internet范围内获得最佳的服务,渴望将整个网络虚拟成为一个整体,使软件Agent能够在整个网络中自由移动,移动Agent的概念随即孕育而生。

20世纪90年代初,General Magic公司在推出其商业系统Telescript时第一次提出了移动Agent的概念,即一个能在异构网络环境中自主地从一台主机迁移到另一台主机,并可与其它Agent或资源交互的软件实体。移动Agent是一类特殊的软件Agent,它除了具有软件Agent的基本特性--自治性、响应性、主动性和推理性外,还具有移动性,即它可以在网络上从一台主机自主地移动到另一台主机,代表用户完成指定的任务。由于移动Agent可以在异构的软、硬件网络环境中自由移动,因此这种新的计算模式能有效地降低分布式计算中的网络负载、提高通信效率、动态适应变化了的网络环境,并具有很好的安全性和容错能力。

移动Agent可以看成是软件Agent技术与分布式计算技术相结合的产物,它与传统网络计算模式有着本质上的区别。移动Agent不同于远程过程调用(RPC),这是因为移动Agent能够不断地从网络中的一个节点移动到另一个节点,而且这种移动是可以根据自身需要进行选择的。移动Agent也不同于一般的进程迁移,因为一般来说进程迁移系统不允许进程自己选择什么时候迁移以及迁移到哪里,而移动Agent却可以在任意时刻进行移动,并且可以移动到它想去的任何地方。移动Agent更不同于Java语言中的Applet,因为Applet只能从服务器向客户机做单方向的移动,而移动Agent却可以在客户机和服务器之间进行双向移动。

虽然目前不同移动Agent系统的体系结构各不相同,但几乎所有的移动Agent系统都包含移动Agent(简称MA)和移动Agent服务设施(简称MAE)两个部分,如图2所示。


图2. 移动Agent系统
图2. 移动Agent系统

MAE负责为MA建立安全、正确的运行环境,为MA提供最基本的服务(包括创建、传输、执行),实施针对具体MA的约束机制、容错策略、安全控制和通信机制等。MA的移动性和问题求解能力很大程度上取取于MAE所提供的服务,一般来讲,MAE至少应包括以下基本服务:

  • 事务服务 实现移动Agent的创建、移动、持久化和执行环境分配;
  • 事件服务 包含Agent传输协议和Agent通信协议,实现移动Agent间的事件传递;
  • 目录服务 提供移动Agent的定位信息,形成路由选择;
  • 安全服务 提供安全的执行环境;
  • 应用服务 提供面向特定任务的服务接口。

通常情况下,一个MAE只位于网络中的一台主机上,但如果主机间是以高速网络进行互联的话,一个MAE也可以跨越多台主机而不影响整个系统的运行效率。MAE利用Agent传输协议(Agent Transfer Protocol,ATP)实现MA在主机间的移动,并为其分配执行环境和服务接口。MA在MAE中执行,通过Agent通信语言(Agent Communication Language,ACL)相互通信并访问MAE提供的各种服务。

在移动Agent系统的体系结构中,MA可以细分为用户Agent(User Agent,UA)和服务Agent(Server Agent,SA)。UA可以从一个MAE移动到另一个MAE,它在MAE中执行,并通过ACL与其它MA通信或访问MAE提供的服务。UA的主要作用是完成用户委托的任务,它需要实现移动语义、安全控制、与外界的通信等功能。SA不具有移动能力,其主要功能是向本地的MA或来访的MA提供服务,一个MAE上通常驻有多个SA,分别提供不同的服务。由于SA是能不移动的,并且只能由它所在MAE的管理员启动和管理,这就保证了SA不会是"恶意的"。UA不能直接访问系统资源,只能通过SA提供的接口访问受控的资源,从而避免恶意Agent对主机的攻击,这是移动Agent系统经常采用的安全策略。

移动Agent是一个全新的概念,虽然目前还没有统一的定义,但它至少具有如下一些基本特征:

  • 身份唯一性
    移动Agent必须具有特定的身份,能够代表用户的意愿。
  • 移动自主性
    移动Agent必须可以自主地从一个节点移动到另一个节点,这是移动Agent最基本的特征,也是它区别与其他Agent的标志。
  • 运行连续性
    移动Agent必须能够在不同的地址空间中连续运行,即保持运行的连续性。具体说来就是当移动Agent转移到另一节点上运行时,其状态必须是在上一节点挂起时那一刻的状态。

基于移动Agent的分布计算模型

移动Agent天生就具有分布式的特点,一个基于移动Agent的应用由一组移动Agent构成,每一个Agent根据自身的目标和环境的状况移动到拥有计算所需资源的节点上进行计算。在进行计算时可能需要与其它Agent进行通信协作,而整个计算过程则可能会分成多个步骤进行,每一步完成之后,移动Agent都将自主地决定下一步的动作,直至其任务全部完成后才自动消亡。

目前的分布式计算主要采用远程过程调用、进程迁移、C/S结构等计算模型,这些计算模型本身都存在一定的局限性,其中最明显的就是要求所有参与计算的节点在进行交互时,都必须同时在网络中存在,如果某些所需资源暂时无法访问到,则整个计算过程将失败。

移动Agent的出现使得计算机之间的通信不再是一台主机调用位于另一台主机上的服务,而是向其它计算机提供可执行的计算过程,通过网络传送的消息也不再仅仅局限于数据,而是包含计算过程及其所处状态的计算实体。在移动Agent计算模型中,计算过程及其相应状态在接收方计算机中完全代表了发送方的所有请求,因此在这种情况下网络的可靠性变得不再那么重要,这是因为:

  • 移动Agent无需消耗过多的网络带宽,它仅仅在移动时使用带宽;
  • 移动Agent在移动后将继续执行,即使此时已经失去了与创建者之间的网络连接。

采用移动Agent技术能够较大地减轻网络负载,目前的分布式系统通常过多地依赖于网络通信协议,这些协议在完成任务的过程中需要进行多次交互,从而很容易导致网络拥塞,如图3所示。


图3. 传统方式
图3. 传统方式

移动Agent可以封装一个完整的会话过程,然后自主移动到目的主机上去进行本地交互,如图4所示。此外,当远程主机需要进行数据处理时,采用移动Agent还可以避免大量数据在网络上的传输,其基本思路是将计算移到数据上去进行,而不是把数据移到计算中来。


图4. 移动Agent方式
图4. 移动Agent方式

因此,如果一个客户机需要与网络上特定服务器进行大量的通信,最好的办法就是实现一个使用移动Agent的系统,该Agent能够自动移动到远程服务器上,执行计算任务并返回,这样可以减少网络拥塞。整个计算过程中客户机没有必要在网络中存在,仅仅只有在移动Agent返回时,客户机才需要连接到网络上,如图5所示。


图5. 移动Agent计算模型
图5. 移动Agent计算模型

移动Agent技术给分布式系统的设计、实现和维护都带来了新的活力,它有着许多传统分布式计算模型无法比拟的优势:

第一,移动Agent能较大地减轻网络上的数据流量

通过将服务请求Agent移动到目标主机,使得移动Agent可以直接访问该主机上的资源,与源主机间的交互变少,避免了大量数据在网络中的传输,从而降低了整个系统对网络带宽的依赖,缩短了通信时延,提高了服务质量。

第二,移动Agent能以异步的方式自主运行

可以将要完成的任务封装到移动Agent中,并通过网络将其派遣出去,然后就可以断开源主机与目标主机之间的连接。此后,移动Agent就独立于生成它的进程,并可异步自主操作了。源主机可以在随后适当的时候再与目标主机连接并接收计算结果。这对今后移动设备或移动用户来说尤其有用,因为目前移动设备上的计算皆依赖于昂贵而脆弱的网络连接,它要求在移动设备和固定网络之间建立持续的连接,这种要求无论从经济角度和技术角度来讲都是不十分理想的。

第三,移动Agent具有较强的应变能力

移动Agent能够感知其运行环境,并对环境变化作出适当的反应,它可以根据服务器和网络的负载动态决定移动目标,有利于负载均衡。此外,移动Agent的智能路由还减少了用户在浏览或搜寻时所做的判断。

第四,移动Agent有利于并行处理

移动Agent在进行任务处理时可以动态创建多个Agent并行工作,提高效率并降低作业的响应时间。多移动Agent拥有在网络主机之间动态合理分布自身的独特能力,能够按一定规则来维持解决某个特定问题的最优配置。

第五,移动Agent具有天然的异构性

分布式网络计算平台往往是异构的,而移动Agent通常独立于特定的软硬件环境,仅仅依赖于其运行环境,所以移动Agent是进行无缝系统集成的最优条件。

第六,移动Agent具有很强的健壮性和容错能力

移动Agent具有对非预期状态和事件的应变能力,这使得构建健壮和容错性好的分布式系统变得相对容易,当一台主机关闭时,所有正在该主机上运行的移动Agent会得到警告,并有充足的时间移动到另一台主机上并继续运行。

总之,在网络逐步走向一体化的时代,移动Agent技术较之于传统的分布式技术有着非常明显的优势。

小结

近年来,移动Agent技术无论在理论研究还是在实际应用中都取得了很大的进步,人们开始对Agent有了一个较为清晰的认识,并随之产生了一些成熟的移动Agent开发平台,Voyager就是其中的一个典型代表,它的出现极大地推动了移动Agent的应用范围。21世纪是人类社会全面实现信息化的时代,随着计算机网络和人工智能技术的进一步发展,移动Agent必将揭开信息革命的新篇章。


参考资料

在Recursion公司的网站上可以找到与Voyager相关的一些资料,以及最新的Voyager软件包, Aglet是IBM公司提供的一个移动Agent开发框架,完全基于Java语言实现,并且开放源代码,在网站上可以找到Aglet的一些有用资料。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值