一种基于约束规则的服务恢复方法.pdf

上传人:r7 文档编号:4298363 上传时间:2018-09-13 格式:PDF 页数:15 大小:808.88KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110349574.6

申请日:

2011.11.08

公开号:

CN102780753A

公开日:

2012.11.14

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 29/08申请日:20111108|||公开

IPC分类号:

H04L29/08

主分类号:

H04L29/08

申请人:

东南大学

发明人:

曹玖新; 罗军舟; 杨婧; 刘波; 东方

地址:

210096 江苏省南京市玄武区四牌楼2号

优先权:

专利代理机构:

南京经纬专利商标代理有限公司 32200

代理人:

许方

PDF下载: PDF下载
内容摘要

本发明涉及服务计算领域,尤其涉及一种基于约束规则的服务恢复方法。当业务事务中异常被捕获到,首先通过对约束规则的评估来确定合理的恢复策略,将前向恢复与后向恢复相结合,并加入了与用户交互的步骤,使用户参与到业务事务的恢复过程中;其次为了充分利用异常出现时的服务实时状态信息,本发明提出根据异常属性约束及上下文对业务事务异常的分类方法,根据分类以确定恢复开始点;本发明提出补偿路径的概念,并根据补偿服务的前置条件及上下文选择可行的补偿路径实例;最后本发明利用用户对不同开销的敏感权值来选择最优的补偿路径实例。实验分析表明利用约束规则提高了恢复策略的成功率及效率。

权利要求书

1: 一种基于约束规则的服务恢复方法, 其特征在于 : 在业务事务中的某个域中的服务 s 出现异常 e, 此异常被捕获后, 利用约束规则经过如下步骤制定进行服务恢复 : (1) 评估 s 对应的完成性约束条件 (ICCC), 若评估结果为 true, 则表示此异常可被忽 略, 业务事务继续执行, 转到 ; 若评估结果为 false 转到 (2) ; (2) 根据上下文属性信息以及服务 s 的异常属性约束对异常 e 进行分类, 根据分类来确 定恢复开始点 : 重试 ( 转 (3))、 替换服务 ( 转 (4))、 与用户交互 ( 转 (5)) 或补偿 ( 转 (6)) ; (3) 若服务 s 是原子服务, 且对此服务的重试次数 RetryTimes 小于对此服务所设定的 最大重试次数 MaxinumRetryTimes, 则重新调用服务 s ; 若重试成功, 则业务事务继续执行 ; 否则转 (4) ; (4) 若存在服务 s 的可替代服务集 S, 则从中选出一个作为替代服务 s’ ; 先补偿服务 s, 取消其所造成的影响, 再调用服务 s’ , 并将 s’ 从 S 中移除 ; 若服务 s 的可替代服务集 S 为 空, 则转 (5)。若 s’ 执行成功, 则业务事务继续执行 ; 否则转 (5) ; (5) 若服务 s 被设定为与用户交互服务, 则向用户提供建议。此建议包括与出现异 常的服务 s 有相似功能属性和非功能属性, 但已超出用户在业务事务执行时所提出的可 接受范围的服务。若用户选择其中一个服务或者放弃此异常服务, 则对更高一级域中关 于此域的 CCC 进行评估。若 CCC 不满足, 则说明此域需要被补偿, 域向更高一级域抛出 UnatomicException 异常, 并等待来自更高级域中协调者的补偿命令, 转 (6), 而后业务事 务继续执行 ; 若 CCC 满足则直接转 (5), 且在此过程中通过乐观的期望策略对 ICCC 进行评 估 ( 默认情况下使用乐观的期望策略 ), 而后业务事务继续执行。若用户不接受建议, 则转 (5) ; (6) 收到来自更高级域中协调者的补偿命令后, 进入到对本域进行补偿过程。2: 根据权利要求 1 所述的一种基于约束规则的服务恢复方法, 其特征在于 : 根据上下 文属性信息以及服务 s 的异常属性约束对异常 e 进行分类 ; 根据分类来确定恢复开始点的 具体方法如下 : (1) 设 为 服 务 s 的 异 常 属 性 约 束 集, 将 恢 复 开 始 点 StartOfRecovry 初 始 化 为 空; 设 异 常 类 型 t ∈ , 其中的元素按序分别代表网 络设备暂时不可用异常属性约束、 网络设备永久不可用异常属性约束、 可替代物理异 常属性约束、 不可替代物理异常属性约束、 服务限制异常属性约束、 服务描述异常属性 约束和用户异常属性约束 ; 对于 中分别对应于上面七种异常的的七种异常属性约束 按序将其赋值给表示某一具体异常属性约束的 进 行 (2) 到 (12) 步骤的操作 ; (2) 将 π 初始化为 的类型所对应的上下文类型向量, 转 (3) ; (3) 一个标记为一个谓词或操作。初始化谓词栈 predicateStack 为空, 操作数栈 operaterStack 为空, 当前标记 curToken 为空, 评估结果 result 初始化为 true ; (4) 获取下一个标记, 赋值给 curToken。若 curToken 不为空则转 (5), 否则转 (9) ; (5) 若 curToken 是谓词则转 (6), 否则 operaterStack 将 curToken 入栈 ; (6) 若此谓词为” &&” 则转 (7), 否则 predicateStack 将 curToken 入栈 ; (7)operaterStack 出栈, predicateStack 栈顶元素赋值给 topPredicate。根据 π 对 topPredicate 进行评估, 若 topPredicate 不满足, 则 predicateStack 将” false” 入栈 ; 否 2 则 predicateStack 将 curToken 入栈 ; (8) 转 (4) ; (9) 若 predictStack 非空, 则转 (10) ; (10) 将 predicateStack 栈顶元素赋值给 topPredicate, predicateStack 出栈。根据 π 对 topPredicate 进行评估, 如果 topPredicate 被满足, 则转 (12) ; (11) 将 false 赋值给 result ; (12) 异常属性约束评估结束。如果 result 为 true, 则将 t 赋值为 所对应的异常类 型, 转 (13), 否则转 (1) ; (14) 如 果 t ∈ {δa, ρa, ωa},则 将 StartOfRecovery 赋 值 为 RETRY,否 则 若 t ∈ {ρb, ωa, ωb}, 则将 StartOfRecovery 赋值为 REPLACE, 否则若 t ∈ {δb, μ}, 则将 StartOfRecovery 赋值为 INTERACTORCOMPENSATE。RETRY 代表重试、 REPLACE 代表替代服 务、 INTERACTORCOMPENSATE 代表与用户交互或补偿。3: 根据权利要求 1 所述的一种基于约束规则的服务恢复方法, 其特征在于 : 域的补偿 方法如下 : (1) 设 SS 为域内已完成和正在执行的服务集合, cSS 为 SS 的一个副本, 需要补偿的服 务 compS 初始化为空 ; (2) 若 cSS 为空, 转 (7) ; (3) 获得服务 s 的可忽略补偿约束条件集合 rs, 转 (4) ; (4) 对 rs 中的每一个可忽略补偿约束条件 ic, 若 ic 被满足, 则进行记录, 然后继续判 断下一个 ic ; (5) 将 tempSS 初始化为与可忽略补偿约束条件 ic 相关的在 cSS 中但不在 compS 中的 服务集合, 并将其加入 compS, 将 tempSS 从 cSS 中去除 ; (6) 对 tempSS 中的每一个服务 ts, 进行 (2) 到 (5) 的操作 ; (7) 对 cSS 中的每一个服务 css, 获得其可忽略补偿约束条件集合 rs, 转 (8) ; (8) 对 rs 中的每个可忽略补偿约束条件 r, 若 r 被满足, 转 (9) ; 否则将 css 加入到集 合 compS 中, 转 (6) ; (9) 根据域内的逻辑规则 LR 对 compS 中的服务进行补偿。4: 根据权利要求 3 所述的域的补偿方法, 其特征在于 : 根据上下文对补偿过程进行优 化的具体方法如下 : (1) 初始化异常上下文所匹配的补偿路径实例化集合 Ψ 为空集 ; (2) 设 P1, P 2, ..., Pn-1, Pn 是可能的补偿路径, 对于其中的每一条路径 Pi, 执行下面 (3) 到 (6) 的操作。 (3) 对于 Pi 的每一个实例化 执行 (4) 到 (6) 的操作 ; 进行评估, 若其不被满足, 则置 (4) 初始化 Completed 为 true, 对 中的每一个具体补偿服务 Ck, 执行 (5) 中的操作 ; (5) 根据上下文属性对 Ck 的预置条件 Completed 为 false, 转 (3) ; 这里定义一个具体补偿服务 C 的预置条件为 : RequirementC = (p1, rel, v1)op(p2, rel, v2)op...op(pn-1, rel, vn-1) 其中 rel ∈ , op ∈ 。gt、 lt、 eq、 ne 分别代表大于、 小于、 等于、 3 不等于的属性值限制关系, && 和 || 分别表示逻辑与和逻辑或的逻辑关系 ; (6) 若 Completed 为 true, 则将 加入到补偿路径实例化集合 Ψ 中 ; (7) 初始化补偿路径实例化最小开销值 MinimumCost 为无穷大, 初始化最优补偿路径 实例化 Instance 为空 ; (8) 对于 Ψ 中的每一个补偿路径实例 IP, 执行 (9) 的操作 ; (9) 根据 计算其开销值 ; 用户对不同类型的开销的敏感程度可以用权值来衡量, 权值大表示用户对相应的开销 较为敏感, 权值小表示用户对相应的开销的敏感程度较低, 因此对于补偿路径 P 的实例化 I 的开销可表示为 : 其 中 T 为 开 销 类 型 的 集 合; wt 为 用 户 对 类 型 为 t 的 开 销 的 敏 感 值 ; 这里 VC, t 是具体补偿服务 C 的类型为 t 的开销, X 是由于服务间 的相互作用而需要扣除的开销值, Y 是由于服务间的相互作用而需要增加的开销值 ; 若 则将 赋值给 MinimumCost, Instance 赋值为 IP。

说明书


一种基于约束规则的服务恢复方法

    【技术领域】
     本发明涉及服务计算领域, 特别涉及基于约束规则的业务事务的异常恢复机制。背景技术 随着信息技术的发展, Web 服务越来越多地被企业用于各种业务应用, 将多个 Web 服务按照一定的流程组合起来形成组合服务, 是用 Web 服务实现业务流程的主要形式。在 服务计算中, 一个业务事务是由多个企业所提供的 Web 服务所组成的, 因此业务事务被部 署在松耦合、 异构和自治的环境中。 业务事务恢复是解决业务流程执行过程异常、 保证业务 流程事务属性和成功执行的一种重要方法。
     现有的服务恢复方法主要分为以下两类 :
     1. 前向恢复 : 通过一定的方式解决异常, 为业务事务按照流程继续执行, 最终使 业务事务完成既定目标。
     2. 后向恢复 : 由于业务事务目标的改变、 目标的不可达或者约束条件无法被满足 [16] 等因素, 通过一定的方式对业务事务进行补偿 , “擦除” 业务事务已经执行的部分造成的 影响。
     以上方法存在不足。纯粹的前向恢复往往是不可行的, 因为在许多情况下, 重试、 替换等前向恢复方法并不能使得异常得以恢复。如找不到能够替换出现异常的 Web 服务的 替代服务等。纯粹的后向恢复缺乏对业务事务的性能和效率的考虑。当最后一个子事务出 现异常, 则整个事务必须被补偿。 这不仅让许多已经提交的子事务所产生的影响被 “回滚” , 而且是对资源的极大浪费, 同时也没有完成既定目标。 另外, 现有的恢复机制依据服务的功 能属性和非功能属性所制定的恢复策略有可能与异常的其它属性冲突而导致不适用。而 且, 现有恢复机制缺乏实时性。现有的恢复机制大多数忽略了对于业务事务异常的实时状 态, 所制定的恢复策略所依赖的信息可能已经不能反映异常的当前状态, 导致不适用。
     发明内容
     技术问题 : 服务恢复问题是保证业务事务的事务属性、 提高业务事务服务质量的 关键问题, 本发明基于约束规则确定对于特定异常的恢复机制, 克服了传统方法的固定恢 复模式、 未考虑业务逻辑、 恢复策略与异常发生时业务事务的状态不匹配等缺点。 本发明提 出一种基于约束规则的业务事务方法, 利用约束规则对业务事务的业务逻辑进行表示, 当 异常发生时, 通过相关约束规则的评估结果来制定恢复策略 ; 同时利用上下文对异常进行 分类, 根据分类确定恢复开始点, 省略无意义的恢复步骤 ; 当需要对业务事务补偿时, 通过 上下文以及用户对各种开销的敏感程度选择最优补偿策略。
     技术方案 : 一种基于约束规则的服务恢复方法, 在业务事务中的某个域中的服务 s 出现异常 e, 此异常被捕获后, 利用约束规则经过如下步骤制定进行服务恢复 :
     (1) 评估 s 对应的完成性约束条件 (ICCC), 若评估结果为 true, 则表示此异常可被 忽略, 业务事务继续执行, 转到 ; 若评估结果为 false 转到 (2) ;(2) 根据上下文属性信息以及服务 s 的异常属性约束对异常 e 进行分类, 根据分类 来确定恢复开始 点 : 重试 ( 转 (3))、 替换服务 ( 转 (4))、 与用户交互 ( 转 (5)) 或补偿 ( 转 (6)) ;
     (3) 若服务 s 是原子服务, 且对此服务的重试次数 RetryTimes 小于对此服务所设 定的最大重试次数 MaxinumRetryTimes, 则重新调用服务 s ; 若重试成功, 则业务事务继续 执行 ; 否则转 (4) ;
     (4) 若存在服务 s 的可替代服务集 S, 则从中选出一个作为替代服务 s’ ; 先补偿服 务 s, 取消其所造成的影响, 再调用服务 s’ , 并将 s’ 从 S 中移除 ; 若服务 s 的可替代服务集 S 为空, 则转 (5)。若 s’ 执行成功, 则业务事务继续执行 ; 否则转 (5) ;
     (5) 若服务 s 被设定为与用户交互服务, 则向用户提供建议。此建议包括与出现 异常的服务 s 有相似功能属性和非功能属性, 但已超出用户在业务事务执行时所提出的 可接受范围的服务。若用户选择其中一个服务或者放弃此异常服务, 则对更高一级域中 关于此域的 CCC 进行评估。若 CCC 不满足, 则说明此域需要被补偿, 域向更高一级域抛出 UnatomicException 异常, 并等待来自更高级域中协调者的补偿命令, 转 (6), 而后业务事 务继续执行 ; 若 CCC 满足则直接转 (5), 且在此过程中通过乐观的期望策略对 ICCC 进行评 估 ( 默认情况下使用乐观的期望策略 ), 而后业务事务继续执行。若用户不接受建议, 则转 (5) ;
     (6) 收到来自更高级域中协调者的补偿命令后, 进入到对本域进行补偿过程。
     根据上下文属性信息以及服务 s 的异常属性约束对异常 e 进行分类 ; 根据分类来 确定恢复开始点的具体方法如下 :
     (1) 设 为 服 务 s 的 异 常 属 性 约 束 集, 将 恢 复 开 始 点 StartOfRecovry 初 始 化为空 ; 设异常类型 t ∈ <δa, δb, ρa, ρb, ωa, ωb, μ>, 其中的元素按序分别代表 网络设备暂时不可用异常属性约束、 网络设备永久不可用异常属性约束、 可替代物理异 常属性约束、 不可替代物理异常属性约束、 服务限制异常属性约束、 服务描述异常属性 约束和用户异常属性约束 ; 对于 中分别对应于上面七种异常的的七种异常属性约束 按序将其赋值给表示某一具体异常属性约束的 进行 (2) 到 (12) 步骤的操作 ;
     (2) 将 π 初始化为 的类型所对应的上下文类型向量, 转 (3) ;
     (3) 一个标记为一个谓词或操作。初始化谓词栈 predicateStack 为空, 操作数栈 operaterStack 为空, 当前标记 curToken 为空, 评估结果 result 初始化为 true ;
     (4) 获取下一个标记, 赋值给 curToken。 若 curToken 不为空则转 (5), 否则转 (9) ;
     (5) 若 curToken 是谓词则转 (6), 否则 operaterStack 将 curToken 入栈 ;
     (6) 若此谓词为” &&” 则转 (7), 否则 predicateStack 将 curToken 入栈 ;
     (7)operaterStack 出栈, predicateStack 栈顶元素赋值给 topPredicate。根据 π 对 topPredicate 进行评估, 若 topPredicate 不满足, 则 predicateStack 将” false” 入 栈; 否则 predicateStack 将 curToken 入栈 ;
     (8) 转 (4) ;
     (9) 若 predictStack 非空, 则转 (10) ;
     (10) 将 predicateStack 栈顶元素赋值给 topPredicate, predicateStack 出栈。根据 π 对 topPredicate 进行评估, 如果 topPredicate 被满足, 则转 (12) ;
     (11) 将 false 赋值给 result ;
     (12) 异常属性约束评估结束。如果 result 为 true, 则将 t 赋值为 所对应的异 常类型, 转 (13), 否则转 (1) ;
     (14) 如 果 t ∈ {εa, ρa, ωa}, 则 将 StartOfRecovery 赋 值 为 RETRY, 否则若 t ∈ {ρb, ωa, ωb}, 则将 StartOfRecovery 赋值为 REPLACE, 否则若 t ∈ {δb, μ}, 则将 StartOfRecovery 赋值为 INTERACTORCOMPENSATE。RETRY 代表重试、 REPLACE 代表替代服 务、INTERACTORCOMPENSATE 代表与用户交互或补偿。
     域的补偿方法如下 :
     (1) 设 SS 为域内已完成和正在执行的服务集合, cSS 为 SS 的一个副本, 需要补偿 的服务 compS 初始化为空 ;
     (2) 若 cSS 为空, 转 (7) ;
     (3) 获得服务 s 的可忽略补偿约束条件集合 rs, 转 (4) ;
     (4) 对 rs 中的每一个可忽略补偿约束条件 ic, 若 ic 被满足, 则进行记录, 然后继 续判断下一个 ic ; (5) 将 tempSS 初始化为与可忽略补偿约束条件 ic 相关的在 cSS 中但不在 compS 中的服务集合, 并将其加入 compS, 将 tempSS 从 cSS 中去除 ;
     (6) 对 tempSS 中的每一个服务 ts, 进行 (2) 到 (5) 的操作 ;
     (7) 对 cSS 中的每一个服务 css, 获得其可忽略补偿约束条件集合 rs, 转 (8) ;
     (8) 对 rs 中的每个可忽略补偿约束条件 r, 若 r 被满足, 转 (9) ; 否则将 css 加入 到集合 compS 中, 转 (6) ;
     (9) 根据域内的逻辑规则 LR 对 compS 中的服务进行补偿。
     根据上下文对补偿过程进行优化的具体方法如下 :
     (1) 初始化异常上下文所匹配的补偿路径实例化集合 Ψ 为空集 ;
     (2) 设 P1, P2, ..., Pn-1, Pn 是可能的补偿路径, 对于其中的每一条路径 Pi, 执行下面 (3) 到 (6) 的操作。
     (3) 对于 Pi 的每一个实例化执行 (4) 到 (6) 的操作 ; 中的每一个具体补偿服务 Ck, 执行 (5) 中的 进行评估, 若其不被满足, 则置(4) 初始化 Completed 为 true, 对 (5) 根据上下文属性对 Ck 的预置条件操作 ;
     Completed 为 false, 转 (3) ;
     这里定义一个具体补偿服务 C 的预置条件为 :
     RequirementC = (p1, rel, v1)op(p2, rel, v2)op...op(pn-1, rel, vn-1)
     其中 rel ∈ , op ∈ <&&, ||>。gt、 lt、 eq、 ne 分别代表大于、 小于、 等于、 不等于的属性值限制关系, && 和 || 分别表示逻辑与和逻辑或的逻辑关系 ;
     (6) 若 Completed 为 true, 则将加入到补偿路径实例化集合 Ψ 中 ;(7) 初始化补偿路径实例化最小开销值 MinimumCost 为无穷大, 初始化最优补偿 路径实例化 Instance 为空 ;
     (8) 对于 Ψ 中的每一个补偿路径实例 IP, 执行 (9) 的操作 ;(9) 根据计算其开销值 ;用户对不同类型的开销的敏感程度可以用权值来衡量, 权值大表示用户对相应的 开销较为敏感, 权值小表示用户对相应的开销的敏感程度较低, 因此对于补偿路径 P 的实 例化 I 的开销可表示为 :
     其中T为开销类型的集合; wt 为 用 户 对 类 型 为 t 的 开 销 的 敏 感 值 ; 这里 VC, t 是具体补偿服务 C 的类型为 t 的开销, X 是由于服务间的相互作用而需要扣除的开销值, Y 是由于服务间的相互作用而需要增加的开销值 ;
     若则将赋值给 MinimumCost, Instance 赋值为 IP。有益效果 : 在现有的业务事务恢复机制中, 纯粹的前向恢复往往是不可行的, 纯粹 的后向恢复缺乏对业务事务的性能和效率的考虑。 , 另外, 现有的恢复机制依据服务的功能 属性和非功能属性所制定的恢复策略有可能与异常的其它属性冲突而导致不适用。而且, 现有的恢复机制大多数忽略了对于业务事务异常的实时状态, 所制定的恢复策略所依赖的 信息可能已经不能反映异常的当前状态, 导致不适用。 针对现存方法存在的问题, 我们提出 了基于约束机制的情境感知的业务事务恢复机制。本发明的优势在于 : (1) 若相应约束条 件被满足, 则异常可被忽略, 跳过了不必要的恢复过程, 节约了资源、 时间, 同时也能够满足 业务事务的需求 ; (2) 对异常进行分类, 根据异常的不同类型选择不同的恢复策略开始点, 使得恢复操作有的放矢, 更加合理 ; (3) 与用户交互的过程使用户能够根据自身的需求参 其间采用的乐观的期望策略省略了不必要的补偿服务 ; (4) 根据 与到异常恢复的过程中, 逻辑规则来确定服务的补偿顺序, 不仅减少了需要补偿的服务, 而且补偿顺序更加合理, 补 偿效率也更高 ; (5) 根据可行补偿路径实例化的开销以及用户对各种开销的倾向程度来选 择最优补偿路径的实例化, 使得业务事务的异常恢复过程根据异常时上下文来确定更加适 合于当时情境的恢复策略。 附图说明
     图1: 各种异常的恢复开始点原理图。
     图2: 业务事务恢复流程图。 具体实施方式 本发明所述的方法进一步描述为 :
     业务事务有着迭代的层次结构。一个业务事务又多个域组成, 域通常以组合服务 的形式出现, 完成业务事务的某个子功能模块, 一个域中可能有一个或多个子域。通常, 业 务事务中的一个域由其协调者对参与者进行管理, 来完成业务事务中的某项特定的任务。 一个参与者是一个服务提供者或者服务消费者 ( 用户 ), 但通常被抽象为一个 Web 服务 ( 原 子服务或域 )。协调者是特殊形式的参与者, 与它所属域内的直接参与者进行交互, 即协调 者不与其子域中的参与者交互。
     约束规则定义如下 :
     一个业务事务由域 ( 一般以组合服务的形式存在 ) 所组成, 每个域内可能包含更 小的子域或者原子服务。 每个服务都有其自身的特定功能, 而作为业务事务的一部分, 服务 之间也存在着相互影响和联系 ; 这些联系与用户的需求以及服务提供者的政策是业务事务 业务逻辑的重要组成部分。业务逻辑可以用约束规则来描述。我们将约束规则分成两种类 型: 约束条件和逻辑规则。 当失效或异常发生时, 可以利用约束规则来生成更恰当的恢复策 略。
     1. 约束条件
     约束条件是判断某个业务事务实例中的某个服务在逻辑上是否完成的依据。 正确 性的定义
     (1) 完成性约束条件 (CCC)
     完成性约束条件是对业务事务中的服务是否成功执行的判断依据。当一个服务 失效时, 对与它相应的完成性约束条件进行评估, 如果满足, 则此失效被认为是可忽略的。 由于业务事务是面向用户需求的, 其中某个服务的失效并不一定会导致整个业务事务的失 效。
     (2) 可忽略补偿约束条件 (ICCC) 在补偿的过程中, 若某补偿服务的可忽略补偿约束条件被满足, 则此补偿服务不 必被执行。由于 在补偿过程中补偿服务都有其特定的语义以及它与其它服务之间的约束 关系, 若约束满足, 某些补偿服务可被忽略而不执行。
     2. 逻辑规则
     逻辑规则是对补偿服务的执行顺序的描述, 即表示补偿服务之间的顺序或者并行 执行关系。 通常情况下, 一个服务有与它对应的补偿服务, 补偿服务的执行可将原服务的成 功执行所造成的影响部分地或者完全地取消。虽然一般情况下补偿服务与原服务相比有 着相反的功能, 但若以原服务执行顺序的逆序执行补偿服务不一定是合理也不一定是高效 的。
     业务事务实际上是一个组合服务。在服务组合的过程中, Web 服务按照其功能被 安排到流程中的某一个位置。 补偿服务的执行顺序采用与原服务执行顺序完全相反的方法 并不一定是可取的。 因此在服务组合的过程中, 同时设计业务事务的逻辑规则, 以备在其恢 复过程中使用。
     逻辑规则表示补偿服务的执行顺序。对业务事务的补偿操作可以在 BPEL 的 标签中进行指定。BPEL 中的 为顺序、 并行两 种执行关系提供了支持。
     本发明的业务事务恢复具体步骤如下 :
     (1) 评估 s 对应的完成性约束条件 (ICCC), 若评估结果为 true, 则表示此异常可被 忽略, 业务事务继续执行, 转到 ; 若评估结果为 false 转到 (2) ;
     (2) 根据上下文属性信息以及服务 s 的异常属性约束对异常 e 进行分类, 根据分类 来确定恢复开始点 : 重试 ( 转 (3))、 替换服务 ( 转 (4))、 与用户交互 ( 转 (5)) 或补偿 ( 转 (6)) ;
     (3) 若服务 s 是原子服务, 且对此服务的重试次数 RetryTimes 小于对此服务所设 定的最大重试次数 MaxinumRetryTimes, 则重新调用服务 s。若重试成功, 则业务事务继续
     执行 ; 否则转 (4) ;
     (4) 根据补偿服务的特定的语义以及它与其它服务之间的约束关系, 若存在服务 s 的可替代服务集 S, 则从中选出一个作为替代服务 s’ 。先补偿服务 s, 取消其所造成的影 响, 再调用服务 s’ , 并将 s’ 从 S 中移除 ; 若服务 s 的可替代服务集 S 为空, 则转 (5)。若 s’ 执行成功, 则业务事务继续执行 ; 否则转 (5) ; 异常 e 的分类与恢复机制的对应关系如图 1 所示。
     (5) 若服务 s 被设定为与用户交互服务, 则向用户提供建议。此建议包括与出现 异常的服务 s 有相似功能属性和非功能属性, 但已超出用户在业务事务执行时所提出的 可接受范围的服务。若用户选择其中一个服务或者放弃此异常服务, 则对更高一级域中 关于此域的 CCC 进行评估。若 CCC 不满足, 则说明此域需要被补偿, 域向更高一级域抛出 UnatomicException 异常, 并等待来自更高级域中协调者的补偿命令, 转 (6), 而后业务事 务继续执行 ; 若 CCC 满足则直接转 (6), 且在此过程中通过乐观的期望策略对 ICCC 进行评 估 ( 默认情况下不使用乐观的期望策略 ), 而后业务事务继续执行。若用户不接受建议, 则 转 (6)。
     (6) 收到来自更高级域中协调者的补偿命令后, 在对本域中已执行服务的 ICCC 进 行评估的基础上, 对本域进行补偿。
     其中, 上下文是可以用来刻画实体状况的任何信息。实体可以是用户和应用程序 交互过程中, 任何相关的人、 位置或物体, 也包括了用户和应用程序自身。业务事务中所涉 及到的上下文分为四类 : (1) 计算资源上下文 : 如网络连通性、 通信开销、 带宽、 附近的资源 种类及其状态等 ; (2) 物理上下文 : 如噪声等级、 交通情况、 气温等 ; (3) 服务上下文 : 服务 允许的最大实例数、 服务现有实例数、 服务开始和结束时间等 ; (4) 用户上下文 : 如用户的 基本资料、 地理位置、 周边的人等。
     乐观的期望策略具体实施方式如下 :
     与用户交互时, 首先向用户提供建议, 包括向用户提供失效服务的可替代服务信 息以及询问用户是否放弃失效服务。
     若用户接受建议, 则完成性约束条件会因此而改变, 替代服务是否会导致对此域 进行补偿需要进一步的评估, 这通过评估更高一级域中有关于此域的 CCC 来完成, 若需要 对此域进行补偿, 则此域的协调者向更高一级域抛出” UnatomicException” , 并等待来自高 一级域的协调者发出的补偿命令 ; 若 不需要进行域的补偿则只通过对域中的 ICCC 进行评 估来在域中对服务进行补偿, 在这样的情况下, 补偿仅在异常发生的域中进行, 协调者并不 向上一层协调者抛出” UnatomicException” , 因为替代服务并不代表此域出现了异常。
     在补偿之前对服务 a 的可忽略补偿约束条件进行评估时, 服务 a 对应的可忽略补 偿约束条件可能涉及到除 a 之外的多个服务, 这些服务中的某些可能还未被调用。在这样 的情况下, 我们对于这些还未被调用的服务采取乐观的期望, 所涉及到的可忽略补偿约束 条件评估结果为真。这是因为出现失效服务的域立刻会被重新执行, 此时的补偿只是用来 对将被替换的服务所造成影响导致的不一致性进行消除。 这种乐观的评估策略使得因为可 忽略补偿约束条件不满足而必须补偿的服务更少。在补偿之后, 被补偿的服务必须重新执 行, 以使得替代服务得以执行。
     如图 2 所示, 根据上下文属性信息以及服务 s 的异常属性约束对异常 e 进行分类,根据分类来确定恢复开始点的具体方法如下 :
     (1) 设 为服务 s 的异常属性约束集, 将恢复开始点 StartOfRecovry 初始化 为空。设异常类型 t ∈ <δa, δb, ρa, ρb, ωa, ωb, μ>, 其中的元素按序分别代表网 络设备暂时不可用异常属性约束、 网络设备永久不可用异常属性约束、 可替代物理异常 属性约束、 不可替代物理异常属性约束、 服务限制异常属性约束、 服务描述异常属性约 束和用户异常属性约束。对于 中分别对应于上面七种异常的的七种异常属性约束 按序将其赋值给
     进行 (2) 到 (12) 步骤的操作。(2) 将 π 初始化为 的类型所对应的上下文类型向量, 转 (3)。
     (3) 设一个标记为一个谓词或操作。初始化谓词栈 predicateStack 为空, 操作数 栈 operaterStack 为空, 当前标记 curToken 为空, 评估结果 result 初始化为 true。
     (4) 获取下一个标记, 赋值给 curToken。 若 curToken 不为空则转 (5), 否则转 (9)。
     (5) 若 curToken 是谓词则转 (6), 否则 operaterStack 将 curToken 入栈。
     (6) 若此谓词为” &&” 则转 (7), 否则 predicateStack 将 curToken 入栈。
     (7)operaterStack 出栈, predicateStack 栈顶元素赋值给 topPredicate。根据 π 对 topPredicate 进行评估, 若 topPredicate 不满足, 则 predicateStack 将” false” 入 栈; 否则 predicateStack 将 curToken 入栈。 (8) 转 (4)
     (9) 若 predictStack 非空, 则转 (10)。
     (10) 将 predicateStack 栈顶元素赋值给 topPredicate, predicateStack 出栈。
     根据 π 对 topPredicate 进行评估, 如果 topPredicate 被满足, 则转 (12)。
     (11) 将 false 赋值给 result。
     (12) 异常属性约束评估结束。如果 result 为 true, 则将 t 赋值为 所对应的异 常类型, 转 (13), 否则转 (1)。
     (13) 如 果 t ∈ {δa, ρa, ωa}, 则 将 StartOfRecovery 赋 值 为 RETRY, 否则若 t ∈ {ρb, ωa, ωb}, 则将 StartOfRecovery 赋值为 REPLACE, 否则若 t ∈ {δb, μ}, 则将 StartOfRecovery 赋值为 INTERACTORCOMPENSATE。RETRY 代表重试、 REPLACE 代表替代服 务、 INTERACTORCOMPENSATE 代表与用户交互或补偿。
     域的补偿方法如下 :
     (1) 设 SS 为域内已完成和正在执行的服务集合, cSS 为 SS 的一个副本, 需要补偿 的服务 compS 初始化为空。
     (2) 若 cSS 为空, 转 (8)。
     (3) 获得服务 s 的可忽略补偿约束条件集合 rs, 转 (4)。
     (4) 对 rs 中的每一个可忽略补偿约束条件 ic。
     (5) 若 ic 被满足, 转 (4), 否则转 (6)。
     (6) 将 tempSS 初始化为与 ic 相关的在 cSS 中但不在 compS 中的服务集合, 并将其 加入 compS, 将 tempSS 从 cSS 中去除。
     (7) 对 tempSS 中的每一个 ts, 进行 (2) 到 (6) 的操作。
     (8) 对 cSS 中的每一个服务 css, 获得其可忽略补偿约束条件集合 rs, 转 (9)。
     (9) 对 rs 中的每个可忽略补偿约束条件 r, 若 r 被满足, 转 (9), 否则将 css 加入到
     集合 compS 中, 转 (7)。
     (10) 根据域内的逻辑规则 LR 对 compS 中的服务进行补偿。
     对一个域进行补偿, 目的是为了通过执行补偿服务使域恢复到某一个状态, 而满 足一定的约束条件, 获得一定的一致性, 在从补偿开始到补偿结束的过程中, 需要对若干个 原子服务和域进行补偿, 我们称对一个原子服务或域进行补偿的过程为一个补偿步骤。对 于一个补偿步骤, 有补偿开始点和和补偿目标。对一个原子服务或者域进行补偿就是从其 对应的补偿开始点到补偿目标的过程 ; 对一个业务事务进行补偿就是其中的若干补偿步骤 的执行过程。
     对一个原子服务进行补偿, 需要执行其对应的 “补偿服务” 。 “补偿服务” 的执行 的目的是取消原服务执行所造成的影响, 而能够达到这个目的的服务不必要是一个原子服 务。补偿服务完成的操作与原服务比起来可能更加复杂或者有更多需求, 因此可能需要多 个服务按照一定的流程组合起来完成对此原子服务的补偿, 即一个原子服务的补偿服务不 一定是原子服务, 而可能是组合服务。同理对一个域的补偿也不一定需要同样多的原子服 务, 而可能仅仅一个原子服务便能满足其补偿需求。
     为了达到某个补偿步骤的补偿目标, 必须完成一定的补偿任务, 而这些补偿任务 的完成必须通过具体的补偿服务来实现。 补偿任务是从某个补偿步骤的补偿开始点到其补 偿目标的子步骤, 每个补偿任务都有其相应的子目标, 完成某个补偿步骤的过程就是从补 偿开始点依次通过补偿任务到达各个子目标, 最终到达补偿目标的过程, 我们把这个过程 成为补偿路径。 从补偿开始点到补偿目标, 可能存在多条补偿路径, 每条路径上的补偿任务 是不同的, 补偿任务的数量也有可能是不同的, 但所有的补偿路径都从异常状态开始而结 束于补偿目标。补偿任务的实现依赖于具体补偿服务, 但能够实现某一个补偿任务的具体 补偿服务通常不止一个, 因为可以通过某些定性或者定量的标志来表示子目标的达成, 但 使得这些定性或者定量的标志被满足的方式可以是多样的。 我们把对应于某一个补偿任务 的可能的具体补偿服务表示成一个抽象补偿服务。
     定义一个具体补偿服务 C 的预置条件为 :
     RequirementC = (p1, rel, v1)op(p2, rel, v2)op...op(pn-1, rel, vn-1)
     其中 rel ∈ , op ∈ <&&, ||>。其满足判定方法参见权利要求 3 中 (3) 到 (11) 步。
     一条补偿路径上有一个或多个抽象补偿服务, 这些服务被实例化后成为具体补偿 服务, 一条补偿路径的实例化是指其包含的所有抽象补偿服务的一次实例化, 即所有的抽 象补偿服务都被绑定到具体的服务。每一个具体补偿服务的执行都需要一定的开销。对于 用户来说, 对这些开销的敏感程度是不一样的。
     补偿路径 P 对应于实例化 I 的类型为 t 的开销可如下表示 :
     其中 VC,t 是具体补偿服务 C 的类型为 t 的开销, X 是由于服务间的相互作用而需 要扣除的开销值, Y 是由于服务间的相互作用而需要增加的开销值。
     对于补偿路径 P 的实例化 I 的开销可表示为 :
     其中 T 代表所有开销类型的集合, wt 是用户对类型为 t 的开销的敏感程度权值。
     根据上下文对补偿过程进行优化的具体方法如下 :
     (1) 初始化异常上下文所匹配的补偿路径实例化集合 Ψ 为空集。
     (2) 设 P1, P2, ..., Pn-1, Pn 是可能的补偿路径, 对于其中的每一条路径 Pi, 执行 (3) 到 (6) 的操作。
     (3) 对于 Pi 的每一个实例化执行 (4) 到 (6) 的操作。 中的每一个具体补偿服务 Ck, 执行 (5) 中的 进行评估, 若其不被满足, 则(4) 初始化 Completed 为 true, 对 (5) 根据上下文属性对 Ck 的预置条件 (6) 若 Completed 为 true, 则将操作。
     置 Completed 为 false, 转 (3)。
     加入到 Ψ 中。(7) 初始化补偿路径实例化最小开销值 MinimumCost 为无穷大, 初始化最优补偿 路径实例化 Instance 为空。
     (8) 对于 Ψ 中的每一个补偿路径实例 IP, 执行 (9) 的操作。
     (9) 根 据计 算 其 开 销 值, 其 中 T 为 开 销 类 型 的 集 合, 则将 赋值给wt 为用户对类型为 t 的开销的敏感值。若 MinimumCost, Instance 赋值为 IP。
     1. 在服务组合的过程中, 根据业务逻辑以及用户需求对业务事务进行域的合理划 分, 并制定每一个域的逻辑规则和域中对应于每一个具体服务的约束条件。
     2. 对业务事务中的每个服务 s, 制定其对应于其中异常类型的七种异常属性约束 分别对应于网络设备暂时不可用异常属性约束、 网 络设备永久不可用异常属性约束、 可替代物理异常属性约束、 不可替代物理异常属性约束、 服务限制异常属性约束、 服务描述异常属性约束和用户异常属性约束。业务事务中的服务 的异常属性约束中所涉及到的上下文信息由传感器或软件等进行获取, 并在需要时实时提 供相关数据。
     3. 开始业务事务的执行, 并由各域的协调者协调域中的参与者进行交互。协调者 负责监视域内各个服务的异常情况, 若某个服务出现异常则进入到业务事务的恢复过程。
     当一个异常被捕获时先对其对应的完整性约束条件进行评估, 若评估结果为 true 则忽略此异常 ; 否则根据此服务所对应的异常属性约束以及上下文信息对此异常进行分 类, 根据分类确定异常开始点。 若在恢复过程中需要与用户进行交互, 则根据用户的反馈更 新相关约束条件。若需要对业务事务中的某个域进行补偿, 则先对域中已执行服务的可忽 略补偿约束条件进行评估, 评估结果为 false 的服务成为待补偿服务, 并向更高一级域抛 出异常 ; 更高一级的域根据域内的逻辑规则所规定的补偿服务执行顺序向所需要补偿的域 发送补偿命令 ; 接收到更高一级域的补偿命令之后, 根据补偿服务的预置条件以及上下文 信息得出可行补偿路径实例, 再根据用户对不同开销的敏感权值选择最优补偿策略, 根据 最优补偿策略实施补偿。

一种基于约束规则的服务恢复方法.pdf_第1页
第1页 / 共15页
一种基于约束规则的服务恢复方法.pdf_第2页
第2页 / 共15页
一种基于约束规则的服务恢复方法.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《一种基于约束规则的服务恢复方法.pdf》由会员分享,可在线阅读,更多相关《一种基于约束规则的服务恢复方法.pdf(15页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102780753 A (43)申请公布日 2012.11.14 C N 1 0 2 7 8 0 7 5 3 A *CN102780753A* (21)申请号 201110349574.6 (22)申请日 2011.11.08 H04L 29/08(2006.01) (71)申请人东南大学 地址 210096 江苏省南京市玄武区四牌楼2 号 (72)发明人曹玖新 罗军舟 杨婧 刘波 东方 (74)专利代理机构南京经纬专利商标代理有限 公司 32200 代理人许方 (54) 发明名称 一种基于约束规则的服务恢复方法 (57) 摘要 本发明涉及服务计算领域,尤其涉及一种基。

2、 于约束规则的服务恢复方法。当业务事务中异常 被捕获到,首先通过对约束规则的评估来确定合 理的恢复策略,将前向恢复与后向恢复相结合,并 加入了与用户交互的步骤,使用户参与到业务事 务的恢复过程中;其次为了充分利用异常出现时 的服务实时状态信息,本发明提出根据异常属性 约束及上下文对业务事务异常的分类方法,根据 分类以确定恢复开始点;本发明提出补偿路径的 概念,并根据补偿服务的前置条件及上下文选择 可行的补偿路径实例;最后本发明利用用户对不 同开销的敏感权值来选择最优的补偿路径实例。 实验分析表明利用约束规则提高了恢复策略的成 功率及效率。 (51)Int.Cl. 权利要求书3页 说明书9页 附。

3、图2页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 3 页 说明书 9 页 附图 2 页 1/3页 2 1.一种基于约束规则的服务恢复方法,其特征在于:在业务事务中的某个域中的服务 s出现异常e,此异常被捕获后,利用约束规则经过如下步骤制定进行服务恢复: (1)评估s对应的完成性约束条件(ICCC),若评估结果为true,则表示此异常可被忽 略,业务事务继续执行,转到;若评估结果为false转到(2); (2)根据上下文属性信息以及服务s的异常属性约束对异常e进行分类,根据分类来确 定恢复开始点:重试(转(3)、替换服务(转(4)、与用户交互(转(5)或补偿(转(6。

4、); (3)若服务s是原子服务,且对此服务的重试次数RetryTimes小于对此服务所设定的 最大重试次数MaxinumRetryTimes,则重新调用服务s;若重试成功,则业务事务继续执行; 否则转(4); (4)若存在服务s的可替代服务集S,则从中选出一个作为替代服务s;先补偿服务s, 取消其所造成的影响,再调用服务s,并将s从S中移除;若服务s的可替代服务集S为 空,则转(5)。若s执行成功,则业务事务继续执行;否则转(5); (5)若服务s被设定为与用户交互服务,则向用户提供建议。此建议包括与出现异 常的服务s有相似功能属性和非功能属性,但已超出用户在业务事务执行时所提出的可 接受范围。

5、的服务。若用户选择其中一个服务或者放弃此异常服务,则对更高一级域中关 于此域的CCC进行评估。若CCC不满足,则说明此域需要被补偿,域向更高一级域抛出 UnatomicException异常,并等待来自更高级域中协调者的补偿命令,转(6),而后业务事 务继续执行;若CCC满足则直接转(5),且在此过程中通过乐观的期望策略对ICCC进行评 估(默认情况下使用乐观的期望策略),而后业务事务继续执行。若用户不接受建议,则转 (5); (6)收到来自更高级域中协调者的补偿命令后,进入到对本域进行补偿过程。 2.根据权利要求1所述的一种基于约束规则的服务恢复方法,其特征在于:根据上下 文属性信息以及服务。

6、s的异常属性约束对异常e进行分类;根据分类来确定恢复开始点的 具体方法如下: (1)设为服务s的异常属性约束集,将恢复开始点StartOfRecovry初始化为 空;设异常类型t,其中的元素按序分别代表网 络设备暂时不可用异常属性约束、网络设备永久不可用异常属性约束、可替代物理异 常属性约束、不可替代物理异常属性约束、服务限制异常属性约束、服务描述异常属性 约束和用户异常属性约束;对于中分别对应于上面七种异常的的七种异常属性约束 按序将其赋值给表示某一具体异常属性约束的进 行(2)到(12)步骤的操作; (2)将初始化为的类型所对应的上下文类型向量,转(3); (3)一个标记为一个谓词或操作。。

7、初始化谓词栈predicateStack为空,操作数栈 operaterStack为空,当前标记curToken为空,评估结果result初始化为true; (4)获取下一个标记,赋值给curToken。若curToken不为空则转(5),否则转(9); (5)若curToken是谓词则转(6),否则operaterStack将curToken入栈; (6)若此谓词为”&”则转(7),否则predicateStack将curToken入栈; (7)operaterStack出栈,predicateStack栈顶元素赋值给topPredicate。根据对 topPredicate进行评估,若to。

8、pPredicate不满足,则predicateStack将”false”入栈;否 权 利 要 求 书CN 102780753 A 2/3页 3 则predicateStack将curToken入栈; (8)转(4); (9)若predictStack非空,则转(10); (10)将predicateStack栈顶元素赋值给topPredicate,predicateStack出栈。根据 对topPredicate进行评估,如果topPredicate被满足,则转(12); (11)将false赋值给result; (12)异常属性约束评估结束。如果result为true,则将t赋值为所对应的。

9、异常类 型,转(13),否则转(1); (14)如果ta,a,a,则将StartOfRecovery赋值为RETRY,否则若 tb,a,b,则将StartOfRecovery赋值为REPLACE,否则若tb,则将 StartOfRecovery赋值为INTERACTORCOMPENSATE。RETRY代表重试、REPLACE代表替代服 务、INTERACTORCOMPENSATE代表与用户交互或补偿。 3.根据权利要求1所述的一种基于约束规则的服务恢复方法,其特征在于:域的补偿 方法如下: (1)设SS为域内已完成和正在执行的服务集合,cSS为SS的一个副本,需要补偿的服 务compS初始化为。

10、空; (2)若cSS为空,转(7); (3)获得服务s的可忽略补偿约束条件集合rs,转(4); (4)对rs中的每一个可忽略补偿约束条件ic,若ic被满足,则进行记录,然后继续判 断下一个ic; (5)将tempSS初始化为与可忽略补偿约束条件ic相关的在cSS中但不在compS中的 服务集合,并将其加入compS,将tempSS从cSS中去除; (6)对tempSS中的每一个服务ts,进行(2)到(5)的操作; (7)对cSS中的每一个服务css,获得其可忽略补偿约束条件集合rs,转(8); (8)对rs中的每个可忽略补偿约束条件r,若r被满足,转(9);否则将css加入到集 合compS中。

11、,转(6); (9)根据域内的逻辑规则LR对compS中的服务进行补偿。 4.根据权利要求3所述的域的补偿方法,其特征在于:根据上下文对补偿过程进行优 化的具体方法如下: (1)初始化异常上下文所匹配的补偿路径实例化集合为空集; (2)设P 1 ,P 2 ,.,P n-1 ,P n 是可能的补偿路径,对于其中的每一条路径P i ,执行下面(3) 到(6)的操作。 (3)对于P i 的每一个实例化执行(4)到(6)的操作; (4)初始化Completed为true,对中的每一个具体补偿服务C k ,执行(5)中的操作; (5)根据上下文属性对C k 的预置条件进行评估,若其不被满足,则置 Com。

12、pleted为false,转(3); 这里定义一个具体补偿服务C的预置条件为: Requirement C (p 1 ,rel,v 1 )op(p 2 ,rel,v 2 )op.op(p n-1 ,rel,v n-1 ) 其中rel,op。gt、lt、eq、ne分别代表大于、小于、等于、 权 利 要 求 书CN 102780753 A 3/3页 4 不等于的属性值限制关系,&和|分别表示逻辑与和逻辑或的逻辑关系; (6)若Completed为true,则将加入到补偿路径实例化集合中; (7)初始化补偿路径实例化最小开销值MinimumCost为无穷大,初始化最优补偿路径 实例化Instance。

13、为空; (8)对于中的每一个补偿路径实例I P ,执行(9)的操作; (9)根据计算其开销值; 用户对不同类型的开销的敏感程度可以用权值来衡量,权值大表示用户对相应的开销 较为敏感,权值小表示用户对相应的开销的敏感程度较低,因此对于补偿路径P的实例化I 的开销可表示为: 其中T为开销类型的集合;wt为用户对类型为t的开销的敏感值; 这里VC,t是具体补偿服务C的类型为t的开销,X是由于服务间 的相互作用而需要扣除的开销值,Y是由于服务间的相互作用而需要增加的开销值; 若则将赋值给MinimumCost,Instance赋值为IP。 权 利 要 求 书CN 102780753 A 1/9页 5 。

14、一种基于约束规则的服务恢复方法 技术领域 0001 本发明涉及服务计算领域,特别涉及基于约束规则的业务事务的异常恢复机制。 背景技术 0002 随着信息技术的发展,Web服务越来越多地被企业用于各种业务应用,将多个Web 服务按照一定的流程组合起来形成组合服务,是用Web服务实现业务流程的主要形式。在 服务计算中,一个业务事务是由多个企业所提供的Web服务所组成的,因此业务事务被部 署在松耦合、异构和自治的环境中。业务事务恢复是解决业务流程执行过程异常、保证业务 流程事务属性和成功执行的一种重要方法。 0003 现有的服务恢复方法主要分为以下两类: 0004 1.前向恢复:通过一定的方式解决异。

15、常,为业务事务按照流程继续执行,最终使 业务事务完成既定目标。 0005 2.后向恢复:由于业务事务目标的改变、目标的不可达或者约束条件无法被满足 等因素,通过一定的方式对业务事务进行补偿 16 ,“擦除”业务事务已经执行的部分造成的 影响。 0006 以上方法存在不足。纯粹的前向恢复往往是不可行的,因为在许多情况下,重试、 替换等前向恢复方法并不能使得异常得以恢复。如找不到能够替换出现异常的Web服务的 替代服务等。纯粹的后向恢复缺乏对业务事务的性能和效率的考虑。当最后一个子事务出 现异常,则整个事务必须被补偿。这不仅让许多已经提交的子事务所产生的影响被“回滚”, 而且是对资源的极大浪费,同。

16、时也没有完成既定目标。另外,现有的恢复机制依据服务的功 能属性和非功能属性所制定的恢复策略有可能与异常的其它属性冲突而导致不适用。而 且,现有恢复机制缺乏实时性。现有的恢复机制大多数忽略了对于业务事务异常的实时状 态,所制定的恢复策略所依赖的信息可能已经不能反映异常的当前状态,导致不适用。 发明内容 0007 技术问题:服务恢复问题是保证业务事务的事务属性、提高业务事务服务质量的 关键问题,本发明基于约束规则确定对于特定异常的恢复机制,克服了传统方法的固定恢 复模式、未考虑业务逻辑、恢复策略与异常发生时业务事务的状态不匹配等缺点。本发明提 出一种基于约束规则的业务事务方法,利用约束规则对业务事。

17、务的业务逻辑进行表示,当 异常发生时,通过相关约束规则的评估结果来制定恢复策略;同时利用上下文对异常进行 分类,根据分类确定恢复开始点,省略无意义的恢复步骤;当需要对业务事务补偿时,通过 上下文以及用户对各种开销的敏感程度选择最优补偿策略。 0008 技术方案:一种基于约束规则的服务恢复方法,在业务事务中的某个域中的服务 s出现异常e,此异常被捕获后,利用约束规则经过如下步骤制定进行服务恢复: 0009 (1)评估s对应的完成性约束条件(ICCC),若评估结果为true,则表示此异常可被 忽略,业务事务继续执行,转到;若评估结果为false转到(2); 说 明 书CN 102780753 A 。

18、2/9页 6 0010 (2)根据上下文属性信息以及服务s的异常属性约束对异常e进行分类,根据分类 来确定恢复开始 点:重试(转(3)、替换服务(转(4)、与用户交互(转(5)或补偿(转 (6); 0011 (3)若服务s是原子服务,且对此服务的重试次数RetryTimes小于对此服务所设 定的最大重试次数MaxinumRetryTimes,则重新调用服务s;若重试成功,则业务事务继续 执行;否则转(4); 0012 (4)若存在服务s的可替代服务集S,则从中选出一个作为替代服务s;先补偿服 务s,取消其所造成的影响,再调用服务s,并将s从S中移除;若服务s的可替代服务集 S为空,则转(5)。。

19、若s执行成功,则业务事务继续执行;否则转(5); 0013 (5)若服务s被设定为与用户交互服务,则向用户提供建议。此建议包括与出现 异常的服务s有相似功能属性和非功能属性,但已超出用户在业务事务执行时所提出的 可接受范围的服务。若用户选择其中一个服务或者放弃此异常服务,则对更高一级域中 关于此域的CCC进行评估。若CCC不满足,则说明此域需要被补偿,域向更高一级域抛出 UnatomicException异常,并等待来自更高级域中协调者的补偿命令,转(6),而后业务事 务继续执行;若CCC满足则直接转(5),且在此过程中通过乐观的期望策略对ICCC进行评 估(默认情况下使用乐观的期望策略),而。

20、后业务事务继续执行。若用户不接受建议,则转 (5); 0014 (6)收到来自更高级域中协调者的补偿命令后,进入到对本域进行补偿过程。 0015 根据上下文属性信息以及服务s的异常属性约束对异常e进行分类;根据分类来 确定恢复开始点的具体方法如下: 0016 (1)设 为服务s的异常属性约束集,将恢复开始点StartOfRecovry初始 化为空;设异常类型t,其中的元素按序分别代表 网络设备暂时不可用异常属性约束、网络设备永久不可用异常属性约束、可替代物理异 常属性约束、不可替代物理异常属性约束、服务限制异常属性约束、服务描述异常属性 约束和用户异常属性约束;对于 中分别对应于上面七种异常的。

21、的七种异常属性约束 按序将其赋值给表示某一具体异常属性约束的 进行(2)到(12)步骤的操作; 0017 (2)将初始化为 的类型所对应的上下文类型向量,转(3); 0018 (3)一个标记为一个谓词或操作。初始化谓词栈predicateStack为空,操作数栈 operaterStack为空,当前标记curToken为空,评估结果result初始化为true; 0019 (4)获取下一个标记,赋值给curToken。若curToken不为空则转(5),否则转(9); 0020 (5)若curToken是谓词则转(6),否则operaterStack将curToken入栈; 0021 (6)若。

22、此谓词为”&”则转(7),否则predicateStack将curToken入栈; 0022 (7)operaterStack出栈,predicateStack栈顶元素赋值给topPredicate。根据 对topPredicate进行评估,若topPredicate不满足,则predicateStack将”false”入 栈;否则predicateStack将curToken入栈; 0023 (8)转(4); 0024 (9)若predictStack非空,则转(10); 0025 (10)将predicateStack栈顶元素赋值给topPredicate,predicateStack出栈。

23、。 说 明 书CN 102780753 A 3/9页 7 根据对topPredicate进行评估,如果topPredicate被满足,则转(12); 0026 (11)将false赋值给result; 0027 (12)异常属性约束评估结束。如果result为true,则将t赋值为 所对应的异 常类型,转(13),否则转(1); 0028 (14)如果ta,a,a,则将StartOfRecovery赋值为RETRY,否则若 tb,a,b,则将StartOfRecovery赋值为REPLACE,否则若tb,则将 StartOfRecovery赋值为INTERACTORCOMPENSATE。RET。

24、RY代表重试、REPLACE代表替代服 务、 INTERACTORCOMPENSATE代表与用户交互或补偿。 0029 域的补偿方法如下: 0030 (1)设SS为域内已完成和正在执行的服务集合,cSS为SS的一个副本,需要补偿 的服务compS初始化为空; 0031 (2)若cSS为空,转(7); 0032 (3)获得服务s的可忽略补偿约束条件集合rs,转(4); 0033 (4)对rs中的每一个可忽略补偿约束条件ic,若ic被满足,则进行记录,然后继 续判断下一个ic; 0034 (5)将tempSS初始化为与可忽略补偿约束条件ic相关的在cSS中但不在compS 中的服务集合,并将其加入。

25、compS,将tempSS从cSS中去除; 0035 (6)对tempSS中的每一个服务ts,进行(2)到(5)的操作; 0036 (7)对cSS中的每一个服务css,获得其可忽略补偿约束条件集合rs,转(8); 0037 (8)对rs中的每个可忽略补偿约束条件r,若r被满足,转(9);否则将css加入 到集合compS中,转(6); 0038 (9)根据域内的逻辑规则LR对compS中的服务进行补偿。 0039 根据上下文对补偿过程进行优化的具体方法如下: 0040 (1)初始化异常上下文所匹配的补偿路径实例化集合为空集; 0041 (2)设P 1 ,P 2 ,.,P n-1 ,P n 是可。

26、能的补偿路径,对于其中的每一条路径P i ,执行下面 (3)到(6)的操作。 0042 (3)对于P i 的每一个实例化 执行(4)到(6)的操作; 0043 (4)初始化Completed为true,对 中的每一个具体补偿服务C k ,执行(5)中的 操作; 0044 (5)根据上下文属性对C k 的预置条件 进行评估,若其不被满足,则置 Completed为false,转(3); 0045 这里定义一个具体补偿服务C的预置条件为: 0046 Requirement C (p 1 ,rel,v 1 )op(p 2 ,rel,v 2 )op.op(p n-1 ,rel,v n-1 ) 0047。

27、 其中rel,op。gt、lt、eq、ne分别代表大于、小于、 等于、不等于的属性值限制关系,&和|分别表示逻辑与和逻辑或的逻辑关系; 0048 (6)若Completed为true,则将 加入到补偿路径实例化集合中; 0049 (7)初始化补偿路径实例化最小开销值MinimumCost为无穷大,初始化最优补偿 路径实例化Instance为空; 0050 (8)对于中的每一个补偿路径实例I P ,执行(9)的操作; 说 明 书CN 102780753 A 4/9页 8 0051 (9)根据计算其开销值; 0052 用户对不同类型的开销的敏感程度可以用权值来衡量,权值大表示用户对相应的 开销较为。

28、敏感,权值小表示用户对相应的开销的敏感程度较低,因此对于补偿路径P的实 例化I的开销可表示为: 0053 0054 其中T为开销类型的集合;wt为用户对类型为t的开销的敏感值; 这里VC,t是具体补偿服务C的类型为t的开销,X是由于服务间 的相互作用而需要扣除的开销值,Y是由于服务间的相互作用而需要增加的开销值; 0055 若 则将 赋值给MinimumCost,Instance赋值为IP。 0056 有益效果:在现有的业务事务恢复机制中,纯粹的前向恢复往往是不可行的,纯粹 的后向恢复缺乏对业务事务的性能和效率的考虑。,另外,现有的恢复机制依据服务的功能 属性和非功能属性所制定的恢复策略有可能。

29、与异常的其它属性冲突而导致不适用。而且, 现有的恢复机制大多数忽略了对于业务事务异常的实时状态,所制定的恢复策略所依赖的 信息可能已经不能反映异常的当前状态,导致不适用。针对现存方法存在的问题,我们提出 了基于约束机制的情境感知的业务事务恢复机制。本发明的优势在于:(1)若相应约束条 件被满足,则异常可被忽略,跳过了不必要的恢复过程,节约了资源、时间,同时也能够满足 业务事务的需求;(2)对异常进行分类,根据异常的不同类型选择不同的恢复策略开始点, 使得恢复操作有的放矢,更加合理;(3)与用户交互的过程使用户能够根据自身的需求参 与到异常恢复的过程中,其间采用的乐观的期望策略省略了不必要的补偿。

30、服务;(4)根据 逻辑规则来确定服务的补偿顺序,不仅减少了需要补偿的服务,而且补偿顺序更加合理,补 偿效率也更高;(5)根据可行补偿路径实例化的开销以及用户对各种开销的倾向程度来选 择最优补偿路径的实例化,使得业务事务的异常恢复过程根据异常时上下文来确定更加适 合于当时情境的恢复策略。 附图说明 0057 图1:各种异常的恢复开始点原理图。 0058 图2:业务事务恢复流程图。 具体实施方式 0059 本发明所述的方法进一步描述为: 0060 业务事务有着迭代的层次结构。一个业务事务又多个域组成,域通常以组合服务 的形式出现,完成业务事务的某个子功能模块,一个域中可能有一个或多个子域。通常,业。

31、 务事务中的一个域由其协调者对参与者进行管理,来完成业务事务中的某项特定的任务。 一个参与者是一个服务提供者或者服务消费者(用户),但通常被抽象为一个Web服务(原 子服务或域)。协调者是特殊形式的参与者,与它所属域内的直接参与者进行交互,即协调 者不与其子域中的参与者交互。 0061 约束规则定义如下: 说 明 书CN 102780753 A 5/9页 9 0062 一个业务事务由域(一般以组合服务的形式存在)所组成,每个域内可能包含更 小的子域或者原子服务。每个服务都有其自身的特定功能,而作为业务事务的一部分,服务 之间也存在着相互影响和联系;这些联系与用户的需求以及服务提供者的政策是业务。

32、事务 业务逻辑的重要组成部分。业务逻辑可以用约束规则来描述。我们将约束规则分成两种类 型:约束条件和逻辑规则。当失效或异常发生时,可以利用约束规则来生成更恰当的恢复策 略。 0063 1.约束条件 0064 约束条件是判断某个业务事务实例中的某个服务在逻辑上是否完成的依据。正确 性的定义 0065 (1)完成性约束条件(CCC) 0066 完成性约束条件是对业务事务中的服务是否成功执行的判断依据。当一个服务 失效时,对与它相应的完成性约束条件进行评估,如果满足,则此失效被认为是可忽略的。 由于业务事务是面向用户需求的,其中某个服务的失效并不一定会导致整个业务事务的失 效。 0067 (2)可忽。

33、略补偿约束条件(ICCC) 0068 在补偿的过程中,若某补偿服务的可忽略补偿约束条件被满足,则此补偿服务不 必被执行。由于 在补偿过程中补偿服务都有其特定的语义以及它与其它服务之间的约束 关系,若约束满足,某些补偿服务可被忽略而不执行。 0069 2.逻辑规则 0070 逻辑规则是对补偿服务的执行顺序的描述,即表示补偿服务之间的顺序或者并行 执行关系。通常情况下,一个服务有与它对应的补偿服务,补偿服务的执行可将原服务的成 功执行所造成的影响部分地或者完全地取消。虽然一般情况下补偿服务与原服务相比有 着相反的功能,但若以原服务执行顺序的逆序执行补偿服务不一定是合理也不一定是高效 的。 0071。

34、 业务事务实际上是一个组合服务。在服务组合的过程中,Web服务按照其功能被 安排到流程中的某一个位置。补偿服务的执行顺序采用与原服务执行顺序完全相反的方法 并不一定是可取的。因此在服务组合的过程中,同时设计业务事务的逻辑规则,以备在其恢 复过程中使用。 0072 逻辑规则表示补偿服务的执行顺序。对业务事务的补偿操作可以在BPEL的 标签中进行指定。BPEL中的、为顺序、并行两 种执行关系提供了支持。 0073 本发明的业务事务恢复具体步骤如下: 0074 (1)评估s对应的完成性约束条件(ICCC),若评估结果为true,则表示此异常可被 忽略,业务事务继续执行,转到;若评估结果为false转。

35、到(2); 0075 (2)根据上下文属性信息以及服务s的异常属性约束对异常e进行分类,根据分类 来确定恢复开始点:重试(转(3)、替换服务(转(4)、与用户交互(转(5)或补偿(转 (6); 0076 (3)若服务s是原子服务,且对此服务的重试次数RetryTimes小于对此服务所设 定的最大重试次数MaxinumRetryTimes,则重新调用服务s。若重试成功,则业务事务继续 说 明 书CN 102780753 A 6/9页 10 执行;否则转(4); 0077 (4)根据补偿服务的特定的语义以及它与其它服务之间的约束关系,若存在服务 s的可替代服务集S,则从中选出一个作为替代服务s。先。

36、补偿服务s,取消其所造成的影 响,再调用服务s,并将s从S中移除;若服务s的可替代服务集S为空,则转(5)。若s 执行成功,则业务事务继续执行;否则转(5);异常e的分类与恢复机制的对应关系如图1 所示。 0078 (5)若服务s被设定为与用户交互服务,则向用户提供建议。此建议包括与出现 异常的服务s有相似功能属性和非功能属性,但已超出用户在业务事务执行时所提出的 可接受范围的服务。若用户选择其中一个服务或者放弃此异常服务,则对更高一级域中 关于此域的CCC进行评估。若CCC不满足,则说明此域需要被补偿,域向更高一级域抛出 UnatomicException异常,并等待来自更高级域中协调者的补。

37、偿命令,转(6),而后业务事 务继续执行;若CCC满足则直接转(6),且在此过程中通过乐观的期望策略对ICCC进行评 估(默认情况下不使用乐观的期望策略),而后业务事务继续执行。若用户不接受建议,则 转(6)。 0079 (6)收到来自更高级域中协调者的补偿命令后,在对本域中已执行服务的ICCC进 行评估的基础上,对本域进行补偿。 0080 其中,上下文是可以用来刻画实体状况的任何信息。实体可以是用户和应用程序 交互过程中,任何相关的人、位置或物体,也包括了用户和应用程序自身。业务事务中所涉 及到的上下文分为四类:(1)计算资源上下文:如网络连通性、通信开销、带宽、附近的资源 种类及其状态等;。

38、(2)物理上下文:如噪声等级、交通情况、气温等;(3)服务上下文:服务 允许的最大实例数、服务现有实例数、服务开始和结束时间等;(4)用户上下文:如用户的 基本资料、地理位置、周边的人等。 0081 乐观的期望策略具体实施方式如下: 0082 与用户交互时,首先向用户提供建议,包括向用户提供失效服务的可替代服务信 息以及询问用户是否放弃失效服务。 0083 若用户接受建议,则完成性约束条件会因此而改变,替代服务是否会导致对此域 进行补偿需要进一步的评估,这通过评估更高一级域中有关于此域的CCC来完成,若需要 对此域进行补偿,则此域的协调者向更高一级域抛出”UnatomicException”,。

39、并等待来自高 一级域的协调者发出的补偿命令;若 不需要进行域的补偿则只通过对域中的ICCC进行评 估来在域中对服务进行补偿,在这样的情况下,补偿仅在异常发生的域中进行,协调者并不 向上一层协调者抛出”UnatomicException”,因为替代服务并不代表此域出现了异常。 0084 在补偿之前对服务a的可忽略补偿约束条件进行评估时,服务a对应的可忽略补 偿约束条件可能涉及到除a之外的多个服务,这些服务中的某些可能还未被调用。在这样 的情况下,我们对于这些还未被调用的服务采取乐观的期望,所涉及到的可忽略补偿约束 条件评估结果为真。这是因为出现失效服务的域立刻会被重新执行,此时的补偿只是用来 对。

40、将被替换的服务所造成影响导致的不一致性进行消除。这种乐观的评估策略使得因为可 忽略补偿约束条件不满足而必须补偿的服务更少。在补偿之后,被补偿的服务必须重新执 行,以使得替代服务得以执行。 0085 如图2所示,根据上下文属性信息以及服务s的异常属性约束对异常e进行分类, 说 明 书CN 102780753 A 10 7/9页 11 根据分类来确定恢复开始点的具体方法如下: 0086 (1)设 为服务s的异常属性约束集,将恢复开始点StartOfRecovry初始化 为空。设异常类型t,其中的元素按序分别代表网 络设备暂时不可用异常属性约束、网络设备永久不可用异常属性约束、可替代物理异常 属性约。

41、束、不可替代物理异常属性约束、服务限制异常属性约束、服务描述异常属性约 束和用户异常属性约束。对于 中分别对应于上面七种异常的的七种异常属性约束 按序将其赋值给 进行(2)到(12)步骤的操作。 0087 (2)将初始化为 的类型所对应的上下文类型向量,转(3)。 0088 (3)设一个标记为一个谓词或操作。初始化谓词栈predicateStack为空,操作数 栈operaterStack为空,当前标记curToken为空,评估结果result初始化为true。 0089 (4)获取下一个标记,赋值给curToken。若curToken不为空则转(5),否则转(9)。 0090 (5)若cur。

42、Token是谓词则转(6),否则operaterStack将curToken入栈。 0091 (6)若此谓词为”&”则转(7),否则predicateStack将curToken入栈。 0092 (7)operaterStack出栈,predicateStack栈顶元素赋值给topPredicate。根据 对topPredicate进行评估,若topPredicate不满足,则predicateStack将”false”入 栈;否则predicateStack将curToken入栈。 0093 (8)转(4) 0094 (9)若predictStack非空,则转(10)。 0095 (10)将。

43、predicateStack栈顶元素赋值给topPredicate,predicateStack出栈。 0096 根据对topPredicate进行评估,如果topPredicate被满足,则转(12)。 0097 (11)将false赋值给result。 0098 (12)异常属性约束评估结束。如果result为true,则将t赋值为 所对应的异 常类型,转(13),否则转(1)。 0099 (13)如果ta,a,a,则将StartOfRecovery赋值为RETRY,否则若 tb,a,b,则将StartOfRecovery赋值为REPLACE,否则若tb,则将 StartOfRecover。

44、y赋值为INTERACTORCOMPENSATE。RETRY代表重试、REPLACE代表替代服 务、INTERACTORCOMPENSATE代表与用户交互或补偿。 0100 域的补偿方法如下: 0101 (1)设SS为域内已完成和正在执行的服务集合,cSS为SS的一个副本,需要补偿 的服务compS初始化为空。 0102 (2)若cSS为空,转(8)。 0103 (3)获得服务s的可忽略补偿约束条件集合rs,转(4)。 0104 (4)对rs中的每一个可忽略补偿约束条件ic。 0105 (5)若ic被满足,转(4),否则转(6)。 0106 (6)将tempSS初始化为与ic相关的在cSS中但。

45、不在compS中的服务集合,并将其 加入compS,将tempSS从cSS中去除。 0107 (7)对tempSS中的每一个ts,进行(2)到(6)的操作。 0108 (8)对cSS中的每一个服务css,获得其可忽略补偿约束条件集合rs,转(9)。 0109 (9)对rs中的每个可忽略补偿约束条件r,若r被满足,转(9),否则将css加入到 说 明 书CN 102780753 A 11 8/9页 12 集合compS中,转(7)。 0110 (10)根据域内的逻辑规则LR对compS中的服务进行补偿。 0111 对一个域进行补偿,目的是为了通过执行补偿服务使域恢复到某一个状态,而满 足一定的约。

46、束条件,获得一定的一致性,在从补偿开始到补偿结束的过程中,需要对若干个 原子服务和域进行补偿,我们称对一个原子服务或域进行补偿的过程为一个补偿步骤。对 于一个补偿步骤,有补偿开始点和和补偿目标。对一个原子服务或者域进行补偿就是从其 对应的补偿开始点到补偿目标的过程;对一个业务事务进行补偿就是其中的若干补偿步骤 的执行过程。 0112 对一个原子服务进行补偿,需要执行其对应的“补偿服务”。“补偿服务”的执行 的目的是取消原服务执行所造成的影响,而能够达到这个目的的服务不必要是一个原子服 务。补偿服务完成的操作与原服务比起来可能更加复杂或者有更多需求,因此可能需要多 个服务按照一定的流程组合起来完。

47、成对此原子服务的补偿,即一个原子服务的补偿服务不 一定是原子服务,而可能是组合服务。同理对一个域的补偿也不一定需要同样多的原子服 务,而可能仅仅一个原子服务便能满足其补偿需求。 0113 为了达到某个补偿步骤的补偿目标,必须完成一定的补偿任务,而这些补偿任务 的完成必须通过具体的补偿服务来实现。补偿任务是从某个补偿步骤的补偿开始点到其补 偿目标的子步骤,每个补偿任务都有其相应的子目标,完成某个补偿步骤的过程就是从补 偿开始点依次通过补偿任务到达各个子目标,最终到达补偿目标的过程,我们把这个过程 成为补偿路径。从补偿开始点到补偿目标,可能存在多条补偿路径,每条路径上的补偿任务 是不同的,补偿任务。

48、的数量也有可能是不同的,但所有的补偿路径都从异常状态开始而结 束于补偿目标。补偿任务的实现依赖于具体补偿服务,但能够实现某一个补偿任务的具体 补偿服务通常不止一个,因为可以通过某些定性或者定量的标志来表示子目标的达成,但 使得这些定性或者定量的标志被满足的方式可以是多样的。我们把对应于某一个补偿任务 的可能的具体补偿服务表示成一个抽象补偿服务。 0114 定义一个具体补偿服务C的预置条件为: 0115 Requirement C (p 1 ,rel,v 1 )op(p 2 ,rel,v 2 )op.op(p n-1 ,rel,v n-1 ) 0116 其中rel,op。其满足判定方法参见权利要求3中 (3)到(11)步。 0117 一条补偿路径上有一个或多个抽象补偿服务,这些服务被实例化后成为具体补偿 服务,一条补偿路径的实例化是指其包含的所有抽象补偿服务的一次实例化,即所有的抽 象补偿服务都被绑定到具体的服务。每一个具体补偿服务的执行都需要一定的开销。对于 用户来说,对这些开销的敏感程度是不一样的。 0118 补偿路径P对应于实例化I的类型为t的开销可如下表示: 0119 0120 其中V C,t 是具体补偿服务C的类型为t的开销,X是由于服务间的相互作用而需 要扣除的开销。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1