流行的分布式计算技术都基于Client/Server模式,通过远程过程调用或消息传递等方式进行远程通信,比较适合稳定的网络环境应用场合。随着新型网络应用(如移动计算)的出现,Client/Server模式的缺点日益明显,远远不能适应当今快速多变的网络应用发展,移动Agent技术集智能Agent、分布式计算、通信技术于一体,提供了一个强大的、统一的和开放的计算模式,更适合于提供复杂的网络服务(如复杂的Internet信息搜索、Internet智能信息管理等)。
移动Agent是具有移动特性(Mobility)的智能Agent,它可以自主地在网络上从一台主机移动到另一台主机,并代表用户完成指定的任务,如检索、过滤和收集信息,甚至可以代表用户进行商业活动。
MA技术是
分布式技术与Agent技术相结合的产物,它除了具有智能Agent的最基本特性——反应性、自治性、导向目标性和针对环境性外,还具有移动性[1]。
具体特性表现在如下几个方面:
⑴节约
网络带宽、克服网络延迟。移动Agent的本质是将计算移动到数据端,直接在数据端进行本地处理,只返回最终结果,从而避免了大量中间数据在通信两端的传输。移动Agent一次可以携带多个服务请求移动到服务器端进行本地调用,避免了多次远程调用,从而节省了每次远程调用的网络延迟。因此在处理的数据量大、通信两端交互频繁、带宽不足的情况下,使用移动Agent技术可以有效地节省网络负载。
⑵支持实时远程交互。在一些远程控制系统中,如工业控制、海底探测器控制、外太空探测器控制、有毒环境中的监控,实时性非常重要,但是网络的延迟使远程实时控制变得不太可能。将移动Agent发送到远端系统,代替人在远端完成各种控制活动,可以从根本上解决网络延迟问题。
⑶封装网络协议。任何网络程序都是建立在特定的协议之上的,网络程序的开发要求
程序设计者深刻地理解低层的
网络协议;随着Internet的发展,新的协议和数据格式不断地产生,随着网络协议的升级,
程序需要重新编写、编译,这些都给网络应用的开发和维护带来困难。移动Agent系统是一种
中间件,位于操作系统和应用程序之间,封装了低层
网络协议,提供移动、通信、容错和安全等基本功能,开发人员无须了解低层实现即可开发网络应用。当
网络协议升级时,只需修改移动Agent系统中相关的功能实现而无需修改MA应用程序。
系统是一种中间件,位于操作系统和应用程序之间,封装了低层
网络协议,提供移动、通信、容错和安全等基本功能,开发人员无须了解低层实现即可开发网络应用。当网络协议升级时,只需修改移动Agent系统中相关的功能实现而无需修改MA应用程序。
⑷支持异步自主执行。传统
分布式系统中异步通信机制(如异步
消息队列)可以异步地处理多个请求,但要求提出请求的
客户端必须始终在线等待并响应请求的回答,这对移动客户而言是不可行的。使用移动Agent技术,用户可以将整个任务而不是单个请求提交给多个Agent去执行,这些Agent被发送到网上之后,可以独立于发送它们的程序,异步地、自主地、协作地完成任务,它们的生命周期可以长于创建它们的程序。
⑸支持离线计算(断连操作)。由于带宽是一种昂贵的资源,要求移动设备(笔记本电脑、PDA、手机等)始终保持网络连接在经济上是不可行的;无线通信的特性要求系统具有离线计算的能力,移动设备连接在技术上也是不可行的。移动Agent技术可以解决这个问题。用户派出Agent之后,可以断开网络连接,Agent在网络上自主地运行,当Agent完成任务之后,通过转接机制(Docking)监视用户是否在线,当它发现用户在线时,就返回计算结果。
⑹
支持平台无关性。移动Agent的运行只和其运行环境有关,和具体的网络结构、
网络协议、计算机设备、操作系统无关,只要
网络节点上装有移动Agent运行环境,移动Agent就可以实现跨平台的移动和运行。如果所有的移动Agent系统都遵循移动Agent系统的互操作标准,就可以实现MA在任意移动Agent系统中的移动、交互和通信,真正实现平台的无关性,即所谓的“编译一次,到处移动”。
⑺具有动态适应性。移动Agent和其运行环境进行交互,感知环境的变化,并自主地、快速地作出反应,使整个系统始终保持在最优状态。
⑻提供个性化服务。来自不同的民族和地区,有着不同的文化背景,他们对信息的需求和使用方式有着很大的差异,这就要求Internet进行个性化服务。使用移动Agent技术,用户可以根据服务器端提供的低层操作函数,编写满足自己特定需要的Agent,然后发送到服务器端运行,利用服务器端的数据资源或计算资源为不同的用户服务,有效地增加服务器功能的伸缩性。
⑼增强应用的强壮性和容错能力。移动Agent支持离线计算,其反应性使之能及时地感知
网络节点的失效,其自主性可以使它自主地处理并修正错误,更容易建立容错能力强的
分布式系统。例如,在一个
网络节点失效之前,在其上工作的移动Agent可以立即感知,并完成相应的备份工作,然后移动到其他节点,继续原来的工作。
移动Agent系统的组成不同的移动Agent系统的
体系结构各不相同,但几乎所有的移动Agent系统都包括如下两部分:Agent和MA环境(
MAE或称MA服务器、MA主机(MAH)、MA服务设施、Place、Context、Location)。MA环境为Agent提供安全、正确的运行环境,实现MA的移动、MA执行状态的建立、MA的启动、实施MA的约束机制、容错策略、安全控制和通信机制,并提供基本服务模块,如事件服务(EventService)、黄页服务(YellowPageService)、事物服务(TransactionService)和
域名服务(DNS)等。1台
主机上可以有1个或多个
MAE。通常情况下,1个
MAE只位于1台主机上,但当主机之间是以高速、持续、稳定可靠的网络连接时,1个MAE可以跨越多台主机而不影响整个系统的运行效率。Agent可以分为移动Agent和服务Agent。移动Agent可以从1个
MAE移动到另1个MAE,在MAE中执行,并通过Agent通信语言(ACL)与其他MA通信或访问MAE提供的服务。移动Agent的主要作用是完成用户指定的任务,需要实现移动语义(即目标主机或路由的选择)、安全控制(保护自身)、与外界(MA服务环境以及其他Agent)的通信等功能。服务Agent不具有移动的能力,其主要功能是向本地的Agent或来访的Agent提供服务。通常,1个
MAE上驻有多个服务Agent,分别提供不同的服务,如文件服务、黄叶服务等系统级服务,定票服务、数据库服务等应用级服务。由于系统Agent是不移动的,并且只能由它所在
MAE的管理员启动和管理,因此保证服务Agent不会是“恶意的”。来访的移动Agent不能直接访问系统资源,只能通过服务Agent提供的接口访问“受控制的(Controlled)”、“安全的(Secure)”的服务,这可以避免恶意的Agent对
主机的攻击,是移动Agent系统经常采用的
安全策略。另外,采用Java提供的C语言接口,服务Agent可以提供和其他软件LegacySoftware)的交互接口,很容易将非Agent系统集成到Agent系统中。