移动Agent

图2. 移动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所示。
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转移到另一节点上运行时,其状态必须是在上一节点挂起时那一刻的状态。