第1章 绪论
1.1 服务计算与面向服务的架构
1.1.1 面向服务的架构与Web服务
过去二十年,随着Web技术的快速发展和深入应用,基于Web计算技术与商务应用领域的融合,逐步形成了“服务计算”的概念。面向现代服务型经济的强大需求,服务计算领域得到了快速而迅猛的发展,逐渐形成一个跨越计算机与信息技术、商业管理、商业咨询服务等领域的新兴学科。服务计算是应用面向服务的架构(services-oriented architecture,SOA)技术在消除商业服务与信息支撑技术之间鸿沟的直接产物[1]。服务计算在形成自己独最的科学与技术体系的基础上有机整合了一系列最新技术成果:①SOA/Web服务;②网格/效用计算;③业务流程整合及管理等。
SOA是指一种架构模型,它将应用程序的不同单元通过服务之间定义良好的接口联系起来。其核心思想是将服务作为基本的构造单元,使得任何应用均可以看作一组协同运作的服务,从而以快速、低成本、易组合的方式去创建高度分布式、协同的、动态变化的、跨越组织与计算平台边界的服务系统。目前计算机网络各层的服务协议,如超文本传送协议(hypertext transfer protocol,HTTP)、文件传送协议(file transfer protocol,FTP)等,也可以视作SOA思想的产物。通过在各层协议间提供透明的服务和接口,可以最大限度地降低耦合性,减小外界对各层的影响。
SOA的概念模型包含服务提供者、服务注册中心和服务请求者三类角色。如图1.1所示,服务注册中心发布服务描述以供服务请求者使用,服务请求者通过“发现”功能查询服务注册中心来找到其标准的服务,服务请求者与服务提供者通过请求与调用的方式进行交互。SOA的基本构件是服务及服务之间的连接件。服务是显式的、独立于服务具体实现技术细节的接口。通过接口调用位置透明的、可互操作的协议,使得客户端以松散耦合的方式绑定在一起。
Web服务是面向服务的架构的一种实现技术,通过标准的Web协议提供服务,用于支持网络上机器到机器的互操作[2]。标准的Web服务协议栈包含三个核心协议,即简单对象访问协议(simple object access protocol,SOAP)、万维网服务描述语言(Web services description language,WSDL)、通用描述、发现与集成(universal description,discovery and integration,UDDI)。SOAP提供了一种在服务与其他应用之间进行通信的机制。WSDL 是一种描述 Web 服务的可扩展
标记语言(extensible markup language,XML),提供了一种向其他程序描述Web服务的统一方法,说明了一个服务实体提供什么样的功能及如何被调用。UDDI用于创建可搜索的服务注册中心。
Web服务的重要意义在于它将应用程序功能概念化为任务,从而形成了面向功能的开发和工作流;通过Web服务实现了在任意平台上用任何语言编写的服务之间的交互;Web服务为现有或遗留的软件应用程序提供服务接口,从而使得这些应用程序无须任何改变即可在万维网环境下运行。由于与面向服务的架构的概念相契合,Web服务逐渐成为公认的面向服务的架构中服务单元的最佳载体,成为互联网应用集成的事实标准。
狭义上Web服务以XML为技术标准,但基于XML的协议是重量级的,在开发敏捷性上有诸多弊端。随着技术演进,以RESTful API为代表的轻量级服务日益盛行。互联网上出现了越来越多可以公开访问的服务资源,尤其在云计算、物联网等技术驱动下,服务生态系统日益成熟,如互联网上最大的服务注册库Programmable Web已索引了超过20000个开放服务,汇集了超过7000个组合应用[3]。
1.1.2 服务计算、云计算和边缘计算的关系
云计算[4]是指互联网环境下计算资源的一种交付和使用方式,它利用虚拟化技术将各种零散分布的信息技术资源,如网络、计算、应用、存储及服务等进行整合,并提供了一种动态的、按需付费的资源供应方式,使得用户可以通过互联网接入云计算平台,从而完成资源的使用。云计算也被视为网格计算和效用计算技术在商业领域的应用。
云计算过于集中的能力导致其不足以应对分散在边缘且亟须及时处理的需求。云计算强调将计算和存储能力从边缘端集中到中心,而边缘计算将计算和存储能力重新下沉到边缘。边缘计算可以理解为云计算的一种逆操作,指在靠近物或数据源头的网络边缘侧,融合网络、计算、存储、应用核心能力的开放平台,就近提供边缘智能服务,以满足行业数字在敏捷连接、实时业务、数据优化、应用智能、安全与隐私保护等方面的关键需求[5]。
关于服务计算、云计算、边缘计算之间的关系,可以采用维恩图的形式给出直观的展示。从图1.2可以看出,云计算和边缘计算的关系可以描述为互补型,二者融合使得计算平台在保持边缘计算设备高度自治的同时,又能与云端保持广泛的连接能力,防止了传统模式下的信息孤岛现象。Web 服务是实现SOA的一种技术方法,可视作SOA架构的事实标准。SOA不一定完全依赖Web服务来实现,也可以基于通用对象请求代理体系结构(common object request broker architecture,CORBA)、Java智能网络基础设施(Java intelligent network infrastructure,JINI)等技术标准实现,但是由于后者严重依赖编程语言机制,在实际应用中逐渐式微。因此,目前的云服务如平台即服务(platform as a service,PaaS)、基础设施即服务(infrastructure as a service,IaaS)和软件即服务(software as a service,SaaS)更多地使用Web服务进行连接,由Web服务封装对外提供平台、基础设施和软件服务。
1.1.3 服务质量
Web服务的蓬勃发展使其在金融、高新科技、媒体和娱乐等领域得到了广泛的应用。然而,随着标准化协议被越来越多主流Web服务提供商所采用,服务质量逐渐作为区分这些同质化服务的重要特性,也成为服务竞争的焦点所在。服务质量涵盖了一系列技术,这些技术基于可用的网络资源,将服务请求者的需求与服务提供商相匹配。衡量服务质量的主要指标或属性包括性能、可靠性、可用性、安全性、可访问性、完整性和可监管性[6]。
性能:通常通过吞吐量(throughput,TP)和响应时间(response-time,RT)来度量。吞吐量表示在单位时间内服务所处理的网络请求的数量;响应时间是指发送请求和接收响应之间的往返时间。较高的吞吐量和较低的响应时间表征良好的服务质量。
可靠性:用于表示服务维度的能力,一般通过一定时间段(每年或者每月)内的平均故障数来度量。就信息传输而言,可靠性指的是服务请求者和服务提供者发送与接收消息的可靠及有序传递。
可用性:是指Web服务是否存在或者是否已经准备好可以立即使用的特性。通常以服务可用的概率来量化可用性,较大值表示服务始终可用,而较小值表示服务在特定时间是否可用的不可预测性。
安全性:是指通过对牵涉的各方进行身份验证、消息加密和访问控制机制来保证服务的机密性及不可抵赖性。Web服务调用是基于互联网进行的,所以安全性显得尤为重要。根据服务请求者的不同,服务提供者依照不同的级别采取不同的方式来保障安全性。
可访问性:是指服务可被用户方便地、容易地获取的程度。它可以表示为一个概率,表示用户在某个时间点发出服务请求后收到正确返回结果的可能性。可访问性高意味着很多用户可以成功地调用该服务,通过构建高度可伸缩的服务系统可以实现Web服务的高可访问性,这里可伸缩性是指在请求量发生变化的情况下能够一致地服务于请求的能力。
完整性:是指如何保证服务在发送请求到完成功能的交互过程中能够正确执行。服务执行的正确性依赖于Web服务事务的正确执行,这里事务是指一系列独立的程序执行单元。事务具有原子性,所有事务必须成功完成,否则在每个操作中所做的所有更改都会被撤销。
可监管性:是指Web服务必须符合规则、法律、标准和已建立的服务等级协定(service level agreement,SLA)。Web服务通过一系列诸如SOAP、WSDL和UDDI的标准化协议提供服务,服务提供者必须严格遵守正确的标准版本(如SOAP版本1.2)才能保证Web服务的正确调用。
1.2 Web服务质量预测的发展现状
1.2.1 Web服务质量预测
随着服务资源的聚集,不可避免地出现同质化竞争,如考虑云计算服务,用户可能要在阿里云、百度云、腾讯云、华为云等多家潜在服务提供商之间做出抉择。因此,如何有效地为用户推荐合适的服务资源成为重要的研究课题。
传统服务推荐主要考虑服务功能与用户需求的匹配程度,继而推荐满足特定功能要求的候选服务资源。针对此需求,服务检索、语义服务匹配等辅助用户选择服务的技术方法应运而生[7]。这些方法可以为用户推荐满足特定功能的服务资源,但随着同质化服务日益增多,需要进一步从非功能刻面来区分服务的质量,才能提供精细化推荐结果。服务质量通常刻画Web服务的非功能特性,是同质化服务竞争的重点[8]。在传统技术条件下,为了获得准确的服务质量值,通常需要借助客户端测量技术,但受时间、经济成本等因素的制约,服务提供商不太可能在网络中部署大量软件传感器来监测服务质量信息,用户也不太乐意在客户端通过密集测试来体验不同服务的质量差异。为此,学界提出了协同服务质量预测的解决思路,借鉴协同过滤的思想,通过分析大规模服务系统中服务调用的历史记录,利用协同智能来预测未知的服务质量值[9-12]。协同服务质量预测可以避免直接的服务质量测量,从而节省服务提供者和用户的时间及经济成本。随着大规模服务系统的部署,这种解决方案变得更加可行和富有操作性。
Web服务质量的预测研究不仅在服务计算社区得到了研究者的广泛关注,在云计算、网络测量等研究社区也有不少研究者涉猎。通过对已有研究工作的梳理和分析,目前相关研究依据应用场景可以分为端到端服务质量预测和服务端服务质量预测。端到端服务质量预测可以描述为给定一个用户和服务对,通过预测算法估计在用户端可能感知到的服务质量数值。服务端服务质量预测可以描述为给定服务端数据特征,尤其是虚拟机特征,通过预测算法来估计服务质量的量化值和趋势变化。端到端服务质量预测主要解决用户端的应用需求,致力于在用户选择同质化服务时提供个性化决策支持。服务端服务质量预测主要解决服务提供者的应用需求,致力于提供服务质量监测手段和技术。
端到端服务质量预测依据数据形态,可以细分为静态服务质量预测和动态服务质量预测。静态服务质量预测不考虑时间维度,通常可以建模为一个矩阵填充问题。如图1.3(a)所示,给定一个表示Web服务的已知服务质量值的用户-服务矩阵,通过分析用户、服务及对应已经观测到的历史服务质量值之间的关系,对矩阵中缺失的服务质量值进行预测,即预测用户新调用服务可能观测到的服务质量值。动态服务质量预测则考虑时间维度,通常可以将其建模为一个张量填充问题,如图1.3(b)所示,即预测用户在不同时间点调用服务可能观测到的服务质量值。
一些研究工作还致力于解决其他不同的问题,如考虑用户或服务的冷启动问题、考虑数据质量与可信性问题、考虑服务质量多属性预测问题、考虑服务质量时序预测问题。此外,受数据条件制约,目前的研究工作主要聚焦于易量化的服务质量属性,如响应时间、吞吐量和可靠性等。
1.2.2 基于记忆的端到端服务质量预测方法
基于记忆的预测方法通过挖掘用户与用户之间,服务与服务之间的相似度来进行预测,其流程可以概括为以下三步:相似度计算、近邻选择和缺失值预测。根据对象的不同,基于记忆的预测方法可以分为三类:基于用户相似度的预测、基于服务相似度的预测及混合用户和服务相似度的预测。Zheng 等[