1.2 服务互联网运行环境需求与挑战
对服务互联网的研究囊括了总体体系结构、设计、运行和重构等各方面,本书则主要聚焦其中一个方面,也是其中一个关键方面,即服务互联网运行机制。服务互联网运行环境需要满足如下需求。
(1)服务互联网运行环境需要支持复杂服务网络的分布式运行。该服务网络依托一个第四方服务平台(集成服务提供商、服务用户及服务中介),支持服务中介利用多方计算资源提供新型服务方案,服务方案的物理分布对服务中介是透明的。以科技服务业为例,新型科技服务方案是指根据用户的需求,将各领域、各行业的科技服务资源汇聚在一起,通过多个参与方的协同来完成科技服务,满足用户的需求。服务互联网运行环境需支持新型服务方案的部署和运行。由于不同的参与方可能有自己的数据中心或计算资源,方案的运行是中介利用多个参与方的计算资源协同完成的,因此,服务互联网运行环境是一个分布式的服务互联网部署运行环境。在这个环境中,服务方案的物理分布对服务中介是透明的,运行环境的管理者(往往是第四方科技服务中介)可以利用多方计算资源对服务方案的运行进行优化。
(2)服务互联网运行环境中服务方案的部署运行需要满足各方对资源的约束。服务方案的部分片段由于数据和流程保护等原因,具有天然的业务约束,如只能部署在特定参与方且由该参与方负责片段运行的控制、参与方对服务方案运行所占用计算资源的约束、用户对服务质量的需求等。
(3)服务互联网运行环境需要支持多租户的运行、管理及监控,保障服务方案运行的可靠性,优化运行效率。在服务互联网运行环境中,服务提供者(如第三方中介)是以租户为单位、以软件即服务的模式使用服务互联网运行环境的。在运行环境中,运行的服务方案具有多样性,既有实例密集型的,如在医疗养老服务领域,病人或老人用户以千万计,许多服务(如诊断服务)都需要为每个用户生成一个服务方案的实例;也有数据密集型的,如科技服务中的科技检验检测服务往往涉及大量实验数据的存储和处理。在多样性的服务方案部署运行时,需要利用其特点,有针对性地采用不同的优化手段利用资源,并且在各参与方的计算环境或服务方案变化时,持续进行优化。
(4)服务方案运行时重构、智能交互与交付。在现实世界中,存在大量无法预先进行完整定义的服务方案。例如,科技服务中的技术预见服务,由于涉及深入的专业知识,任务本身具有很大的不确定性。其往往需要科技咨询服务人员、相关领域的多位专家协同,在服务方案运行的过程中,根据服务方案运行的中间结果,以探索的方式来调整后续执行的活动或服务。调整的中间结果往往又需要反馈到系统中,再由用户根据系统反馈结果进一步调整,如此反复迭代,逐步完善服务方案的执行,最终生成服务方案的交付物。
针对上述四个方面的需求,本书主要从服务互联网运行环境的体系结构、服务资源的组织和管理、服务的智能交互与交付、服务方案的分布式调度与可靠运行、服务方案的运行时演化方法五个方面关注服务互联网运行环境。
在服务互联网运行环境的体系结构方面,在服务互联网的参考体系结构的基础上,本书聚焦探讨服务互联网运行架构的原理和实现。在早期分布式环境下,系统一般是C(Client)/S(Server)体系结构,在运行时,服务器通常采用紧耦合的消息应答方式来为客户端提供服务。由于在分布式环境下,紧耦合的消息应答方式不能对程序员隐藏分布的特性,于是出现了分布式对象。分布式对象将分布的特性隐藏在对象接口之后,在分布式对象范型中,客户端和服务器之间简单消息应答方式的通信,渐渐融入了事件与通知、消息队列、命名、安全、事务、持久化存储和数据复制等服务。随着面向服务体系结构(service oriented architecture,SOA)的出现和发展,客户端和服务器之间消除了对语言、平台、厂商、访问地址的人工依赖,具有了更好的松耦合特性。随后出现的事件驱动的面向服务体系结构(event driven service oriented architecture,EDSOA)则进一步从空间、时间和同步、控制流等维度消除了客户端和服务器之间的依赖。从分布式系统运行控制的角度,根据控制是单一机器或数据中心集中控制还是分散控制,可将相应的体系结构分为集中式体系结构与去中心体系结构(或分散式体系结构),与前者相比,去中心体系结构具有可靠性更高、参与节点自治、有效利用边缘计算资源等优势。
动态性和大规模性是服务互联网的特点之一。在服务资源的组织和管理方面,由于服务互联网是大规模的服务生态系统,传统基于分类的方法无法有效组织大规模服务间的各种联系。Fallatah等人提出建立服务间、用户间及用户-服务间的链接以构造服务网络,基于这种网络可以测量服务的流行度和用户满意度等指标,但该工作并未给出构造这种服务网络的具体方法(Fallatah et al. 2014)。为了给服务间加上链接,从服务的文本描述挖掘的语义相似性可以作为服务间联系紧密度的指标,Wang等人利用领域知识计算服务间的语义匹配度并用简单的设定阈值参数的方法来决定服务网络中链接的数量(Wang et al. 2010)。Feng等人基于服务间的包含、输出包含输入及输出部分包含输入关系建立服务网络(Feng et al. 2015)。显然,上述工作是构造静态服务网络的方法,服务的动态性和瞬时性并没有被考虑在内。在过去的20多年里,复杂网络理论伴随互联网的快速发展也取得了一些重大突破。其中,进化网络模型研究探索网络的动态行为(包括节点和边随时间的动态增减)对网络拓扑结构的影响,如对现实存在的互联网、万维网和社交网络等大规模网络的拓扑结构的影响,因此其非常适合用来为具有动态性和大规模特性的系统建模。因此,不少研究者基于进化网络模型研究服务网络,如Chen等人提出一种基于Bianconi-Barabási模型(BB模型)(Bianconi et al. 2001)的服务网络构造方法(Chen et al. 2015),但在基于进化网络模型研究服务网络的工作中,探索网络的动态行为方面的工作还比较缺乏。总之,服务互联网中服务资源的组织和管理仍然处于起步阶段,如何构造服务网络、如何评估基于不同模型的网络对组织管理服务互联网的有效性,以及如何设计基于服务网络的发现机制和算法等问题有待进一步探索和研究。
在服务或服务方案运行过程中的服务交互可分为两种:一种是服务或服务方案相关的人机交互;另一种是服务/服务方案之间的交互。早在20世纪90年代,路甬祥等人就提出了“人机一体化系统”的科学发展方向、理论体系和关键技术,认为要充分发挥人在系统中的作用,建立一种新型、和谐的人机协作关系,以产生高效益、高性能的系统(路甬祥等1994)。国际上关于智能人机交互的研究主要包括多通道交互、自适应交互等方面。多通道交互是指利用物联网、虚拟现实等技术,融合物理世界和信息世界,将文字、语音、动作等多种交互通道利用起来;而自适应交互是指根据用户的偏好或特征,为用户提供适合的交互方式和交互内容。近年来,让大规模及具有不同期望、价值和目标的用户以动态群组的方式实现复杂任务处理的众包、群体智能也成为一种重要的发挥人在系统中作用的手段。服务或服务方案相关的人机交互方式,即用户参与服务/服务方案构建和运行的方式,主要包括在建模时允许用户参与参数设置与修改、服务组合逻辑的配置等,以及在运行时让用户参与服务组合逻辑的在线调整、系统对用户的推荐提供及迭代优化。本书作者提出了服务超链,使最终用户在组合过程不确定的情况下,可以像“网页超链接”一样选择业务层面的用户可理解的服务,使系统能即时向用户推荐服务,辅助用户快速完成编程和组合过程,实现探索式的即时服务组合和应用构造(韩燕波等2006,Yan et al. 2008);还提出了一种基于嵌套表格的在运行时对服务组合进行调整的交互方式(Wang et al. 2009,Wang et al. 2015)。中科院软件所则提出了一种在移动计算环境下的探索式服务交互机制(白琳等2015)。虽然已经有这些研究基础,在大规模服务个性化定制、追求更高的服务质量和更好的用户满意度的服务互联网环境下,还需要对运行时探索式的服务交互机制进行深入探索。
根据前面的介绍,纵观服务计算的发展,服务的交付方式经历了从Web服务、云服务到服务方案或大服务的发展过程。能够满足包括第三方/第四方服务中介用户在内的大规模用户需求的服务交付方式不再是单一的Web服务或云服务,而是由跨世界(现实世界与数字世界)、跨领域、跨区域、跨网络的海量异构服务经过聚合与协同形成的复杂服务形态(或复杂服务网络)。服务互联网环境下的服务交付的分类、层次结构、实现机制等亟待进一步研究。
在服务或服务方案运行过程中还存在另一种服务交互,即服务/服务方案之间的交互,其主要需求来自服务互联网中跨组织、跨域的服务协同,其主要问题是服务方案的分布式调度与可靠运行。传统集中式的流程执行方法需要将数据移动到位于集中控制节点的服务流程中统一处理,增加了网络通信负担和流程执行时延。可以通过将大服务或服务方案对应的流程切分为若干个子流程,并将这些子流程以分布的方式部署和执行来缓解此问题。现有工作有基于流程元素的空间属性等特定属性进行流程切分的方法,但如何在特定不同的约束条件下对流程进行切分以达到某一种或某几种性能优化的表现,需要考虑流程元素的外部和内部多种因素。传统的方法往往只解决流程元素负载事先已知的流程切分问题,对运行过程中流程元素负载动态变化的问题无能为力。
相比传统服务集成/协同,跨网跨域的服务互联网的客户需求及计算环境更加复杂且更加频繁地发生变化,加剧了软件系统发生变化的频率和复杂程度,软件运行时演化和重构研究面临更大的挑战。然而,目前针对服务互联网应变动态演化方法与重构理论还缺少系统性的研究。当前,关于服务协同软件演化与重构的研究主要关注在系统持续迭代过程中,服务的按需动态组合共享和性能持续优化。服务的演化可分为静态演化和动态演化两个方面,前者指服务实例处于非运行状态时服务从原版本升级为新版本,后者指正在运行的服务实例发生的服务模型变化。服务的演化从实现方式上来看,主要包括服务接口参数演化、失效服务替换、结构演化等接口参数、接口、流程结构等不同层面的演化。静态演化研究的主要挑战在于如何保障演化后服务模型的正确性及其与已有服务约束间的一致性;动态演化涉及如何将变化动态地传播到正在运行的服务实例上的问题,其主要挑战在于如何保障服务实例迁移的正确性和迁移检验的高效性。无论是静态演化还是动态演化,都离不开模型层面的演化研究,本书主要关注演化模型的验证和分析。除了关注个体服务及服务流程的功能、行为特征演化研究,还有学者关注对服务协同软件系统及其所处环境的整体分析,即从复杂系统角度,基于复杂网络建模分析等方法对服务协同软件系统整体拓扑形态和特性的演化进行分析。然而,在动态的、去中心、云与端融合的服务互联网运行环境下,服务运行优化及演化方面的研究还不够成熟,尚存亟待解决的难题。