文献来源:第一部分http://www.ibm.com/developerworks/cn/java/l-mobile-agent/软件agent和移动agent

                 第二部分http://www.ibm.com/developerworks/cn/java/l-mobile-agent/index2.html用Java开发移动agent程序

1、软件agnet:软件Agent属于人工智能的范畴。软件Agent是运行于动态环境的、具有高度自治能力的实体,它能够接受其它实体的委托并为之服务。

图1. 软件Agent
图1. 软件Agent

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

2、移动agent:软件Agent能够在整个网络中自由移动----->移动Agent的概念随即孕育而生。移动代理(Mobile agent)是能在异构网络主机之间自主地进行迁移的有名字的程序。程序能在运行的任意点上挂起, 然后迁移至另一主机, 并接着这一点往下执行。移动代理能复制自己或者产生子代理, 迁移到其他主机上来互相协作, 以完成复杂的任务。

几乎所有的移动Agent系统都包含移动Agent(简称MA)和移动Agent服务设施(简称MAE)两个部分。

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

 

代理服务环境是移动代理系统的关键MA的移动性和问题求解能力很大程度上取取于MAE所提供的服务,一般来讲,MAE至少应包括以下基本服务:

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

通常情况下,一个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系统经常采用的安全策略。

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

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

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

图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会得到警告,并有充足的时间移动到另一台主机上并继续运行。

 

 

 

 

 

 posted on 2009-04-24 22:35  凌枫天  阅读(921)  评论(1编辑  收藏  举报