发明名称 一种基于约束规则的服务恢复方法
摘要 本发明涉及服务计算领域,尤其涉及一种基于约束规则的服务恢复方法。当业务事务中异常被捕获到,首先通过对约束规则的评估来确定合理的恢复策略,将前向恢复与后向恢复相结合,并加入了与用户交互的步骤,使用户参与到业务事务的恢复过程中;其次为了充分利用异常出现时的服务实时状态信息,本发明提出根据异常属性约束及上下文对业务事务异常的分类方法,根据分类以确定恢复开始点;本发明提出补偿路径的概念,并根据补偿服务的前置条件及上下文选择可行的补偿路径实例;最后本发明利用用户对不同开销的敏感权值来选择最优的补偿路径实例。实验分析表明利用约束规则提高了恢复策略的成功率及效率。
申请公布号 CN102780753B 申请公布日期 2015.08.05
申请号 CN201110349574.6 申请日期 2011.11.08
申请人 东南大学 发明人 曹玖新;罗军舟;杨婧;刘波;东方
分类号 H04L29/08(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 南京经纬专利商标代理有限公司 32200 代理人 许方
主权项 一种基于约束规则的服务恢复方法,其特征在于:在业务事务中的某个域中的服务s出现异常e,此异常被捕获后,利用约束规则经过如下步骤制定进行服务恢复:(1.1)评估s对应的完成性约束条件(CCC),若评估结果为true,则表示此异常可被忽略,业务事务继续执行,若评估结果为false转到(1.2);(1.2)根据上下文属性信息以及服务s的异常属性约束对异常e进行分类,根据分类来确定恢复开始点:重试即转(1.3)、替换服务即转(1.4)、与用户交互即转(1.5)或补偿即转(1.6);(1.3)若服务s是原子服务,且对此服务的重试次数RetryTimes小于对此服务所设定的最大重试次数MaxinumRetryTimes,则重新调用服务s;若重试成功,则业务事务继续执行;否则转(1.4);(1.4)若存在服务s的可替代服务集S,则从中选出一个作为替代服务s’;先补偿服务s,取消其所造成的影响,再调用服务s’,并将s’从S中移除;若服务s的可替代服务集S为空,则转(1.5);若s’执行成功,则业务事务继续执行;否则转(1.5);(1.5)若服务s被设定为与用户交互服务,则向用户提供建议,此建议包括与出现异常的服务s有相似功能属性和非功能属性,但已超出用户在业务事务执行时所提出的可接受范围的服务;若用户选择其中一个服务或者放弃此异常服务,则对更高一级域中关于此域的CCC进行评估;若CCC不满足,则说明此域需要被补偿,域向更高一级域抛出UnatomicException异常,并等待来自更高级域中协调者的补偿命令,转(1.6),而后业务事务继续执行;若CCC满足则直接进入到对本域进行补偿过程,且在此过程中通过乐观的期望策略对可忽略补偿约束条件ICCC进行评估,而后业务事务继续执行;若用户不接受建议,则转(1.6);(1.6)收到来自更高级域中协调者的补偿命令后,进入到对本域进行补偿过程;其中,根据上下文属性信息以及服务s的异常属性约束对异常e进行分类,根据分类来确定恢复开始点的具体方法如下:(2.1)设<img file="FDA0000715139640000011.GIF" wi="64" he="67" />为服务s的异常属性约束集,将恢复开始点StartOfRecovery初始化为空;设异常类型t∈&lt;δa,δb,ρa,ρb,ωa,ωb,μ&gt;,其中的元素按序分别代表网络设备暂时不可用异常属性约束、网络设备永久不可用异常属性约束、可替代物理异常属性约束、不可替代物理异常属性约束、服务限制异常属性约束、服务描述异常属性约束和用户异常属性约束;对于<img file="FDA0000715139640000012.GIF" wi="64" he="68" />中分别对应于上面七种异常的七种异常属性约束<img file="FDA0000715139640000013.GIF" wi="839" he="78" />按序将其赋值给表示某一具体异常属性约束的<img file="FDA0000715139640000014.GIF" wi="83" he="61" />进行(2.2)到(2.12)步骤的操作;(2.2)将π初始化为<img file="FDA0000715139640000015.GIF" wi="54" he="60" />的类型所对应的上下文类型向量,转(2.3);(2.3)一个标记为一个谓词或操作;初始化谓词栈predicateStack为空,操作数栈operaterStack为空,当前标记curToken为空,评估结果result初始化为true;(2.4)获取下一个标记,赋值给curToken;若curToken不为空则转(2.5),否则转(2.9);(2.5)若curToken是谓词则转(2.6),否则operaterStack将curToken入栈;(2.6)若此谓词为&amp;&amp;则转(2.7),否则predicateStack将curToken入栈;(2.7)operaterStack出栈,将predicateStack栈顶元素赋值给topPredicate;根据π对topPredicate进行评估,若topPredicate不满足,则predicateStack将false入栈;否则predicateStack将curToken入栈;(2.8)转(2.4);(2.9)若predicateStack非空,则转(2.10);(2.10)将predicateStack栈顶元素赋值给topPredicate,predicateStack出栈;根据π对topPredicate进行评估,如果topPredicate被满足,则转(2.12);(2.11)将false赋值给result;(2.12)异常属性约束评估结束;如果result为true,则将t赋值为<img file="FDA0000715139640000021.GIF" wi="43" he="56" />所对应的异常类型,转(2.13),否则转(2.1);(2.13)如果t∈{δa,ρa,ωa},则将StartOfRecovery赋值为RETRY,否则若t∈{ρb,ωb},则将StartOfRecovery赋值为REPLACE,否则若t∈{δb,μ},则将StartOfRecovery赋值为INTERACTORCOMPENSATE;RETRY代表重试、REPLACE代表替换服务、INTERACTORCOMPENSATE代表与用户交互或补偿。
地址 210096 江苏省南京市玄武区四牌楼2号