论文部分内容阅读
面向服务的架构是一种软件架构风格,它能够重用、组合具有松耦合特征的服务构建、维护、集成应用以改进贯穿整个应用生命周期中的生产率以及成本。在SOA中,每个应用通常被设计为一个工作流以及若干具体的服务。每个服务封装了一个应用组件的功能以及信息资源,工作流定义了服务之间如何相互作用。服务等级协议(SLA)定义了施加于工作流实例的端到端QoS需求。工作流中的抽象服务需要绑定具体服务以满足SLA约定的QoS约束。在实际的场景中,很多服务之间具有QoS关联关系。因此为某个抽象服务选取关联服务时需要考虑其他抽象服务与服务间的绑定关系。目前的研究都假设服务间的关联关系已存在或者服务提供者已经声明了与之具有关联关系的服务。在关联服务的应用层面,这些研究都集中于为Web服务建立关联QoS模型,最后基于关联QoS模型进行服务选取。然而,这类方法在实际中存在诸多问题。首先,由于造成服务之间具有关联关系的原因比较复杂(例如,服务的部署环境),难以直接分析出哪些服务具有关联关系,进而影响关联关系在组合服务中的应用;其次,很多不同的应用可以通过具有关联关系的服务实现相似的功能性需求,现有的研究大都忽略了如何将关联关系作为一种可重用的知识应用于其他具有类似功能的系统中;此外,这些研究只考虑了如何在关联关系出现的情况下进行初始选取,忽略了服务异常时,如果已完成的服务与未完成的服务之间具有关联关系时,如何对组合服务进行重选取;最后,这些方法只能解决单个SLA感知的服务选取问题,忽略了云环境下组合服务需要为不同的用户提供具有不同QoS等级的组合服务实例。为解决上述问题,本文研究了一种基于服务关联模式的组合服务选取方法。该方法利用数据挖掘等相关技术,基于Web服务以往的执行、调用信息分析出具有QoS关联关系的服务以及建立组合服务业务模型的知识,作为组合服务业务建模与选取的基础,以提高单SLA与多SLA的选取质量。围绕着这一思路,本文在以下方面展开了研究。(1)针对难以直接分析出哪些服务具有质量关联关系以及如何将关联服务作为一种有效的可重用的知识,本文提出了一种服务关联模式的提取方法。该方法基于组合服务以往的执行信息,挖掘出同时执行时效果比较好的服务作为具有QoS关联关系的服务。并根据服务调用事件日志,推理出组合服务的控制流程结构。最后,提取出关联抽象服务,关联服务组成了这一类抽象服务的备选服务集。将关联抽象服务及其对应的QoS关联服务、施加于关联抽象服务上的控制流程结构记录为服务关联模式。抽象服务与控制流程的设计反映了领域专家根据业务需求分解出业务活动,并建立这些活动之间逻辑关系的领域知识。重用服务关联模式可以避免对已存在解决方案的问题上消耗大量的资源,并且使用得到频繁验证的QoS关联服务也可以获得良好的实践效果。(2)针对如何根据用户的功能性需求选取服务关联模式构建组合服务工作流程的问题,本文提出了基于输入、输出匹配的服务关联模式选取方法。该方法将关联抽象服务的输入、输出参数与用户提供的输入、期望得到的输出之间进行匹配,选取出能够匹配或部分匹配用户请求的关联抽象服务。选出的关联抽象服务对应的服务关联模式作为领域知识用于构建组合服务工作流程,其包含的QoS关联服务则用于支持服务选取以提高选取质量。(3)针对如何基于服务关联模式进行组合服务选取以及异常情况下进行服务重选取的问题,本文提出了支持关联QoS的服务选取以及考虑已完成的服务与未完成服务之间具有关联关系的重选取方法。该方法首先给出了关联QoS模型,并给出了支持关联QoS的组合服务选取方法。然后,在组合服务重选取方法中,根据关联关系对剩余工作流程中抽象服务的影响程度,将工作流程中的抽象服务分为不同类型,找出每一类型抽象服务的备选服务集合。最后基于更新后的备选服务集重新选取出可执行的组合服务实例。从而支持组合服务的选取与重选取,提高组合服务的选取质量。(4)针对支持关联QOS的多SLA感知的组合服务选取问题。本文给出了关联情境下支持多QoS间服务共享的组合服务选取方法。该方法将具体服务实例作为共享资源,使其能够被具有多个SLA等级的组合服务实例共同使用。并以服务之间的关联QoS为基础,给出了共享服务的QoS聚合函数。从而避免了由于某一类用户独占了高性能的服务实例,造成无法为其他用户找到可行解的问题。同时也提高了服务实例的利用效率。