没有合适的资源?快使用搜索试试~ 我知道了~
基于数据库的Web服务组合方法
一种基于数据库的Web服务组合方法Elyas Ben Hadj Yahia引用此版本:Elyas Ben Hadj Yahia。一种基于数据库的Web服务组合方法。其他[cs.OH]。波尔多大学,2017年。英语NNT:2017BORD 0783。电话:01687134HAL Id:tel-01687134https://theses.hal.science/tel-016871342018年1月18日提交HAL是一个多学科的开放获取档案馆,用于存放和传播科学研究文件,无论它们是否已这些文件可能来自法国或国外的教学和研究机构,或来自公共或私人研究中心。L’archive ouverte pluridisciplinaireACADÉMIE DE BORDEAUXUN I V E R S IT EB O R D E A U X科学与技术THASHASE波尔多大学信息学研究所教授专业:信息信息学博士课程数学与信息博士学校一种基于数据库的Web服务组合方法parElyas BEN HADJ YAHIA自2017年11月28日起,评审团组成如下:Directeur de thèseLaurent RÉVEILLLENRE,波尔多大学,法国报告员Luís VEIGA,葡萄牙里斯本大学...............................................................Romain ROUVOY,法国里尔大学.........................................................................考官Mohamed MOSBAH,波尔多INP,法国.......................................................................Yérom-David BROMBERG,法国雷恩大学Jean-Rémy FALLERI,法国波尔多INP会议中心...................................................................主任邀请函Alain CADOT,法国CIS Valley总经理............................................................................................Raphaël CHEVALIER,Directeurassocié.................................................................................CProDirect,法国摘要鉴于Web工程领域的最新进展,随着云计算成本的降低,面向服务的架构迅速成为为客户提供有价值服务随着这一趋势的发展,第三方服务的组合已经成为开发健壮和丰富的分布式应用程序以及自动化业务流程的成功范例 随着成千上万的Web服务和API的可用性,这种集成在手动执行时变得繁琐和乏味。此外,不同的客户端可能需要不同的集成需求和策略,这进一步使任务复杂化。此外,提供这样一个既健壮又可扩展的解决方案是一项重要的任务。因此,研究如何有效地协调现有Web服务之间的交互变得至关重要。因此,本论文的目的是调查在现代Web开发实践的背景下,Web服务组合的潜在挑战。我们提出了一个架构框架,以支持规范的Web服务组合使用基于语言的方法,并展示了我们如何支持他们的执行在一个可扩展的方式使用MEDLEY,一个轻量级的,事件驱动的平台。关键词:服务组合,配置,领域特定语言,微服务,分布式系统简历在Web工程领域,由于云计算的基础,面向服务的体系结构将迅速发展成为一种解决方案,为客户提供有价值的服务Suite à cette tendance,la composition de services tiers est devenue unparadigme de référence pour le dépement Avec la disponibilité de centaines de milliers deservices et APIs web,la réalisation de telles intégrations devient lourde et fastidieuse quandeffectuée manuellement. 此外,客户可能需要不同的需求和政策,因为这使问题复杂化。此外,fournir unetelle solution qui soit à la fois robuste etscalable est une tâche non-triviale. Il est doncprimordial d'étudiercommentcoordinerdemanièreefficacelesintéractions entrelesserviceswebexistants. 此外,这一点有助于研究在现代网络发展实践背景下网络服务构成的问题。 Nous presésentons un cadrearchi- tectural permettant la spécification de compositions de services web grâce à uneapproche orientée langage,et montrons comment supporter execution de manière scalablegrâce à M EDLEY,une plateforme légère et orientée événements.Mots clés:Composition de services,配置,语言,微服务,分布式系统LaBRI-351,Cours de la Libération-33400 Talence-法国内容1介绍11.1背景:CPRO DIRECT。. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21.2Web服务组合。. . . . . . . . . . . . . . . . . . . .21.2.1构建现代Web服务。. . . . . . . . . . . . . . . . . .31.2.2检测Web服务数据中的特定更改。. . . . . . . . . . .51.2.3扩展服务组合平台。. . . . . . . . . . . . . . . .61.3MEDLEY:事件驱动的轻量级服务组合平台。 .61.4论文大纲. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82背景92.1面向服务架构的起源102.1.1单片应用102.1.2面向服务的体系结构122.1.3微服务122.2Web服务堆栈概述142.2.1使用SOAP15调用服务2.2.2使用WSDL15的服务描述2.2.3使用ESP16进行服务发现2.2.4Web服务模型:把东西放在一起162.3REST架构风格172.3.1使用HATEOAS18进行超媒体驱动的发现2.3.2REST API描述方法182.4服务组合概览2.4.1进程代数并发模型21我二.目录2.4.2业务流程执行语言222.4.3支持REST服务282.4.4商业整合平台282.5Web资源中的更改检测352.5.1数据收集2.5.2差分算法362.6摘要373用于服务组合的领域特定语言393.1Web服务组合中的挑战403.1.1编排的复杂性403.1.2未指定接口的异构化433.1.3服务组合的动态性453.2POLLY:用于Web服务数据的自定义更改检测的DSL463.2.1POLLY语言概述463.2.2POLLY语言的规范473.2.3国家建设483.2.4变化检测503.3RIA:用于Web服务组合的DSL543.3.1ARIA语言概述543.3.2ARIA语言的规范563.4摘要614系统实现634.1用于服务组合的事件驱动轻量级平台644.2执行情况654.2.1代码生成654.2.2电子邮件系统674.2.3整合第三方服务4.3迈向可扩展的架构704.3.1可扩展性挑战4.3.2办法714.4摘要755评估和分析5.1评价POLLY语言785.1.1测试场景785.1.2语言冗长785.1.3业绩计量5.2评估RIA语言835.2.1语言表达能力83目录iii5.2.2业绩计量5.3评估MEDLEY平台885.3.1克服API速率限制905.3.2可扩展性性能915.4摘要926结论.936.1背景和贡献6.1.1ARIA:a domain-specific language for web service composition一种用于Web服务组合的领域特定6.1.2POLLY:一种基于语言的自定义变更检测方法Web服务数据946.1.3MEDLEY:事件驱动的轻量级服务组合平台956.1.4迈向可扩展的服务组合平台956.2前景966.2.1RIA96中数据隐私的形式化验证模型6.2.2POLLY96大型开发人员调查6.2.3使用机器学习技术改进M EDLEY的就业安置策略97A Résumé en Français99图113表117C型肝炎介绍本章介绍了整个博士论文的工作范围本论文是在与法国CP RO D IRECT公司签订的CIFRE1工业合作协议下进行的,旨在研究CP RO D IRECT公司最近对Web服务编排的兴趣。随着面向服务体系结构的日益流行,研究如何有效地协调现有Web服务之间的交互变得至关重要 因此,我们在本章介绍我们的工作背景、基本挑战和我们的主要贡献。内容1.1背景:CPRODIRECT。. . . . . . . . . . . . . . . . . . . . . . . . . . ..21.2Web服务组合中的挑战。. . . . . . . . . . . . . . . . . .21.3MEDLEY:一个事件驱动的轻量级服务组合平台61.4论文大纲. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81. CIFRE:Convention Industrielle de Formation par la Rescherche,法国资助赠款,旨在促进国家公司和公共研究机构之间的合作11第一章:第一章介绍1.1背景:CPRO DIRECTCPRO DIRECT位于波尔多郊区,是一家专门从事咨询服务的网络开发机构,重点关注电子商务和营销活动。该公司的活动中心围绕着为客户提供有价值的服务,以满足他们的需求。 该公司通过整合现有的Web服务来为客户提供附加值。 这使CP RO D IRECT能够利用完善的高质量Web服务,及时为客户提供相关解决方案。然而,随着成千上万的Web服务和API的可用性,这种集成在手动执行时变得繁琐和乏味此外,每个客户端可能需要不同的集成需求和策略,这进一步使任务复杂化。通常,常见的用例包括通过对特定的外部事件做出反应来跨多个应用程序自动化业务流程,并根据客户端的需求传播和转换数据。例如,这可以包括监控社交网络中关于客户的产品或品牌的负面评论此外,提供这样一个既健壮又可扩展的解决方案是一项重要的任务。本文的工作为解决Web服务组合中的底层问题奠定了基础1.2Web服务组合中的挑战在过去的十年中,分布式应用程序一直在以疯狂的速度发展,关键是依赖于集成大量的可组合服务来提供大量具有附加值的新功能。 丰富的网络服务可在线导致研究人员和企业一样,以多种方式利用其潜力[阿隆索等人。,2004]。历史上,提出了几种解决方案来解决这个问题。 例如,SOAP(业务流程执行语言)曾经是编排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(平台即服务)产品已成为更容易获得和负担得起的替代方案[Zhanget al. ,2010]。例如,AWS2、GAE3、Heroku4和DigitalO-cean5等云计算提供商都为企业和个人提供了一种简单且经济实惠的方式,可以在可靠的基础设施上快速部署、监控和管理其服务由于服务是自主的,并且相互独立地部署、取消部署和升级,因此SOA使应用程序开发人员能够细粒度地控制如何平滑地更新他们的应用程序,以及如何使它们在生产环境中可伸缩因此,如今,基于SOA的应用程序的开发与持续服务开发和持续服务集成实践密切相关[Fowlerand Lewis,2014]。 这种新趋势加上服务的稳步增长并非没有挑战,并可能使SOA的传统愿景过时[Newman,2015],以及基于Web服务(WS-*)规范的经典实现。例如,这些长期存在的规范提出了定义Web服务的标准(SOAP:简单对象访问协议),以及定义这些服务之间的事务的标准(SOAP:业务流程执行语言)。 然而,根据开发人员的期望,使用这些事实上的标准作为组成过多服务的工作流可能是不够的。事实上,2. https://aws.amazon.com3. https://cloud.google.com/appengine4. https://www.heroku.com5. https://www.digitalocean.com第一章:介绍描述服务需要如何组合而不是定义应该实现什么的客户机需要预先静态声明它们依赖的服务,以执行所需的编排。然后,他们必须显式地指定如何以编程方式绑定到这些服务,以及控制流逻辑(调用服务、等待响应、错误处理等)。此外,客户端必须考虑服务之间的数据流操作和类型不兼容性,这进一步使任务复杂化。因此,开发人员必须在JavaScript中编写的代码数量与他们想要组合的服务数量成比例所写代码的高度复杂性通常使得XML和其他常规技术的使用在实践中并不真正适合,并且相关联的可视化编辑工具不可用。此外,现有的工作流语言通常需要组合服务的强类型和定义良好的接口然而,定义这样的接口不再是趋势,这是由于服务的快速增长,这些服务通常在没有任何契约的情况下公开其Web API(例如REST)[Maximilien et al. ,2007年]。因此,需要编写一些粘合代码来以特别和快速的方式组合服务从另一个角度来看,随着持续服务集成和开发(通常称为DevOps)的出现,工作流语言不仅需要支持指定服务的静态组合,而且还需要支持在设计时尚未计划的服务的动态集成[ Pautasso,2009 a; Pautasso and Alonso,2005]。这样做可以更平滑、更快速地集成新服务,同时还可以在编排级别提供更好的可靠性,以防所需服务无法响应,因为运行时系统可以动态选择等效服务。然而,传统方法在这方面失败了,特别是在微服务和REST API的上下文中最后,现有的工作流语言通常与执行引擎(如企业服务总线(ESB))捆绑在一起然而,ESB是众所周知的重量级执行平台[Chappell,2004]。 这使得它们的部署和管理更加昂贵和耗时,因为它们需要大量(人力和计算)资源来操作。因此,它们不符合Docker普及的轻量级容器和频繁部署Docker使开发人员能够根据特定的隐私要求在任何他们想要的地方部署他们的服务组合,例如个人云[Fuchs和Gürgens,2013]。因此,SOA范式必须发展。知名的服务提供商,如:亚马逊、Spotify和SoundCloud已经广泛采用了一种名为微服务的SOA范式。微服务只不过是局限于HTTP基础的SOA实例,即。它具有RESTful风格,没有WS-* 规范,并结合了各种工具来促进服务的快速部署和取消部署。 然而,组合服务的挑战仍然对微服务开发者开放,他们可以自由使用他们想要的编程语言。1.2. Web服务组合51.2.2检测Web服务数据中的特定更改最近出现了诸如IFTTT 6和Zapier 7的集成平台,其目的是协调诸如Facebook和Twitter的大量Web服务之间的交互[Liu et al. ,2000; Pandey et al. ,2004]。 它们使最终用户能够描述在Web服务上发生自定义事件时触发哪些操作[Ur et al. ,2016]。例如,当一条特定的地铁线路变得不可用时,人们可能想要自动地推特一条消息。然而,大多数现有的Web服务不提供指定自定义事件通知的方法 为了克服这一限制,平台所有者通过对受监控的服务进行周期性轮询来开发自己的通知系统。对于每项服务,都会定期获取当前状态并与前一个状态进行比较,以确定随时间变化的特定值 当检测到更改时,将引发相应的事件。因为需要为服务的每个事件开发特定的代码,所以支持的服务和事件的集合是有限的,并且不一定满足用户期望。监测过程的每一步都可能相对复杂。 作为示例,考虑使用Facebook服务来检测给定相册中具有给定标记用户的新照片。 要实现这个场景,首先需要定期轮询几个Facebook API端点(一个用于照片,一个用于标签),并在分页的响应中导航。然后将得到的聚合状态与前一个进行比较。但是,这种比较需要只关注新照片(由其唯一ID标识),而忽略其他不相关的更改,例如最后更新时间。即使是这样一个简单的用例也强调了这个过程的复杂性,这在两个不同的挑战中有所下降:状态计算和变化检测。虽然状态的计算有时需要从单个API端点获取唯一的资源,但通常需要实现更复杂的策略。例如,状态的构造可能需要导航通过一组API端点,其中若干请求必须以特定顺序链接以正确地获取相关数据。此外,服务返回的响应可以分页,因此需要几个后续请求来累积所有数据。因此,建立一个国家可能很快变得费力。一旦计算出一个状态,就有必要检测与前一个状态的变化然而,现成的技术可能会产生意想不到的或不相关的结果,就像之前的Facebook示例一样,其中仅修改了最后更新时间的照片不应被报告为不同。 开发一个通用的差分工具是一个众所周知的复杂问题,并且可能是NP难的,这取决于所考虑的更改操作和对输出大小的保证[Buttler,2004]。6. https://ifttt.com7. https://zapier.com第一章:第一章介绍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,以简化变更检测器的建设。POLLY允许在从RESTful API获取的JSON数据中描述更改检测策略。特定于域的语言提供了声明性的、简单但高度表达性的构造,用于描述如何从一个或多个API端点构造状态,如何识别状态中的更改,以及如何生成自定义输出。POLLY编译器自动生成一个高效的JavaScript实现,它运行在运行时系统之上,隐藏了HTTP身份验证和分页等低级需求在我们的上下文中,POLLY更改检测器允许生成自定义事件,以便在目标Web服务数据发生更改时自动触发RIA组合的执行。第三,我们提出了事件驱动的轻量级服务组合平台M EDLEY的体系结构。MEDLEY平台包括一个运行时系统,以支持使用RIA语言指定的服务组合的执行,并使第三方服务提供商的快速集成成为一旦定义,RIA规范被编译成运行在MEDLEY之上的低级代码。运行时系统依赖于一个事件驱动的,基于进程的通信范例的轻量级和高性能的执行模型。MEDILEY还支持使用POLLY指定的服务提供商组件的集成,从而基于POLLY变化检测器检测到的变化事件来此外,为了确保MEDLEY平台在生产环境中的可扩展性,我们专注于一种新的方法,在服务编排引擎的有效调度主要的挑战是支持越来越多的用户,同时考虑到服务组合使用的第三方服务的API速率限制。 据我们所知,这个问题在目前的技术水平中还没有得到解决。特别是,我们设计的M EDLEY支持水平扩展。水平扩展可以创建跨节点扩展的应用程序。 为此,以类似于DockerSwarm [Merkel,2014]的方式,我们将自定义调度器引入到M EDLEY平台,以便能够创建能够动态增加或减少M EDLEY节点数量的M EDLEY集群,以分配传入的工作负载。然而,与Docker Swarm相比,Docker Swarm对容器化应用程序是不可知的,我们自己的调度程序能够根据组合服务的依赖关系和组合服务消耗的资源来调度组合服务。因此,M EDLEY平台可以轻松部署在公共云基础设施上,从而仅对有效消耗的资源进行计费。此外,为了克服第三方服务的API速率限制规则,M EDLEY平台在集群的每个节点上增强了缓存功能。MEDLEY调度程序依赖于一种基于算法的方法来优化缓存
下载后可阅读完整内容,剩余1页未读,立即下载
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- 基于单片机的瓦斯监控系统硬件设计.doc
- 基于单片机的流量检测系统的设计_机电一体化毕业设计.doc
- 基于单片机的继电器设计.doc
- 基于单片机的湿度计设计.doc
- 基于单片机的流量控制系统设计.doc
- 基于单片机的火灾自动报警系统毕业设计.docx
- 基于单片机的铁路道口报警系统设计毕业设计.doc
- 基于单片机的铁路道口报警研究与设计.doc
- 基于单片机的流水灯设计.doc
- 基于单片机的时钟系统设计.doc
- 基于单片机的录音器的设计.doc
- 基于单片机的万能铣床设计设计.doc
- 基于单片机的简易安防声光报警器设计.doc
- 基于单片机的脉搏测量器设计.doc
- 基于单片机的家用防盗报警系统设计.doc
- 基于单片机的简易电子钟设计.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)