董翔宇
(中国人民解放军海军工程大学,武汉 430033)
基于AOP的Web服务容错技术研究
董翔宇
(中国人民解放军海军工程大学,武汉 430033)
为了提供更优质的Web服务,本文提出了基于AOP的Web服务容错模型,使用AOP作为实现服务过程与切面融合的手段,将容错关注点从功能性关注点中分离并织入到Web服务流程中,利用AOP技术将横切关注点与核心关注点统一架构的方法,保证核心模块的高度封装性。本文设计了一个演示系统,综合了地图、天气和查询订票服务,并根据服务的特性构建了主从容错、缓存容错、重试容错、日志容错四种不同容错方式。
关键词:Web服务;AOP;容错;备份;缓存;重试;日志
实现即时查询同时整合多种服务,并且通过容错方式提高服务的可靠性,是互联时代的新特点。容错机制主要分为冗余、故障检测与恢复、替代与补偿[1],设计容错系统要对系统需求、设计实现和应用开发加以构建。近年来,国内外学者基于三种机制提出了许多容错规范和方法。Ko[2]提出了自适应的面向位置敏感的环境下的容错算法;卡耐基梅隆大学的文件存取服务Coda[3]通过复制服务器技术进行故障恢复。AOP是一种基于横切关注点分离的技术,将横切关注点单独建模并织入到系统中,通过构建切面,确定连接点和切入点将对象织入系统中。本文以用户经常用到的地图、天气等查询服务为背景,基于AOP实现Web服务的容错编程,通过对服务器的可用性鉴别,进行监测拦截并实现容错功能,最终建立了基于AOP的容错演示系统。
主从容错在系统监测上利catch/try方法,在系统运行进行类成员访问时会被OnInvoke方法拦截并跳转到容错Aspect上,当系统运行良好,所有的信息直接由主结点处理,当出现异常时自动执行catch语句,在该容错中将从服务器替换主服务器。Retry(S,number,interval):S代表当前服务,number代表重试次数,interval代表重试时间间隔,重试容错在服务S异常时重复调用直到其成功或达到指定条件,进而对服务异常进行恢复[4]。Cache技术实现对信息的暂存,方便在服务发生故障时及时从Cache中调用,用户可设定Cache缓存时间,在这段时间里缓存数据放在Cache中,当用户查询的内容在Cache中存在时,可直接进行调用从而减少访问服务器这一过程。Logging作为一种存档文件解决了系统错误备份恢复问题,本文利用日志容错记录系统运行初始、结束时间和运行状态,并且一旦出错会记录出错时间和异常信息。
3.1 基于AOP的容错设计
本文利用面向方面编程方法,对AOP架构进行拆分并模块化,进而对每一模块分析设计,最后进行重组。将每一个容错类型做成一个Aspect,本文总共有主从容错(BackupAttribute)、重试容错(RetryAttribute)、缓存容错(CatchAttribute)和日志容错(LoggingAttribute)四个方面,同时利用try/catch语句进行捕捉错误,一旦发生异常利用OnInvoke方法拦截切入并织入容错机制。
图1 错误恢复主从容错模型
横切在连接点处,共有4个连接点,其作用时机略有不同,当被调用时,cache,backup,retry容错会自动拦截核心关注点的类成员访问,实现编译期织入的过程,而logging容错一旦被调用则不需要拦截机制,从方法开始到结束都会跟踪记录。下面利用错误恢复Aspect模型进行详细介绍。
如图1所示,类WeatherServes有若干属性和方法,我们定义了名为BackupAttribute的Aspect进行错误恢复,在BackupAttribute中由于是静态横切所以连接点的调用时机是拦截查询天气方法(GetWeatherInfo),由于BackupAttribute继承了MethodInterceptionAspect类,故与该容错方式相对应的通知使用的是before的横切规则,before在切入点前执行横切行为,eventArgs. Proceed方法的实质是连接点指向方法的别名,此处使用方法调用的目的是在将主从容错方法放入try/catch语句块中,以捕获Exception异常,event Args.Proceed方法此处即是主从容错方法的别名,当系统发现远程服务无响应并抛出Exception异常时,容错机制执行catch中语句,将从服务器替换主服务器,进而重新调用服务查询。同时,4处虚线说明实现容错Aspect有4个连接点,而本例中只对主从备份容错进行介绍,除了BackupAttribute外CatchAttribute,RetryAttribute,Logging Attribute都构成切面。其中,CatchAttribute和RetryAttribute都是采用判断的方式,构建出系统异常情况的处理办法,RetryAttribute错误恢复仍采用try/catch语句,一旦发生异常等待一段时间后重试,这将在catch语句中实现;Catch Attribute判断系统的cache中是否保留过用户查询的信息,如果存在则直接调用。Logging Attribute继承了类MethodBoundaryAspect,采用around横切规则,around是三种横切规则中功能最强大的,它既可以在切入点前后执行横切行为,也可以替代切入点执行横切行为,同时它可以在后台记录下系统运行情况,提供给用户进行分析记录。
3.2 容错策略
在容错策略上对每个Aspect进行编码,当调用主从容错时,BackupAttribute在连接点进行横切织入,对服务进行异常判断,选择是否将从容错替换主容错。当调用重试容错时,RetryAttribute在连接点处进行横切织入,我们在Aspect编程中使用了While语句,将用户设定的重试次数和间隔传送到循环语句中,并在捕捉异常情况时,进行循环重试。当调用缓存容错时,根据最终查询的服务类别会在系统的不同区域申请内存空间,之后建立一个cache参数key作为检查内存中是否保存曾经的查询信息。当调用日志容错时,在程序出现异常时跳转到OnException方法上,输出异常的时刻,异常信息等,当服务结束,在程序出口处会记录执行结束信息。
图2 订票服务
在实现界面上,我们介绍采用日志容错技术的查询订票服务,系统中容错机制进行跟踪状态和记录变量值,以便于在发生错误时准确的恢复到原来状态。由图2可以清晰看到,出现错误时,系统会自动恢复到上一状态,即退还用户金额。■
[1] 欧阳建权,王怀民,史殿习.普适计算的可信研究[J].计算机应用研究,2008.15(12):111-132
[2] Koen. An adaptive fault tolerance for situation aware ubiquitous computing[C].Washington DC:IEEE Computer Society,2005:144-149.
[3] Bram P J. The Coda distributed file system[J].Linux Journa1,1998.50(6):10-20.
[4] 夏永霖.复合服务自恢复关键技术研究[D].中国科学技术大学,2010:19-20
CCBN2016产品创新奖初评会在京举行
作为2016年度C C BN展览会重磅打造的行业创新活动——“CCBN2016产品创新奖”初评工作会议于2016年1月9日在北京召开。
CCBN2016产品创新奖评选活动于2015年11月正式启动,共收到参评产品与技术方案近200余项,历经严格的资料递送审核及评审工作,得到了来自行业技术企业及专家评委的肯定与支持。来自中央人民广播电台、中国国际广播电台、中央电视台、中国网络电视台、中国广播电视网络有限公司、广电总局监管中心、广电总局广播电视卫星直播管理中心、广播科学研究院、广播电视规划院、电影技术质量检测所、中广电广播电影电视设计院、中国传媒大学等14位行业专家组成评审专家组参与了评选工作,国家新闻出版广电总局科学技术委员会副主任杜百川先生主持会议。专家组通过产品展示、分组评分、讨论复议等环节,本着公开、公平、公正的原则,最终评选出制作与播出、传输与覆盖、业务平台与终端、融合媒体四大类共55项产品入围。
据悉,CCBN2016产品创新奖复评会将于1月23日在北京召开,复评会将最终评选出CCBN2016产品创新奖获奖产品,获奖结果将于2016年3月23日CCBN主题报告会期间在北京国际会议中心揭晓并举行颁奖典礼。
2016年是“十三五”规划第一年,十八届五中全会重点研究制定了国家的“十三五”规划,指出经济发展仍是第一要务,要推动创新,突出市场在资源配置中的决定性作用。2016年CCBN年度产品创新奖将深入贯彻落实党的十八大五中全会精神,紧扣广播影视技术“创新、融合、发展”的行业格局,挖掘和表彰优秀创新产品和企业,促进广播电视行业快速发展。
Web Services Fault-tolerant Technology Research Based AOP
Dong Xiangyu
(Naval University of Engineering, PLA, Wuhan, 430033)
We put forward the model of Web Services fault-tolerance based on the AOP so as to provide better Web Services. It was used for the entire service implementation procedure and the fusion of sections , detaching fault-tolerant concerns from functional attention and woven into a Web service in the process. The high-level encapsulation of core module is ensured by the AOP, which construct the transverse concerns and core concerns. We designed a demonstration system, composed of the service of maps, weather and booking query. According to the characteristics of service, four ways of fault-tolerance are set up, including master-slave model, cache, retry model and logging.
Web Service; AOP; Fault-tolerance; Backup; Cache; Retry; Logging
10.3969/J.ISSN.1672-7274.2016.01.008
TP31
A
1672-7274(2016)01-0034-03