5.1.2 基于服务层的服务组合自愈策略SRBSL
VANETs车辆节点的快速移动导致服务链路频繁断裂, 组合服务失效无法避免, 但从另一方面来看, 这样的高动态性也在覆盖范围内带来了更多新的关于失效服务的可用服务副本, 为组合服务的恢复提供了可能。 因此本书提出了一种基于服务实例层的服务组合自恢复策略 (Service Recovery based on Service Level, SRBSL), 该算法依托服务实例层中实时维护的服务副本替换策略完成对失效组合服务的重建。 服务组合自愈策略SRBSL是一种典型的先验式的服务组合恢复策略, 它是在服务组合失效之前就根据服务组件稳定性分析与当前服务链路状态选择并维护备份服务副本, 一旦当前服务失效, 将根据实际情况启用SRBSL先主动、 后反应的修复策略。 对于服务失效概率极大的VANETs环境, SRBSL服务恢复策略是一种有效地重建策略。

图5.4 备份服务替换策略
SRBSL恢复策略主要包括三个进程, 如图5.5所示。
(1)init()初始化
创建除服务组合执行路径之外的备份服务节点和备份路由, 并将这样的备份信息返回给服务实例层;
(2)repair()修复
SRBSL首先采用主动备份恢复策略 (Proactive Failure Recovery,PFR),PFR策略属于局部修复, 即利用备份服务采用本地修复策略来进行会话期间组合服务的恢复, 新建服务路径在保证QoS约束的同时要与之前失效服务路径保留最大重叠度; 当基于主动备份的PFR无效, SRBSL就发起反应式修复策略 (Reactive Failure Recovery,RFR) 重新发起端到端的服务发现、 选择进程, RFR是一种全局性修复。

图5.5 SRBSL的三个主要进程
主动备份恢复算法PFR。 PFR进行服务组合恢复的基本思路是: 令当前服务组合路径上各服务组件对应的服务副本始终保持启动状态, 作为备份服务与服务路径上的最初服务实例保持同步执行。 PFR会选取最先返回的结果作为服务组合的执行结果。 事实上在原服务执行路径发生中断时, 立刻启动关于失效节点第一个备份服务执行的同时, 发现、 选择第二个满足QoS需求的服务副本作为备份服务并启动。 该策略确保在服务组合过程中始终提供满足当前服务组合需求的次优服务实现同样的功能需求并返回服务组合执行结果。 该算法的具体描述如下:

②反应式修复策略RFR。 在服务组合路径的恢复过程中, 只有在主动备份恢复失败即关于失效服务组件其所有备份服务的替换策略都无效时, 才启动反应式修复策略。 即当某服务节点及其所有的备份服务同时失效, PFR不可恢复时, 采用反应式修复策略RFR进行全局性的服务发现、 选择过程, 重新建立服务路径, 该策略是一种全局性的修复策略, 修复算法就是按照第三章提出的服务执行路径选择算法重新发现并建立一条满足用户QoS需求的服务路径。
(3)adjust()调整
调整并更新备份服务副本, 或发现性能更佳的服务路径后, 可对当前服务路径进行调整和替换。 为有效实现服务的快速恢复及重建, 需要预先解决两个关键问题: 第一个是如何选择备份服务, 第二个是选择多少个备份服务比较合适。 针对于第一个问题, 本书选择备份服务的参考依据有两个: QoS属性要满足用户的服务组合需求; 备份服务所在的服务路径要与服务失效前服务路径的重叠度最大,即Bankup Service= sisi∈{Popt=argmin CPS→P′S}{ }。对于第二个问题, 维护大量的备份服务势必造成网络资源的浪费, 但提供的服务副本数量过少, 服务质量和故障弹性又没有保障。 为在两个矛盾需求中进行折中, 本书借鉴Gu [28] 思路, 采用一种自适应的服务备份数量确定算法,则备份服务的数量NBankup可表达为:

其中,U为可容纳备份服务数量的上限,“⎿」”为向下取整, 表示取比括号内小的最大整数,C为服务发现过程中找到的可满足用户QoS需求的服务副本总数。q PSi 表示服务路径PS上完成第i种功能的服务组件的服务质量,qreqi 表示用户对该服务组件的服务质量需求,FPS表示该服务路径PS失效的概率,Freq表示用户对于服务失败概率的容忍度。