第一章 绪论
1.1 研究背景
随着互联网技术的发展,基于 Internet 的服务日益增多。在诸多实际应用中,服务处在一种动态分布的环境中,各种异常都可能影响服务的质量,严重的会导致整个组合流程的终止。为了确保流程正常运行,在发生故障或者失效情况下准确地找到满足替换的服务,实现服务替换至关重要。在一份关于 Web 服务的报告中指出[1]:88%的用户遇到过在线服务失效的问题。服务的失效必然导致服务应用的失败,庆幸的是在整个网络环境中完成某个功能的服务绝大多数情况都不是唯一的,为了不因为某个服务的失败而导致整个组合服务执行终止,可以通过寻找替代服务来提高组合服务的可信性,在基本不影响到用户的情况下使组合服务应用继续运行。因此,在服务替换中,快速找到待替换服务,对失效服务进行替换是服务替换领域亟待解决的重要问题。
服务替换是指在组合服务的上下文中,一个新服务替代一个原始服务,并能保证系统本质属性不变。实际应用中,由于服务平台及应用的可伸缩性,服务本身的不确定性,导致服务呈现高度动态性,服务 QoS 变化甚至服务失效也成为实际应用面对的严峻挑战[2-4]。服务替换的主要问题在于服务选择与语义验证,包含服务描述、服务选择和替换验证[5-6]。一般的服务替换是针对单个服务和已失效服务的基础上进行替换,对服务 API 进行替换更新[7-8]。
现实中,很多业务都具有相似的特点,例如旅行服务,其中交通方式这一抽象服务可分为火车、汽车、飞机等出行工具候选项,将其归类到一起可作为一个抽象的交通方式群组服务中。当其中任一服务发生故障,可选择其他服务进行替代[9-10]。再如旅行业务(如图 1.1)的付款方式可以分为支付宝、微信、银联卡等付款方式。当某一支付方式不能满足时,可选择其所在业务下另一方式进行替换。在复杂的场景中,运用群组服务的思想,不仅可以扩大可替换服务的查询范围,还可以提供更多的备选服务,提高查询效率。本文正是考虑到当前服务替换方法存在的问题,进行了面向群组服务的替换方法研究。
.............................
1.2 研究现状
(1)服务兼容性和一致性
服务兼容性是针对服务交互过程而言的,若两个服务之间的相互关联路径均为正确关联路径,则这两个服务是完全兼容的;若至少存在一条有效交互路径,在这两个服务是局部兼容一致的。服务行为兼容性判断和定量计算,对实施服务动态组合和服务的动态替换具有重要的指导作用。Wu Zhaohui[13]等人提出基于π-calculus 的服务兼容性的概念,若是总存在至少一个交互序列能够使服务双方分别进入终止状态,则这两个服务是兼容的。李喜彤[14]等人基于着色 Petri 网建模 Web 服务,并对服务进行相容性和相似性分析。相容性用来保证服务组合的正确性,并在相容性分析的基础上给出了服务相似性判定算法。张敬周[15]等人提出了基于行为自动机的构件模型并进行了可替换性分析与验证,
提出了四种可替换性模型。
(2)组合服务替换相关研究
服务替换是维持 SOA(Service Oriented Architecture,SOA)下的计算机系统长期稳定的重要措施,服务替换问题讲的是,服务组合环境下发生故障或者失效的服务后,选出新的备选服务代替服务中失效或故障的相关服务,并且还能确保替换前后的整体服务上下文环境保持系统原有 QoS 属性,不影响整体运行效果[2]。张明卫,张斌[3]等人提出一种基于组合服务划分的选取方法,将根据数据库日志记录的服务 QoS 信息选取出性能优越的组合服务执行案例,查找出频繁运行的服务集合,于是对得到的组合服务进行分组划分,构建成组合服务点以及对应的点模式,将服务点为最小的单位以此作为组合服务选取。
(3)服务替换相关研究
服务替换研究初期,许多研究文献在服务投入运行之后,根据需求改变选择另外一个与其完成同样功能的 Web 服务,选择出的服务在替换旧的服务之后,新的组合服务可以运行,则选择出的服务和旧的服务是满足替换的。Joshua Church 等[19]提出信息服务的形式化模型,将模型放在给定的度量空间中,并允许服务有任意复杂的输入和输出领域。在替换过程中,寻找服务中最相似的一个服务,作为备选服务。将嵌入服务的空间分成一个向量空间,搜索在目标空间中的最近的邻域。Jingke Meng,Zibin Zheng 等[20]提出一个模型称为基于权重的矩阵因子分解,可以根据用户的特定兴趣并给出更准确的预测这些应用程序,将用户视为一个项,每个用户作为一个向量值。计算每个应用程序的目标的权重用户。通过使用项频率来计算,引入矩阵分解预测程序评分。
..............................
第二章 基础理论知识介绍
2.1 面向服务的体系结构 定义
1:面向服务的体系结构:面向服务体系结构(Service Oriented Architecture,SOA)是一种松散的架构模型,通过互联网对松散耦合的粗粒度服务利用已有的组件对其分布式部署组合和使用[26-27]。在 SOA 架构下,Web 服务可以通过标准的 Web 协议产生,形成一种自描述、模块化、用 URL 标识的应用程序,并保证在不同的平台、不同的编程语言编写的代码程序下的无缝操作,和传统的体系相比 SOA 让不同资源之间的松散耦合关系更加灵活[28-29]。
Web 服务是一种构建应用程序的普遍模型,它是一种新的 Web 应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位和通过 Web 对其调用。
Web 服务体系架构如图 2.1 所示,包含三个参与者(服务提供者、服务请求者、服务注册中心),三个操作(发布、查找、绑定)以及两个对象(服务、服务描述)。
......................
2.2 服务聚类
2.2.1 服务模型
一般的,服务模型可以用于表示服务在多个项目之间的表现形式。很多服务符号化描述的相关文献中,存在很多该概念的变体,比如服务流程建模、服务相容性和一致性服务组装、OWL-S(OWL Web Ontology Language for Service)和 WSMO(Web Service Modeling Ontology)描述 Web 服务各个侧面的多个视图[30-31]等等,它们也同样都是服务模型的表示方式,其内在含义都有相似之处。
服务模型获取方式大致分为抽象服务获取和实体服务获取两种:
(1)实体服务
实体服务是现实生活中存在的实际的服务内容,一般都是各个业务中的重要表现形式,现有的服务发现技术通常将 Web 服务称为是单独的,通常仅发现服务固有的属性,较少考虑以及根据服务之间的关系考虑服务发现,将实体服务引入服务关系模型中将会提高服务发现效率。
文献[32-33]则要求服务对消费的服务关系划分,对流程以及数据库等做流程分析。群组服务替换模型给服务快速发现以及服务高效率替换提供了便捷的方式,可以根据属于某一个群组服务,快速的找到满足条件的替换范围。
(2)抽象服务
抽象服务获取则相反,是一种抽象层次的服务,是将现实意义的服务抽象成一个流程结构,而不再是一个具体的名字和某一个操作和接口。
例如,可以从服务的本质行为的数据中学习服务[34]的特点,或者根据服务流程中的关键词,并使用 TF-IDF(文本分析)算法学习流程中可能的关键信息。如果获取比较丰富的抽象历史行为数据足够多,抽象服务获取方法能够在建立群组服务的前提下得到最大形式的创新,将群组服务提供等效功能服务的 Web 服务聚集起来,构建群组服务,使其在调用过程中出现故障时候,能动态替换另一个等效服务来恢复正常的服务执行,提高 Web 服务的容错能力,以满足海量并发 Web 服务请求环境下对服务的高可用性要求。
与传统替换系统中的服务替换分析方法相比,群组服务替换系统对抽象服务和实体服务的获取以及信息的转换更为关注,因为用抽象服务获取方法更容易获得服务的流程目标。例如,消费者在某一个服务行为过程中一个抽象的行为模式下会产生多个可执行的序列,当故障或者失效服务发生时候,能够在抽象服务下找到多个相关联的实体服务,完成服务执行效果。文献[35-36]对服务层次等级化划分,对容易发生故障的服务多目标处理,更明确的找到可满足条件的服务。
...........................
第三章 基于改进 K-means 聚类算法的群组服务构建方法 .......................... 12
3.1 研究思路 ........................... 123.2 抽象服务与实体服务 ....................12
3.3 相似服务提取 .................... 14
第四章 基于加权序列模式挖掘模型的群组服务替换 ......................... 23
4.1 研究思路 ................... 23
4.2 加权服务序列 ..................... 23
4.3 基于加权服务序列的替换算法 .................... 24
第五章 原型系统与应用示范 .......................... 32
5.1 群组服务推荐原型系统 ............................ 32
5.1.1 背景介绍 ......................... 32
5.1.2 系统结构 ...................... 32
第五章 原型系统与应用示范
5.1 群组服务推荐原型系统
5.1.1 背景介绍
近年来,由于互联网技术的不断发展,网络上的服务数量也随之急剧增长。涌现出大量功能相同而服务表现形式不同的服务,譬如当下的单车服务和支付服务分别有不同公司来处理这一服务序列,摩拜和 ofo、hello bike 等单车都可以完成骑车服务,支付宝、微信以及银联卡都可以完成支付服务等等。但是,由于网络阻塞、负载均衡等各种因素,可能会出现失效服务。因此,服务替换理论及其相关技术逐渐成为热门研究课题,如何快速找到相同功能的服务以及在服务失效前对其有效替换,来保证组合服务的高效运行,成为亟待解决的问题。
5.1.2 系统结构
服务推荐原型系统的开发平台为 Linux OS,开发模式采用 B/S 架构,选用了 Eclipse JAVA开发软件和 MySQL 数据库,其余相关技术涉及 JSP,Hibernate,Spring,easy-ui 和 HTML5等。
原型系统中所构建的服务替换原型子系统以本文所提出的方法研究为技术基础,服务替换原型子系统的流程主要包括以下几个阶段:首先利用聚类算法做为必要的准备阶段,再实施服务序列加权模块和序列模式挖掘这两个中间环节,最后通过群组服务替换模块。构建的群组服务替换系统以本文基于 K-means 聚类的群组服务构建方法和基于加权序列模式挖掘模型的群组服务替换方法为技术基础,根据构建好的群组服务,通过对服务的序列特点做加权处理,最后对满足替换条件的服务做替换。原型系统的结构图如图 5.1 所示。自下而上分为:基础理论、技术路线、原型系统。原子服务经过基于 K-means 聚类的群组服务构建技术形成服务资源池,即图中最后的服务推荐原型系统。通过序列模式挖掘分析对频繁服务加权处理,得到满足用户和网络服务序列频繁出现的服务,达到替换服务的条件,过程中运用相似度判断,马尔科夫模型检测失效服务本文的面向群组服务的替换仿真系统的各个子功能都是本文提出的方法在后台实现。
........................
第六章 总结与展望
6.1 工作总结
本文针对服务替换中群组服务替换方法展开了研究工作。首先介绍了群组服务替换研究的背景,阐述了群组服务替换出现的原因以及研究意义;其次从群组服务构建的角度,探讨如何将现实服务中抽象服务与实体服务的关系建立联系,提出一个基于改进 K-means 聚类算法的群组服务构建方法;然后,从群组服务替换角度出发,研究如何获得加权服务来提高可替换服务的查询范围,以达到过滤群组服务中的干扰数据来降低服务替换的计算复杂度,并且如何为复杂的服务环境下找到合适的服务达到最佳的替换效果。最后通过实验仿真于原型系统展示了本文所提方法的可行性于有效性,以上工作的成果如下所示:
(1)提出一种基于服务相似性与兼容性检测算法。考虑到服务非功能属性的多样性,对服务非功能属性进行形式化语言描述,利用服务的抽象与实体关系,划分出兼容性一致和非功能属性一致的服务。
(2)提出一种基于改进 K-means 聚类算法的群组服务构建方法。基于上述方法得到兼容性一致的服务,根据 K-means 聚类算法对服务聚类,得到群组服务。
(3)提出一种加权序列模式挖掘模型的群组服务替换方法。通过加权频繁服务,过滤其它无关服务,根据序列模式挖掘模型挖掘失效服务与频繁服务关联度,最终完成服务替换。
(4)基于旅行场景设计并实现了群组服务替换的原型系统。在原型系统的设计中,阐述了整个原型系统的各个模块之间的关系以及与本文相关的模块所利用到的技术和理论基础。在设计整个系统时,遵循标准的软件工程设计的标准,实现了相似服务提取、群组服务聚类、加权服务和服务替换等功能。验证了本文所提出的基于 K-means 聚类的群组服务构建方法、基于加权序列模式挖掘模型的群组服务替换方法等关键技术的有效性和实用性。
参考文献(略)