发明名称 一种基于代理的面向服务软件系统的容错方法
摘要 本发明涉及一种基于代理的面向服务软件系统的容错方法,该方法具体包括:代理管理模块为每一个运行的Bundle生成一个对应的代理;当调用某个Bundle的服务时,该调用首先被重定向到对代理的调用,代理管理模块判断代理的调用过程是否捕获到错误信息,若是,则停止调用的服务,开始服务错误修复流程,若否,则代理管理模块把本次的调用信息保存到服务调用记录模块;服务错误修复利用找到的可替代服务替换错误的服务,若无可替代服务,则根据服务依赖分析模块寻找所有依赖于当前错误服务的服务,停止这些服务并且将这些服务加入到错误恢复队列中进行错误修复。与现有技术相比,本发明具有可有效容错、适用范围广等优点。
申请公布号 CN102831027B 申请公布日期 2015.01.28
申请号 CN201210313927.1 申请日期 2012.08.29
申请人 上海交通大学 发明人 黄林鹏;顾亮亮;李晨
分类号 G06F11/07(2006.01)I 主分类号 G06F11/07(2006.01)I
代理机构 上海科盛知识产权代理有限公司 31225 代理人 赵继明
主权项 一种基于代理的面向服务软件系统的容错方法,其特征在于,该方法基于扩展的OSGi,所述的扩展的OSGi包括OSGi基本框架、代理管理模块、服务调用记录模块、服务依赖分析模块和服务修复模块,所述的方法具体包括以下步骤:第一步:代理管理模块为每一个运行的Bundle生成一个对应的代理;第二步:当调用某个Bundle的服务时,代理管理模块将该调用首先重定向到对对应代理的调用,由代理再去调用真正的服务,代理管理模块判断代理的调用过程是否捕获到错误信息,若是,则执行第三步,若否,则代理管理模块把本次的调用信息保存到服务调用记录模块;第三步:代理管理模块捕获到了错误,停止调用的服务,并且将该服务加入到服务修复模块的错误恢复队列中,开始服务错误修复流程;第四步:服务修复模块首先判断当前错误恢复队列是否为空,若是,则停止服务错误修复流程,若否,则取出错误恢复队列中队首的服务,并执行第五步;第五步:服务修复模块判断是否找到当前队首服务的可替代服务,若是,则用可替代服务替换当前队首服务,并返回第四步,若否,则执行第六步;第六步:服务修复模块通过服务依赖分析模块找到所有依赖于当前队首服务的服务,停止这些服务并且将这些服务加入到错误恢复队列中,然后返回第四步;所述的可替换服务的定义具体如下:定义服务S为一个五元组,S={Q,IN,OUT,Trans,q0},满足:(1)Q是状态集合;(2)IN是触发事件集合,即对于服务的调用事件,包括调用的函数和参数;(3)OUT是结果事件集合;(4)Trans:Q X IN→Q X OUT是转移函数;(5)q0∈Q,是起始状态;服务S在启动时状态处于初始状态q0,当S接收到触发事件in∈IN,按照Trans的规则进行计算,以此类推,如果服务S接受到一组触发事件序列(in1,in2,…),根据Trans的规则,S将会输出一组结果事件序列(out1,out2,…);对于任意的一组触发事件序列,分别作用到服务S1和S2上,如果得到的结果事件序列始终是相同的,则服务S1和S2是可替换的。
地址 200240 上海市闵行区东川路800号