没有合适的资源?快使用搜索试试~ 我知道了~
基于语言的Web服务组合方法
一种基于语言的Web服务组合方法伊利亚斯·本·哈吉·亚希亚引用此版本:Elyas Ben Hadj Yahia。基于语言的Web服务组合方法。其他[cs.OH]。波尔多大学,2017年。英语。NNT:2017BORD0783。电话:01687134HAL ID:电话:01687134https://theses.hal.science/tel-01687134提交日期:2018年HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire波尔多学院B.UN I V E R S I TD EB O R D E A U X科学与技术THese在波尔多计算机科学研究实验室获得波尔多大学博士学位专业:计算机科学博士培训:计算机科学博士学校:数学与计算机科学一种基于语言的Web服务组合方法通过伊利亚斯BEN HADJ YAHIA于2017年11月28日在评审团面前答辩,评审团成员包括:论文指导Laurent RÉveillère,法国波尔多大学教授报告员葡萄牙里斯本大学教授................................................................................Luís VEIGARomain ROUVOY,法国里尔大学教授.................................................................检查员Mohamed MOSBAH,波尔多INP教授..........................................................................Yérom-David BROMBERG,法国雷恩大学教授Jean-Rémy FALLERI,法国波尔多INP高级讲师...................................................................受邀成员Alain CADOT,法国CIS Valley首席................................................................................................执行官Raphaël CHevalier,法国CProDirect副...................................................................................... 总监摘要随着Web工程领域的最新发展,以及云计算成本的降低,面向服务的体系结构正迅速成为向客户提供有价值服务的随着这一趋势的发展,第三方服务的组合已经成为开发健壮和丰富的分布式应用程序以及自动化业务流程的成功范例随着数以百万计的Web服务和API的可用性,这种集成在手动执行时变得笨重和乏味。此外,不同的客户端可能需要不同的集成要求和策略,这进一步使任务复杂化。更重要的是,提供这样一个既健壮又可扩展的解决方案是一项艰巨的任务。因此,研究如何有效地协调现有Web服务之间的交互就变得至关重要。 因此,本文试图在现代Web开发实践的背景下研究Web服务组合中的基本挑战。我们提出了一个体系结构框架来支持使用基于语言的方法来规范Web服务组合,并展示了我们如何使用轻量级的事件驱动平台MEDLEY以可扩展的方式支持它们的执行。关键词:服务组合、编排、域特定语言、微服务、分布式系统摘要随着Web工程领域的最新进展以及云计算成本的降低,面向服务的体系结构已迅速成为向客户提供增值服务的首选解决方案随着这一趋势的发展,第三方服务组合已成为开发强大和丰富的应用程序或业务流程自动化的参考范例随着成千上万的Web服务和API的可用性,手动执行这样的集成变得繁琐和乏味。此外,每个客户端可能需要不同的集成需求和策略,这使得任务更加复杂。此外,提供这样一个既健壮又可扩展的解决方案是一项重要的任务。 因此,研究如何有效地协调现有Web服务之间的交互至关重要。因此,本文旨在研究现代Web开发实践中与Web服务组合相关的问题 我们提出了一个架构框架,允许使用面向语言的方法来规范Web服务组合,并演示了如何使用轻量级的、面向事件的平台M EDLEY来支持它们的可扩展执行。关键词:服务组合、编排、业务语言、微服务、分布式系统LaBRI-351,解放之路-33400 Talence-法国内容1引言11.1背景:CPRODIRECT。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 21.2Web服务组合。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...21.2.1协调现代Web服务。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...31.2.2检测Web服务数据中的特定更改。. . . . . . . . . ... ...51.2.3扩展服务组合平台。... ... ... ... ... ... ... ... ... ... ... ... ... ... ......61.3MEDLEY:用于服务组合的事件驱动轻量级平台。 ...61.4论文大纲。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ... ...82背景92.1面向服务的体系结构的起源2.1.1整体应用102.1.2面向服务的架构122.1.3微服务122.2Web服务堆栈概述142.2.1使用SOAP15调用服务2.2.2使用WDS15的服务描述2.2.3使用UDDI16进行服务发现2.2.4Web服务模式:将内容放在一起2.3REST建筑风格172.3.1使用HATEOAS18实现超媒体驱动的发现2.3.2REST API描述方法182.4服务组成概述192.4.1过程代数并发模型21我ii内容2.4.2业务流程执行语言222.4.3协调REST服务282.4.4业务集成平台282.5Web资源中的更改检测352.5.1数据收集352.5.2差分算法362.6摘要373用于服务组合的域特定语言393.1Web服务组合的挑战403.1.1业务流程的复杂性403.1.2未指定界面的异质性433.1.3服务组合的动态性453.2POLLY:用于Web服务数据自定义更改检测的DSL3.2.1POLLY语言概述463.2.2POLLY语言规范473.2.3国家建设483.2.4变更检测503.3RIA:用于Web服务组合的DSL3.3.1RIA语言概述543.3.2RIA语言56的规范3.4摘要614运行时系统实现634.1用于服务组合的事件驱动轻量级平台644.2执行情况654.2.1第65代代码4.2.2运行时系统674.2.3整合第三方服务694.3迈向可扩展体系结构704.3.1可扩展性挑战704.3.2接近714.4摘要755评估和分析775.1评估POLLY语言785.1.1测试场景785.1.2语言冗长度785.1.3性能指标795.2评估RIA语言835.2.1语言表现力83内容III5.2.2性能指标855.3评估MEdley平台885.3.1超额API费率限制905.3.2可扩展性性能915.4摘要926结论936.1背景和贡献936.1.1RIA:Web服务组合的特定域语言6.1.2POLLY:一种基于语言的自定义更改检测方法Web服务数据946.1.3MEDLEY:用于通信服务的事件驱动、轻量化平台6.1.4迈向可扩展的服务组合平台956.2前景966.2.1RIA96中数据隐私的正式验证模型6.2.2POLLY96的大规模开发人员调查6.2.3使用机器学习技术改进MEDLEY的工作安排策略法文摘要99图113列表表列表117C. HAPTER简介本章介绍了本博士论文的工作范围。根据CIFRE 1与法国公司CP RO D IRECT的工业合作合同,本文旨在研究CP RO D IRECT最近对Web服务编排的兴趣。随着面向服务的体系结构的日益普及,研究如何有效地协调现有Web服务之间的交互变得至关 因此,在本章中,我们将介绍我们工作的背景、潜在的挑战和我们的主要贡献。内容1.1背景:CPRODIRECT。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......21.2Web服务组合中的挑战。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 21.3MEDLEY:用于服务组合的事件驱动轻量级平台1.4论文大纲。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 81. CIFRE:研究培训工业会议,一项法国资助的赠款,旨在促进国家公司和公共研究机构之间的合作112第1章. 引言1.1背景:CPRO DIRECTCPRO DIRECT总部位于波尔多郊区,是一家专门从事咨询服务的网络开发机构,重点是电子商务和营销活动。该公司的业务中心围绕着为客户提供有价值的服务,根据他们的需求量身定制。 该公司专注于集成现有的Web服务,为客户提供附加值。这使得CP RO D IRECT能够利用成熟、高质量的Web服务,及时为客户提供相关解决方案。然而,随着数以百万计的Web服务和API的可用性,这种集成在手动执行时变得笨重和乏味。此外,每个客户端可能需要不同的集成要求和策略,这进一步使任务复杂化。通常,常见用例包括通过响应特定的外部事件、根据客户的要求传播和转换数据来自动化跨多个应用程序的业务流程。实际上,这可以包括监控社交网络中对客户产品或品牌的负面评论,然后在专门的CRM(客户关系管理)工具中创建问题,最后通知销售代表,以便尽快解决问题更重要的是,提供这样一个既健壮又可扩展的解决方案是一项艰巨的任务。本论文所做的工作为解决Web服务组合中的基本问题奠定了基础。1.2Web服务组合的挑战在过去的十年里,分布式应用程序一直在疯狂地发展,基本上依赖于将大量的可组合服务集成在一起,以提供具有附加值的新功能。大量可用的在线Web服务使研究人员和企业能够以多种方式利用他们的潜力[Alonsoet al. 2004年]。从历史上看,已经提出了几种解决方案来解决这一问题。实际上,业务流程执行语言(BELP)曾经是编排SOAP服务的参考解决方案,并且已经成为大量研究和工业应用的主题[Andrews et al. 2003年]。然而,SOAP服务在今天正迅速过时,取而代之的是更灵活的REST体系结构风格[Fielding,2000]。此外,传统Web服务(SOAP)和更现代的Web服务体系结构样式(REST)在规范、工具和最佳实践方面存在着固有的根本差异。 这在Web服务组合的上下文中带来了自己的一系列挑战。1.2. Web服务组合中的挑战31.2.1协调现代Web服务从分布式计算的早期开始,服务的原始概念就起源于RPC机制[Nelson,1981]。在过去的几十年里,服务的概念得到了显著的改进,对分布式通信环境产生了强烈的影响,特别是由于面向服务的体系结构(SOA)范例的出现。SOA基于Web服务堆栈(由WS-* 规范定义),旨在提供一个体系结构框架,用于封装业务逻辑并通过网络上的标准化接口将其公开。从更高的角度来看,SOA至少推动了两个具有长期影响的主要趋势。首先,它促进了一种标准化的方式来构建一个应用程序(它本身可以被视为一个服务),作为一组指定良好、独立、自包含和松散耦合的服务,这些服务一起协同工作。第二,它已经证明服务是设计复杂应用程序的有效范例。因此,我们生活在一个以服务为导向的世界。从最简单的智能手机应用程序到网络上最复杂的应用程序,这些应用程序以这样或那样的方式与增值服务进行交互,可能是由其他服务本身制造的。换句话说,应用程序越来越多地使用SOA范例构建,并集成了无数可组合的服务。此外,随着云提供商的广泛扩张,与自托管解决方案相比,基础架构即服务(IaaS)和平台即服务(PaaS)产品已变得更容易获得和负担得起[Zhang等人,2011年]。2010年]。例如,AWS2、GAE3、Heroku4和DigitalO-cean5等云提供商都为企业和个人提供了一种简单、经济实惠的方式,以便在可靠的基础架构上快速部署、监控和管理其服务由于服务是自治的,并且彼此独立地部署、未部署和升级,因此SOA使应用程序开发人员能够对如何平滑地更新其应用程序以及如何使其在生产环境中可扩展进行精细的控制。如今,基于SOA的应用程序的开发与持续的服务开发和持续的服务集成实践密切相关[Fowler和Lewis,2014]。 这 一 新 趋势,加上服务的稳 步 扩 散,并非没有挑战,并可能过时传统的SOA愿景[Newman,2015],以及基于Web服务器(WS-*)规范的经典实现。对于实例,这些长期存在的规范提供了用于定义Web服务(SOAP:简单对象访问协议)以及用于定义这些服务之间的编排(BELP:业务流程执行语言)的标准。无论如何,使用这些事实上的标准作为工作流来组合大量的服务可能不足以满足开发人员的期望。事实上,Perl是一个低级的2. https://aws.amazon.com3. https://cloud.google.com/appengine4. https://www.heroku.com5. https://www.digitalocean.com4第1章. 引言描述服务需要如何组成的冗长语言,而不是定义应该实现的内容。客户端需要提前静态声明他们所依赖的服务,以执行所需的编排。然后,它们必须明确指定如何与控制流逻辑一起编程绑定到这些服务(调用服务、等待响应、错误处理等)。此外,客户还必须考虑数据流操作和服务之间的类型不兼容性,这进一步使任务复杂化。因此,开发人员必须编写的代码量与他们希望编写的服务数量成正比编写的代码的高度复杂性通常使得在实践中不太可能使用MPLS和其他传统技术,并且相关的可视化编辑工具不可用。此外,现有的工作流语言通常需要来自复合服务的强类型和良好定义的接口。然而,由于服务的快速扩散,定义这样的接口不再是趋势,这些服务大多数时候都在没有任何契约的情况下公开其Web APIs(例如REST for instance)[Maximilien et al. 2007年]。因此,需要编写一些粘合剂代码,以便以特别和快速的方式组成服务。从另一个角度来看,随着持续服务集成和开发(通常称为DevOps)的出现,工作流语言不仅需要支持指定良好的服务的静态组合,还需要支持以前在设计时没有计划好的服务的即时集成[ Pautasso,2009 a; Pautasso和Alonso,2005]。这样做可以实现新服务的平滑和更快的集成,同时还在编排级别提供更好的可靠性,如果所需的服务无法响应,则可以由运行时系统动态选择等效服务。然而,传统的方法在这方面失败了,特别是在微服务和REST API的上下最后,现有的工作流语言通常与执行引擎(如企业服务总线(ESB))捆绑在一起。然而,众所周知,ESB是重量级的执行平台[Chappell,2004]。 这使得他们的部署和管理更加昂贵和耗时,因为他们需要大量的(人力和计算)资源来运营。因此,它们没有满足Docker普及的轻量级容器和频繁部署的趋势Docker使开发人员能够根据特定的隐私要求,将他们的服务组合部署到他们想要的任何地方,例如个人云[Fuchs和Gürgens,2013]。Hence,SOA范式必须发展。知名服务提供商,如Net-Netflix、亚马逊、Spotify和SoundCloud已经广泛采用了SOA范式的重新设计,称为微服务。微服务只不过是受HTTP基础知识约束的SOA实例,即 它采用REST风格,没有WS-* 规范,并结合各种工具来促进服务的快速部署和取消部署。然而,编写服务的挑战仍然对微服务实践开放--那些可以自由使用他们想要的编程语言的人。1.2. Web服务组合中的挑战51.2.2检测Web服务数据中的特定更改像IFTTT 6和Zapier 7这样的集成平台最近已经出现,其目标是协调像Facebook和Twitter这样的大量Web服务之间的交互[Liu et al. 2000年,Pandey等人。2004年]。 它们使最终用户能够描述当自定义事件在Web服务上发生时要触发的操作[Ur et al. 2016年]。例如,当特定的地铁线路变得可用时,人们可能希望自动推文消息。但是,大多数现有的Web服务都不提供指定自定义事件通知的方法。 为了克服这一限制,平台所有者通过执行受监控服务的循环投票来开发自己的通知系统。对于每个服务,定期获取当前状态并与前一个状态进行比较,以识别随时间变化的特定值。 当检测到更改时,将引发相应的事件。由于需要为服务的每个事件开发特定代码,因此支持的服务和事件的集合是有限的,并且不一定满足用户期望。监控过程的每一步都可能相对复杂。 作为一个例子,考虑使用Facebook服务来检测给定相册中具有给定标记用户的新照片。为了简化这种情况,首先需要定期调查几个Facebook API端点(一个用于照片,一个用于标签),并浏览分页的响应。然后将生成的汇总状态与前一个汇总状态进行比较。但是,此比较要求仅关注新照片(由其唯一ID标识),而忽略其他不相关的更改(如上次更新时间)。即使是这样一个简单的用例也掩盖了这一过程的复杂性,这一过程分为两个不同的挑战:状态计算和变化检测。虽然状态的计算有时需要从单个API端点获取单个资源,但通常需要简化更复杂的策略。例如,状态的构造可能需要通过一组API端点进行导航,其中必须以特定顺序链接多个请求以正确获取相关数据。此外,服务返回的响应可以分页,因此不需要多个后续请求来累积所有数据。因此,建立一个国家很快就会变得费力。一旦计算了一个状态,就需要它来检测与前一个状态的更改然而,现成的技术可能会产生意想不到或不相关的结果,如在以前的Facebook示例中,只有上次更新时间更改的照片不应报告为不同。 开发一个通用的差异化工具是一个众所周知的复杂问题,并且可能是NP难的,既取决于所考虑的变化操作,也取决于输出大小的保证[Buttler,2004]。6. https://ifttt.com7. https://zapier.com6第1章. 引言1.2.3扩展服务组合平台根据CPRO DIRECT公司的设想,设计一个能够有效支持数百万用户的可扩展服务组合平台是一项艰巨的任务,并突出了两个关键挑战。第一,实现这种平台规模的最简单方法(即而不改变其现有的软件体系结构)是为了执行垂直扩展。但是,垂直扩展需要增加现有服务器的容量,例如,通过投资于更多的原始进程容量和/或更多的内存。显然,这种硬件更新是昂贵和有限的[Cáceres et al. 2010年]。 此外,它不提供任何自动配置或自动缩放功能,而这些功能是根据用户数量和组合的同时执行来平滑缩放所必需的[Vaquero et al. 2011年]。这种平台的部署对云不友好:计费取决于所消耗的资源,这对运营成本有直接影响。第二,所提出的平台架构需要直接考虑API速率限制规则和所组成的第三方服务的配额策略。 通过限制客户端在给定时间框架内可以执行的请求数量,经常应用这样的规则或现状来避免对服务的不当使用。 API速率限制还允许服务提供商实现更好的性能(尤其是在流量高峰期)、更好的安全性(减少拒绝服务攻击的影响),并使其能够提供更高的速率限制作为首选产品。如果没有这些限制,一组客户端在同一时间发出对同一服务的请求可能会严重降低所有其他客户端的体验。因此,如果超过速率限制,合成平台可能会被阻止或列入黑名单。此外,对组合中的服务的过度调用会增加平均执行时间和资源使用。现有技术不能直接应用于服务组合的上下文中以解决这两个问题。关键问题。1.3MEDLEY:用于服务组合的事件驱动轻量级平台本论文的贡献在于研究现代Web开发实践背景下Web服务组合中的基本挑战。本文的最终目标是提供一个体系结构框架,以可扩展的方式支持Web服务组合的规范和执行。为此,我们提出四项补充贡献。首先,我们介绍了RIA,一种使用高级结构和域特定语义来描述服务组合的域特定语言。RIA是专门设计的,用于解决在编排各种异构Web服务的组合时遇到的突出问题通过提供抽象层1.3. MEDLEY:用于服务组合7的事件驱动轻量级平台在低级别实现和高级别业务逻辑之间,该语言使用户能够通过对控制流和数据流的微调来表达组合此外,RIA符合持续服务集成和开发的当前趋势,以促进持续发展的面向服务的体系结构。第二,我们引入了一种基于声明性语言的方法POLLY来简化变化检测器的构造。 P OLLY支持描述从RESTful API获取的JSON数据中的更改检测策略。域特定语言提供声明性、简单但高表达性的构造,用于描述如何从一个或多个API端点构建状态、如何识别状态中的更改以及如何生成自定义输出。OLLY编译器自动生成一个高效的JavaScript编译器,该编译器在运行时系统的顶部运行,并隐藏HTTP身份验证和分页等低级要求 在我们的上下文中,P OLLY更改检测器允许生成自定义事件,以便在目标Web服务数据发生更改时自动触发RIA组合的执行。第三,我们介绍了MEDLEY的架构,这是一个用于服务组合的事件驱动轻量级平台。MEDLEY平台包括一个运行时系统,用于支持使用RIA语言执行指定的服务组合并支持第三方服务提供商的快速集成一旦定义,RIA规范就被编译成在MEDLEY顶部运行的低级代码。运行时系统依赖于一个事件驱动的、基于进程的通信范例,以实现轻量级和高性能的执行模型。MEDLEY还支持使用POLLY指定的服务提供商组件的集成,这些组件基于POLLY更改检测器检测到的更改事件启用此外,为了确保MEDLEY平台在生产环境中的可扩展性,我们专注于一种在服务编排引擎中进行高效调度的新方法。 主要的挑战是支持越来越多的用户,同时考虑到服务组合所使用的第三方服务的API速率限制。据我们所知,在目前的技术水平下,这个问题还没有得到解决。特别是,我们设计了M EDLEY来支持水平缩放。可横向扩展-创建跨节点扩展的应用程序。为此,以类似于Docker Swarm [Merkel,2014]的方式,我们在M EDLEY平台中引入了一个自定义调度程序,该调度程序能够创建一个M EDLEY集群,该集群能够动态增加或减少M EDLEY节点的数量,以分配传入的工作负载。然而,与Docker Swarm不同的是,Docker Swarm与容器化的应用程序无关,我们自己的调度程序能够根据复合服务的依赖性和复合服务消耗的资源来调度复合服务。 因此,M EDLEY平台可以轻松部署在公共云基础架构上,从而仅对实际消耗的资源进行计费。此外,为了克服第三方服务的API速率限制规则,M EDLEY平台在集群的每个节点上增强了缓存功能。MEDLEY调度程序依赖于基于启发式的方法来优化缓存
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功