发明名称 基于事务的服务状态一致性维护方法
摘要 本发明公开了一种基于事务的服务状态一致性维护方法,该方法通过引入并区分四种恢复属性以支持恢复属性的多样性,通过构建可回滚组合服务实例集合和带有等待队列的不可回滚组合服务实例集合,支持根据恢复属性、时间戳大小和动态检测到的冲突关系来动态确定被调度的组合服务实例中的服务实例与任意其它相关服务实例在这两个集合中的归属情况,以完成组合服务引擎中的服务的并发调度、夭折和恢复、提交。本发明支持服务恢复属性的多样性和多种控制模式、能够保证并发调度的可串行性和可恢复性、避免饿死现象发生,允许多个执行了不可补偿事务的组合服务实例并发调度和执行、支持服务实例之间的动态冲突检测、可有效减少长期运行事务的连锁夭折。
申请公布号 CN103995691A 申请公布日期 2014.08.20
申请号 CN201410215230.X 申请日期 2014.05.21
申请人 中国人民解放军国防科学技术大学 发明人 任怡;廖湘科;吴庆波;戴华东;刘仁仕;孔金珠;邵立松;阳国贵;高珑;史佩昌;吕品;刘晓东
分类号 G06F9/38(2006.01)I 主分类号 G06F9/38(2006.01)I
代理机构 湖南兆弘专利事务所 43008 代理人 赵洪;谭武艺
主权项 一种基于事务的服务状态一致性维护方法,其特征在于实施步骤如下:1)预先构建用以区分提交了不可补偿服务的组合服务实例与其它组合服务实例的可回滚组合服务实例集合和带有等待队列的不可回滚组合服务实例集合,其中可回滚组合服务实例集合中组合服务实例的执行结果可被消除,而带有等待队列的不可回滚组合服务实例集合中的组合服务实例已执行不可补偿的服务,执行结果不能完全撤销;设定系统中组合服务实例已执行时间的阀值;组合服务实例被调度的时间先后采用时戳来标识,从待调度组合服务队列中获取被调度的组合服务实例,判断是否由于冲突原因导致所述被调度的组合服务实例曾被夭折,如果所述被调度的组合服务实例由于冲突原因曾被夭折则维持原时戳,否则按照单调递增的方式给所述被调度的组合服务实例分配一个新的时戳;将所述被调度的组合服务实例加入到可回滚组合服务实例集合中,完成被调度的组合服务实例的初始化;2)从所述被调度的组合服务实例获取一个服务实例作为当前服务实例,将当前服务实例对应的组合服务实例的已执行时间在原值的基础上增加当前服务实例的已执行时间;判断当前服务实例对应的组合服务实例的已执行时间大于设定的已执行时间阀值、当前服务实例不是补偿服务两个条件是否同时成立,如果两个条件同时成立,则将所述指定服务实例的恢复属性设置为“不可补偿且不可重试”;判断当前服务实例的恢复属性是否为“可忽略”,当恢复属性非“可忽略”时则直接为当前服务实例分配执行凭证并执行它,否则先为当前服务实例申请获得执行凭证,然后再为当前服务实例分配执行凭证并执行它;最终判断当前服务实例的恢复属性为“可重试”或“不可补偿且不可重试”、当前服务实例与不可回滚组合服务实例集合中某个组合服务实例中的服务实例冲突两个条件是否同时成立,在所述两个条件同时成立时,将当前服务实例对应的组合服务实例移入所述不可回滚组合服务实例集合的等待队列;判断当前服务实例对应的组合服务实例是否同时存在于所述可回滚组合服务实例集合和不可回滚组合服务实例集合等待队列中,如果同时存在则将当前服务实例对应的组合服务实例移出所述不可回滚组合服务实例集合的等待队列并从可回滚组合服务实例集合中删去,然后将当前服务实例对应的组合服务实例移入所述不可回滚组合服务实例集合中;3)判断被调度的组合服务实例的所有服务实例是否已经执行完毕,如果被调度的组合服务实例中仍有服务实例尚未执行完毕,则跳转执行步骤2);否则,如果被调度的组合服务实例中所有服务实例已经执行完毕,则提交被调度的组合服务实例。
地址 410073 湖南省长沙市砚瓦池正街47号中国人民解放军国防科学技术大学计算机学院