摘 要: 在Web应用日益普及的今天,Web服务器承担的任务越来越繁重,特别是进行大数据量的计算时,服务器的硬件资源成了计算效率的瓶颈。为了解决这一问题,结合云计算和中间件的技术特点,提出了一种基于多Agent的云服务中间件的体系架构,该框架分为用户接口层、SOA层和资源管理层3个层次,内部采用多Agent技术。节点间通过ACL消息进行通信,负载均衡采用静态计算能力与动态负载相结合,内置的日志服务和容错服务保障系统稳定运行。将此框架应用到实际Web应用中可以大大提高Web服务器的计算效率。
关键词: 云服务;中间件;多Agent系统;分布式计算;负载平衡
随着当今网络体系和Web技术的发展,Web应用被广泛使用,Web服务器所承载的负荷越来越大,使得对于大数据量的计算不能及时响应。因此,需要有一种技术,不仅能将大任务分配给多台机器共同计算,分担服务器的工作,提高计算效率和稳定性,还能利用闲置计算资源,避免资源浪费,这就是云计算。
云计算(Cloud Computing)[1]是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。
中间件(Middleware)[2]是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。
Agent是一种在某个环境中自主行动以实现其设计目标的智能化软件实体[3-4]。其应用主要是以一种松散耦合的Agent网络,即MAS出现,在多个Agent之间以结构化的ACL[5](Agent Communication Language)进行交互、协作,以完成某一项任务。
台风预报系统是一个典型的Web应用,它是一个会商式的群决策支持系统(GDSS)[6-7],其中的专家预报路径就涉及了大数据量计算,本文将云服务中间件的技术应用到台风预报系统上,以提高相似路径计算的效率。
1 云服务中间件的体系架构
1.1 云服务中间件的工作原理
云服务中间件的设计可以将大任务分解成若干小任务,再通过分配给闲置计算节点来分担服务器的工作,计算结果由所有计算节点产生的子结果汇集而成。云服务中间件的工作原理如图1所示。
用户接口层定义了外部程序调用云服务所需的接口,请求端的Agent将计算任务通过接口发给云服务中间件。
SOA层管理着云服务中间件结构所需的基本服务,包括主控服务、计算服务、日志服务和容错服务。目录服务是SOA层各类服务的目录,提供查找已注册在目录上的服务,并调用它。计算任务通过用户接口传进SOA层后,被发送到目录下的主控服务上。
资源管理层是操作计算机资源的各种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,容错Agent负责处理Agent异常并恢复出错的Agent。
1.3 云服务中间件的消息机制
云服务中间件是通过Agent间的发送接收消息来完成内部通信的,ACL消息是Agent的通信语言,两个重要的属性分别是对象内容和接收者,对象内容是指发送消息的对象,可以是一个java类对象,接收者是接收Agent的ID。通信过程是:发送Agent将消息对象封装到ACL消息中,通过send方法发送消息给指定的接收Agent;接收Agent通过receive方法接收ACL消息并解开消息对象,读取消息内容。通信过程如图3所示。
消息对象是存储消息内容的对象,云服务中间件根据不同的需求定义不同的消息格式,它们共同继承自一个消息基类,消息基类管理所有消息的类型。云服务中间件涉及的消息对象有注册相关消息、业务相关消息、登录相关消息、负载相关消息和日志相关消息。
2 负载均衡策略
负载平衡[8]是分布式系统的资源管理模块,它的主要功能是合理和透明地在处理器之间分配系统负载,以达到系统的综合性能最优。负载均衡器设计的目的是在众多闲置的计算节点中选择闲置计算能力最大的作为任务分配的节点,以达到计算效率最优。
本文所采用的负载平衡是结合静态计算能力和动态负载加权组成,同时考虑了节点的静态能力和动态负载,两者加权得出闲置计算能力,使得分配任务更合理,充分利用了计算资源。设计算节点为C,闲置计算能力的计算方法如式(1)所示:
Abilityfree(C)=Abilitytotal(C)×(1-LoadValue(C)/100)(1)
其中Abilitytotal(C)为计算节点C的全部计算能力,即静态计算能力。LoadValue(C)为计算节点C的负载值,即动态负载,单位是百分比。
(1)专家编辑方案,系统将预测路径通过云服务模式交给请求Agent;
(2)请求Agent将预报路径封装成预报消息,发送给云服务中间件的主控Agent;
(3)主控Agent接收到预报消息后,将任务分解成若干子任务,分发给计算Agent;
(4)计算Agent计算最相似历史台风路径,返回结果给主控Agent;
(5)主控Agent汇总结果,将结果封装成结果消息发送回请求Agent;
(6)请求Agent解开结果消息,把最相似路径在地图上显示给专家。
期间,请求Agent、计算Agent将工作日志发送给日志记录Agent,主控Agent将工作日志发送给日志收集Agent,日志记录Agent将接收到的日志转发给日志收集Agent。容错Agent负责对主控Agent和计算Agent集群中的每个计算Agent进行监控。
4 实验结果及分析
4.1 实验准备
将云服务中间件应用到台风预报系统中,分别对单机和云服务两个模式进行实验,测试计算时间。实验所用到的计算机集群有:1台主控服务器,1台Web服务器,若干台计算服务器和若干台数据库服务器。
实验数据有多组,每组均来自随机产生的台风路径,每个台风的路径点数为66个,对不同数量台风的台风预测计算时间,对单机与云服务进行效率比较。
4.2 实验结果
单机模式与云服务模式的计算的平均时间如表1所示。
从表中可以看出,云服务的整体计算性能明显高于单机,当台风个数为1 200时,云服务计算时间仅为单机的31.84%,速度提高了214.11%, 说明云服务中间件应用到台风预报系统中可以大大提高Web服务器的计算效率。
4.3 结果分析
实验结果表明,单机与云服务下计算时间随台风个数成正比,两者的计算时间都是线性增加的。图5为单机与云服务计算时间对比图。从图5可以看出,单机下的计算时间趋势线斜率高于云服务的计算时间趋势线,计算时间差随着台风个数的增加而拉大,说明基于多Agent的云服务中间件可以大大缩短Web服务器的计算时间,提高计算效率。
本文分析了Web应用的现状和Web服务器的瓶颈问题,结合云计算和中间件技术,提出了一种基于多Agent的云服务中间件的体系架构。介绍了云服务中间件的工作原理,即将复杂的任务分解成小任务,再将结果汇总。从层次上看,云服务中间件分为3个层次,分别是用户接口层、SOA层和资源管理层。内部的Agent使用ACL消息进行通信,介绍了各类消息。负载均衡采用静态计算能力与动态负载相结合,保证了整体性能。
本文将设计的云服务中间件框架应用到一个典型的Web应用台风预报系统中,以实验数据进行单机与云服务模式的计算时间对比,可以看到云服务中间件对提高Web服务器计算时间的作用。云服务中间件的研究是未来Web应用的一个很有价值的应用前景,对推动云计算的发展有着至关重要的作用。
参考文献
[1] 赵立新.云计算:信息时代的新主宰[J].科技创新导报,2010(12):213-214.
[2] 吴礼裕,卢珊.中间件的研究综述[J].科技与生活,2009(21):24-24,67.
[3] 赖如洁,曹健,李明禄,等.服务Agent的设计与实现[J].计算机工程与科学,2010,32(5):113-117.
[4] WILDE G J.The theory of risk homeostasis:implications for safety and healt[J].Risk Analysis,1982,2(4):209-225.
[5] WILDE G J.Social interaction patterns in driver behavior:an introductory review[J].Human Factors,1976,18(5):447-492.
[6] 陈伟江,郭朝珍.分布式ETL中协同机制的研究与设计[J].通信学报,2006,27(11):177-182.
[7] 闫钧华,张焕春,经亚枝.基于Multi2agent的分布式系统负载平衡[J].华南理工大学学报:自然科学版,2004,32(12):74-79.
[8] 陈涛,陈启买.分布式计算机系统负载平衡研究[J].计算机技术与发展,2006,16 (5):33-35.