保障多Agent通信可靠性方法和策略的研究

2011-11-25 02:37刘爱军
制造业自动化 2011年19期
关键词:消息可靠性服务器

刘爱军

(河北能源职业技术学院,唐山 063000)

0 引言

随着计算机与网络技术的迅猛发展,出现了越来越复杂的且具有分布式特性的任务。其不仅需要计算机软件快速响应用户的请求,还需要其在某种程度上具备和人脑相似的功能,能够自我控制、独立思考、主动寻找信息以及与其他软件相互协作等等,即具备“智能性”。起源于分布式人工智能领域的Agent技术正是满足这一需求的最佳选择。

Agent是一种在协作系统或分布式系统中能够自主且持续发挥作用的计算实体。单个Agent具备自治性、通信性、交互性和协作性等特点,然而在某些工作环境复杂、不确定性强的大型分布式系统中,以单个Agent的能力就无法胜任了,要满足应用要求,就需要将多个Agent联合在一起组成一个大集合。通过多个Agent之间的相互合作、协调和影响来共同完成目标。通信是在多个Agent相互协作时所必不可少的。此时,每个Agent除履行自己的职责外,还要与其他Agent进行通信以获取并传达必要信息,进而完成请求、应答、转发、控制、协商和任务等不同操作,最终实现整个问题的求解,这样才构成一个多Agent系统。在该系统中,Agent之间的通信是整个系统协作运转的关键环节,保障其通信可靠性是至关重要的。

1 多Agent通信技术分析

统使用的通信语言主要有FIPA-ACL语言和KQML语言。它们都可以满足Agent通信的基本要求,并且具有各自的优点。另外,多Agent系统中常用的通信机制也有很多,例如广播通信、直接通信、联邦系统和公共黑板系统等等。在国内的研究中曾经对这几种通信方式的评价为:间接的通信连接(联邦系统、公共黑板系统)优于直接的通信连接(直接通信、广播通信),可以获得较高的可靠值。

经过大量的调查与研究,结合上述技术,作者提出了一种用于多Agent系统通信平台的通信协议——ACP(Agent Communication Protoc)。这是一种以KQML语言为基础,采用与联邦系统机制相似的Agent通信协议,具体使用了RMI技术与CORBA技术相结合的方式。ACP协议很好地实现了分布式多Agent系统中各个Agent之间的相互通信,规定了通信的结构和规则,具备了可扩展性和跨平台性,并且在实际应用中取得了理想的效果。然而,ACP协议对于多Agent之间通信的可靠性保障方面还没有做出考虑,对于通信中错误的避免、发现以及解决没有给出适当的方法和策略。因此,有必要进一步完善ACP协议,使其能够保障通信可靠性。本文将会结合ACP协议的工作原理和流程来研究其可靠性问题,给出各个环节的解决方案。

通信语言是通信的必备工具。目前多Agent系

2 研究思路

本文以ACP协议为基础研究其工作原理:Agent在通信前需要先在主服务器注册,然后该Agent会被分配给某个通信组,该通信组由多个Agent组成,通信工作都在该组内角色服务器的支持下完成。

通过分析ACP协议的工作原理可知:该系统中的基础性工作由主服务器完成,各个Agent之间的通信依靠角色服务器进行控制和中转,而单个Agent只负责发送和接受等基本操作,其主要工作集中在本身的任务上,这样大大减少了通信负荷。

角色服务器与网络通信中的路由器功能相类似,所以其可靠性在整个通信系统中起着重要作用。多Agent之间是协作关系,某个Agent失效也必然会影响整个系统的工作进度,因此Agent自身的可靠性也是必须保证的。此外,负责Agent注册工作的主服务器也是系统的重要环节,应该有一套用于保证其可靠性的专门机制。

3 可靠性保障技术

本文从实践方面出发,主要给出了解决ACP协议中与可靠性相关的问题,如错误避免、发现与处理等,主要方法如下。

3.1 角色服务器

每个角色服务器对应着一个Agent通信组。该Agent通信组与外界Agent之间的通信均需要通过组内的角色服务器来完成。为了简化Agent之间通信的复杂性,同一个Agent通信组的通信也由该组的角色服务器来完成。在此工作方式下,角色服务器承担大量的消息路由操作任务。

角色服务器定期计算自身用于转发消息的队列长度。在超过给定阈值时,认为可靠性将严重降低。此时,角色服务器逆向消息流发送控制信息,以减少初始发送Agent的消息流量,或减少消息路径上的前一个角色服务器消息流出量,最终使得自身的消息队列可以及时得到处理,队列长度降低到安全阈值之下,进而提高可靠性。

当角色服务器出现硬件等不可恢复的错误时,为了能使Agent和消息路径上的前一个角色服务器发现此种错误,需要对发送的每个消息增加计时的功能。如果在指定时间内没有收到该角色服务器的反馈信息,则认为该角色服务器出现不可恢复错误。上述步骤也可以重复指定次数后再认定为不可恢复错误。

由于每个角色服务器代表一个通信组,所以一旦该角色服务器出现问题,则整组通信均失败。为了避免这种情况,需要为每组提供多个角色服务器,并在多个角色服务器之间实现该组Agent通信的负载均衡。此外,在一台角色服务器出现不可恢复的错误时,应使消息流能够自动切换到其余可用角色服务器之上,以保证通信的可靠进行。

3.2 Agent

Agent作为通信的端点,如果同时面临多个发送方,可能会导致本身的处理速度不足,以至于来不及响应消息的发送方Agent。此时可能会造成发送方Agent或角色服务器的误判,认为出现硬件故障。所以Agent也必须定期检测自己的接收队列,如果长度超过一定阈值,则逆向消息流发送控制信息,以逐渐恢复可靠性。

当Agent出现硬件等不可恢复的错误时,由于它并不是简单的消息发送与接收者,也是整个系统中完成指定任务的一个参与者,而且为了满足最大效率的利用资源,每个Agent完成的任务也不尽相同。所以,当Agent出现不可恢复的错误时,不仅代表通信的一方失败,同时也代表了整个系统中部分任务的执行失败。因此,针对此种情况的可靠性恢复就包括了任务的回收与再分配的过程。为了检测此种错误,不能简单的依靠角色服务器中的通信节点间的计时器去发现。

作者采用的错误发现和解决思路简单地说就是:每个Agent定期向负责注册功能的主服务器报告自身的存在状态,主服务器维护所有注册Agent的存在状态。当主服务器检测到某个Agent若干周期没有通报过自身的存在状态时,认为该Agent出现不可恢复错误,并由主服务器调取曾经分配给该Agent的任务,将该任务或完整、或细分后再发送给其他存在的Agent。

3.3 主服务器

主服务器负责各个Agent的注册并维护存在状态工作,同时也完成任务的分配工作,是整个通信系统的基础。为了避免该服务器对整个系统的影响,应提供多个主服务器实现备份功能。同时,主服务器之间应实现信息共享,以避免某个主服务器失效后,对任务完成情况和Agent注册情况的丢失。

主服务器之间信息共享的简单方式为全互联式的通信,但这样会加大主服务器的工作负荷,从而导致可靠性降低。作者采用的方法为指定主服务器的身份,即对主服务器人为指定一个排序序列,所有主服务器仅需向排序序列中的最前两个主服务器共享信息。当有一台主服务器出现问题,均可保证全系统信息的完整性,同时极大的降低了共享信息所导致的消息流量。如果失效的是两个接收完整信息的主服务器之一,则按序列自动产生一个新的接收完整信息的主服务器即可。

4 结束语

本文针对ACP协议的通信结构并结合网络通信中错误发现与恢复的方法所提出的保障多Agent通信可靠性方法和策略进行了介绍。以ACP协议为对象提出的这些方法和策略的主要思想不乏通用性,相信会对该领域内的同类型问题具有普遍的指导意义。

另外,可靠性是相对可靠,而不是绝对可靠,比如上述思路中两台用于接收完整信息的主服务器同时出现故障,由于大量信息的缺失,则对整个系统造成非常严重的后果。所以,作者提出的策略是考虑到实际情况,尽可能在性能与可靠性之间找到一个平衡点。

[1] 孙壮志,尹国峰,王海竹.Multi-Agent系统中Agent通信可靠性的研究[J].计算机工程与应用,2003:165-166.

[2] 刘扬,史小宏.移动Agent通信可靠性研究[J].现代计算机,2008,(285):22-24.

[3] 张林,徐勇,刘福成.多Agent系统的技术研究[J].计算机技术与发展,2008,18(8):80-83.

[4] 魏晓斌,周盛宗.Boris Bachendo. Rainer Unland.Agent通信机制探讨[J].计算机工程与应用,2002:66-70.

[5] 张士杰,郭宏伟.多代理系统的通信技术及其应用[J].计算机应用研究.2001,(6):15-20.

[6] Uwe M Borghoff,Johann H Schlichter.Computer-Supported Cooperative Work:Introduction to Distributed Applications [M].Berlin,New York:Springer,2000.

[7] A.V.Bakre, B.Badrinath.Implementation and Performance Evaluation of Indirect TCP.IEEE Transactions on Computers, 1997,46(2):353- 361.

[8] Michael Wooldridge.An Introduction to Multi Agent Systems.John Wiley & Sons Inc,2002.

猜你喜欢
消息可靠性服务器
一张图看5G消息
通信控制服务器(CCS)维护终端的设计与实现
PowerTCP Server Tool
合理使用及正确测试以提升DC/DC变换器可靠性
GO-FLOW法在飞机EHA可靠性分析中的应用
5G通信中数据传输的可靠性分析
论如何提高电子自动化控制设备的可靠性
得形忘意的服务器标准
计算机网络安全服务器入侵与防御
消息