CN112243032B - 基于访问网关的服务调用方法及其系统 - Google Patents
基于访问网关的服务调用方法及其系统 Download PDFInfo
- Publication number
- CN112243032B CN112243032B CN202011101931.2A CN202011101931A CN112243032B CN 112243032 B CN112243032 B CN 112243032B CN 202011101931 A CN202011101931 A CN 202011101931A CN 112243032 B CN112243032 B CN 112243032B
- Authority
- CN
- China
- Prior art keywords
- service
- original
- metadata
- aggregated
- services
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/66—Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种基于访问网关的服务调用方法及其系统,包括服务编排管理中心,用于定义原始服务元数据,以及定义聚合服务元数据;还包括有服务编排执行引擎模块,还包括有访问网关模块。能够实现对不同协议进行服务编排,基于访问网关的服务调用,通过主动触发或被动触发的元数据实现热更新,通过基于原始服务前驱后继的请求来进行异步调度,通过支持异步处理原始服务响应,统一处理最终响应结果。由此,能够实现客户端与服务解耦,原始服务能够被复用。通过软件来实现本发明的时候,无需客户端多次请求不同原始服务,仅需要调用一次由原始服务编排的聚合服务即可。客户端只需要请求一次聚合服务就可以得到相应结果,从而减小了服务端的压力。
Description
技术领域
本发明涉及一种互联网政务领域的服务调用方法及其系统,尤其涉及一种基于访问网关的服务调用方法及其系统。
背景技术
目前,常规的服务编排是指按照规则将多个Restful服务或WebService服务进行组合,以一个新的服务对外提供多个服务汇总的能力。将此新的服务的请求参数映射到被编排的原始服务,并对每个原始服务的返回结果按照配置规则处理后,组装成最终结果后返回给调用端。
在互联网政务领域中,政府局办需要对外提供服务或部门之间需要相互调用服务以满足本各个局办的业务需求。业务简单的情况下,不需要多个服务就可以实现。某些稍有复杂的业务,需要多个服务公共写作才能满足需要,同时也随着服务功能的不断完善、组件的数量不断增加、服务的粒度不断减小,导致一个服务无法满足客户端的需求,那么客户端就需要向不同的服务端发送请求获取不同的数据,然后再依次处理获取的数据以达成自己的业务能力。
如图1所示,现有的常规系统,客户端需要服务端一、服务端二、及服务端三的数据,共同来完成某项业务。那么客户端需要依次向服务端一、服务端二、以及服务端三发送服务请求,然后接收服务端一、服务端二、服务端三的响应后,依次处理响应的结果得到自己需要的业务数据,以达成自己的业务目标。
针对以上客户端多次调用服务端服务的现状,往往会导致客户端的被动性,以及不确定性。主要体现在以下几个方面:
1、客户端调用服务端接口并按照自己的业务需求以硬编码方式对进行服务端响应数据解析,硬编码的方式会使得客户端与服务形成强耦合,对服务端的接口变动十分敏感。服务端接口升级或调整,必会导致客户端需要同步作出相应变化,以适应服务端服务的调整。
2、客户端需要分多次向服务组件发送服务请求,导致客户端耗时长。耗时长的原因有二,其一,客户端是按照一定的顺序请求服务端获取数据,期间处于等待状态;其二,客户端访问服务端服务需要经过多层路由转发,转发的过程会带来一部分网络消耗。
3、每一次服务请求需要调用一次服务端,随着调用服务数量的增加,访问网关的压力也会随着调用次数同步增加而压力同步增大。
4、对客户端能够处理不同协议的服务要求过高,在政务领域,广泛存在RESTFul及WebService风格的服务,那么就要求客户端同时能够适配此两种协议的处理能力。
有鉴于上述的缺陷,本设计人,积极加以研究创新,以期创设一种基于访问网关的服务调用方法及其系统,使其更具有产业上的利用价值。
发明内容
为解决上述技术问题,本发明的目的是提供一种基于访问网关的服务调用方法及其系统。可以实现多种不同协议的服务按照不同关系进行组合编排,以达到客户端与服务端充分解耦,更快的响应客户端或服务端的变化;将编排好的聚合服务发布到访问网关对外提供服务,一方面减轻客户端多次调用服务端对服务端造成的压力,另一方面减少客户端访问服务端的时间消耗,以便提高客户端用户体验。
本发明的基于访问网关支持多协议服务混合编排与异步调用的系统,其包括服务编排管理中心,用于定义原始服务元数据,以及定义聚合服务元数据;
还包括有服务编排执行引擎模块,用于对原始服务的请求进行调度,并处理组装最终的响应结果;
还包括有访问网关模块,用于注册已发布的聚合服务对外提供服务,并接收客户端请求路由到服务编排执行引擎模块。
进一步地,上述的基于访问网关支持多协议服务混合编排与异步调用的系统,其中,所述服务编排管理中心模块包括:
原始服务管理模块,用户定义原始服务的请求参数,响应参数,
聚合服务管理模块,用于定义聚合服务的请求参数与原始服务请求参数的映射关系,定义原始服务之间的依赖关系,定义原始服务响应参数与聚合服务响应参数的映射关系,
所述服务编排执行引擎模块包括:
服务编排元数据热加载模块,用于加载已发布的聚合服务和相关联的原始服务的元数据到服务编排执行引擎中,进行数据本地化,
服务编排异步执行调度模块,用于对原始服务的请求进行调度,并处理组装最终的响应结果。
基于访问网关的服务调用方法,其包括:
对不同协议进行服务编排,
基于访问网关的服务调用,
通过主动触发或被动触发的元数据实现热更新,
通过基于原始服务前驱后继的请求来进行异步调度,
通过支持异步处理原始服务响应,统一处理最终响应结果。
进一步地,上述的基于访问网关的服务调用方法,其中,所述对不同协议进行服务编排,包括如下步骤,
步骤一,确定完成某一业务所需的原始服务接口集,并且将此接口集中的原始服务的元数据分别通过原始服务管理模块进行管理,所述元数据主要包括请求方法、异常重试参数、请求参数、响应参数;
步骤二,通过在线测试功能来测试原始服务的配置参数是否正确,测试通过后方可启用,以备聚合服务进行编排使用;
步骤三,令所有原始服务均注册完成,创建聚合服务,需要关联此聚合服务所需要编排的原始服务;
步骤四,聚合服务关联原始服务后,进行聚合服务配置,对聚合服务相关的元数据进行配置。
步骤五,聚合服务配置完成之后,需要通过在线测试测试配置的参数是否正确;
步骤六,聚合服务测试通过后,将此聚合服务进行启用,并发布到访问网关,对外提供服务。
更进一步地,上述的基于访问网关的服务调用方法,其中,所述对聚合服务相关的元数据进行配置的过程为,
根据需要配置此聚合服务的基础参数,选择此聚合服务的请求方法。采用的基础参数可包括,此聚合服务名称、此聚合服务描述、以及此聚合服务使用范围等;
设置此聚合服务的请求参数,并且将此聚合服务的所有请求参数分别映射到所关联的原始服务的对应的请求参数;(此部分聚合服务参数存在的意义是为了参数的传递,目的是为关联的原始服务请求设置请求参数。比如,存在两个原始服务各需要一个请求参数分别为param1和param2,那么在聚合服务的请求参数位置需要设置两个请求参数paramA和paramB,分别与原始服务参数param1和param2做关联映射。)
设置此聚合服务所关联的原始服务之间的参数依赖关系;
设置此聚合服务最终的响应结果参数,配置此响应结果的数据分别来自所关联的哪些原始服务响应结果的哪些参数。此部分配置聚合服务的响应结果来源,由于聚合服务是多个原始服务的集合,那么聚合服务的响应结果来自于所关联的原始服务的响应结果。比如:聚会服务关联了两个原始服务A和B,原始服务A的响应结果包含两个字段resp_param11和resp_param12,原始服务B的响应结果包含三个字段resp_param21、resp_param22和resp_param23,此聚合服务的最终响应结果为resp_param11、resp_param22和resp_param23的组合。那么,在聚合服务的响应配置中就需要配置三个响应参数resp_param1、resp_param2和resp_param3与resp_param11、resp_param22和resp_param23的映射关系。
更进一步地,上述的基于访问网关的服务调用方法,其中,所述基于访问网关的服务调用的过程为,
服务编排管理中心将已发布的聚合服务注册到访问网关,访问网关接收到的客户端发送的服务请求信息后,解析请求得到目标聚合服务的唯一标识信息;
访问网关根聚合服务的唯一标识信息,确定是否存在已发布的聚合服务,若有,则根据目标聚合服务的实体地址调用服务编排执行引擎,并异步等待服务编排执行引擎的处理结果;
访问网关得到服务编排执行引擎的响应信息后,将所述响应信息返回到客户端。实际上,此部分的响应信息就是上诉配置的聚合服务的响应信息。
更进一步地,上述的基于访问网关的服务调用方法,其中,所述通过主动触发或被动触发的元数据实现热更新的过程为,
通过主动触发或被动触发元数据实现热更新期间,通过服务编排管理中心,批量获取聚合数据资源元数据后,对获取的聚合服务元数据进行预处理;
依次遍历批量获取的聚合服务元数据,获取每一个聚合服务中关联的所有原始服务元数据的唯一标识信息,根据所述原始服务元数据的唯一标识信息批量获取对应的原始服务元数据;
将批量获取的原始服务元数据,按照聚合服务元数据中定义的原始服务依赖关系,形成调度执行流图结构数据,然后验证调度执行流图结构数据是否为有向无环图,若为非有向无环图,此数据将被认定为是错误的,并停止将此数据初始化到服务编排执行引擎本地缓存中,若调度执行流图结构通过验证为有向无环图,将会继续对此部分原始服务的调度顺序进行优化。最后将优化后的原始服务调度执行流图存于本地缓存中,以备此聚合服务被请求时本地获取参数而不是实时查询元数据。
更进一步地,上述的基于访问网关的服务调用方法,其中,所述主动触发热更新流程,在两种情况下会主动触发,第一种情况,在服务编排执行引擎启动时,服务编排执行引擎的元数据热更新模块会主动加载已启用的聚合服务元数据信息,另一种情况是以时间为周期,周期性查询状态变更的聚合服务元数据;
状态变更的聚合服务元数据分为两种类型,一种是在周期内新增状态为启用的聚合服务元数据,对于此类情况需要将所述新启用的元数据加载到服务编排执行引擎中,另一种是在时间内状态由启用变更为禁用的元数据,此类情况需要将禁用的元数据从服务编排执行引擎中移除;
被动触发热更新流程,仅在一种情况下会被触发,其为,某个聚合服务已启用,并且已经发布到访问网关,当服务编排执行引擎还未同步该聚合服务的元数据,此时存在客户端向访问网关发起了针对该聚合服务的请求,在服务编排执行引擎的本地缓存中并不存在该聚合服务的元数据,则会触发被动更该新聚合服务的元数据到服务编排执行引擎本地内存中。
更进一步地,上述的基于访问网关的服务调用方法,其中,所述前驱后继的方式指的是,在原始服务调度过程中,每一个原始服务请求完成之后,首先会标识此原始服务已执行完成,然后验证是否存在依赖此原始服务响应数据的其他原始服务,如果存在,则验证此存在的原始服务是否还依赖其他原始服务的响应数据,如果不再依赖其他的原始服务,则激活此存在的原始服务进行调度执行,如果还依赖其他的原始服务,则需要验证被此存在的原始服务依赖的其他原始服务是否都已经被调度完成,如果存在没有被调度完成的原始服务,则此原始服务将不会被激活进入调度,只有当所依赖的原始服务被全部调度完成,才能被其所依赖的原始服务驱动并激活进入调度。
再进一步地,上述的基于访问网关的服务调用方法,其中,所述通过支持异步处理原始服务响应,统一处理最终响应结果的过程为,
基于原始服务调度执行流图,每一个原始服务执行完成之后,都会将原始服务的响应结果交给响应结果处理器进行解析,
如果存在其他原始服务依赖此原始服务的响应结果,则采用同步的方式使用响应对象处理器进行解析,响应对象处理器解析出依赖的原始服务所需要的参数后,继续调度执行下一个原始服务,同时会将解析的内容存在响应对象处理器内部以供组装最终响应结果,
如果不存在其他原始服务依赖此原始服务的响应结果,则将采用异步解析的方式对此原始服务的响应结果进行解析,
所有的原始服务调度完成之后,使用响应对象处理器组装聚合服务最终响应结果,并将响应结果返回给上述访问网关。
借由上述方案,本发明至少具有以下优点:
1、能够实现客户端与服务解耦,原始服务能够被复用。
2、通过软件来实现本发明的时候,无需客户端多次请求不同原始服务,仅需要调用一次由原始服务编排的聚合服务即可。
3、聚合服务中编排的所有原始服务采用异步并行调用,更快得到原始服务的响应结果,并依照响应编排规则返回最终结果。如果原始服务响应结构放生变化,客户端无需调整业务逻辑,仅需要调整服务编排响应配置数据。
4、客户端只需要请求一次聚合服务就可以得到相应结果,而不需要多次调用原始服务,从而减小了服务端的压力。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
附图说明
图1是基于访问网关支持多协议服务混合编排与异步调用的系统的结构示意图。
图2是串行流程的实施示意图。
图3是并行流程的实施示意图。
图4是执行业务操作的串并组合流程的实施示意图。
图5是服务执行流程单向、多向复合的流程实施示意图。
图6是基于访问网关的服务调用方法的流程示意图。
图7是聚合服务元数据本地化的实施示意图。
图8是聚合服务相应结果处理流程的实施示意图。
图9是现有技术中客户端与服务端组件的系统结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
如图1所示的基于访问网关支持多协议服务混合编排与异步调用的系统,其与众不同之处在于:包括服务编排管理中心,用于定义原始服务元数据,以及定义聚合服务元数据;还包括有服务编排执行引擎模块,用于对原始服务的请求进行调度,并处理组装最终的响应结果;还包括有访问网关模块,用于注册已发布的聚合服务对外提供服务,并接收客户端请求路由到服务编排执行引擎模块。
结合本发明一较佳的实施方式来看,服务编排管理中心模块包括:原始服务管理模块,用户定义原始服务的请求参数,响应参数。聚合服务管理模块,用于定义聚合服务的请求参数与原始服务请求参数的映射关系,定义原始服务之间的依赖关系,定义原始服务响应参数与聚合服务响应参数的映射关系。
同时,本发明采用的服务编排执行引擎模块包括:服务编排元数据热加载模块,用于加载已发布的聚合服务和相关联的原始服务的元数据到服务编排执行引擎中,进行数据本地化;服务编排异步执行调度模块,用于对原始服务的请求进行调度,并处理组装最终的响应结果。按照该常规的执行方式来看,调度过程包括:聚合服务请求参数映射给原始服务请求参数,调度原始服务请求,原始服务响应参数处理,聚合服务最终响应参数处理。对于请求超时等网络异常时,还会涉及请求重试处理过程。
如图2至8所示,本发明还提供一种基于访问网关的服务调用方法,其可包括:对不同协议进行服务编排,基于访问网关的服务调用,通过主动触发或被动触发的元数据实现热更新,通过基于原始服务前驱后继的请求来进行异步调度,通过支持异步处理原始服务响应,统一处理最终响应结果。
结合实际实施来看,对不同协议进行服务编排,包括如下步骤,
步骤一,确定完成某一业务所需的原始服务接口集,并且将此接口集中的原始服务的元数据分别通过原始服务管理模块进行管理,元数据主要包括请求方法(GET或POST)、异常重试参数、请求参数、响应参数;
步骤二,通过在线测试功能来测试原始服务的配置参数是否正确,测试通过后方可启用,以备聚合服务进行编排使用;
步骤三,令所有原始服务均注册完成,创建聚合服务,需要关联此聚合服务所需要编排的原始服务;
步骤四,聚合服务关联原始服务后,进行聚合服务配置,对聚合服务相关的元数据进行配置。
步骤五,聚合服务配置完成之后,需要通过在线测试测试配置的参数是否正确;
步骤六,聚合服务测试通过后,将此聚合服务进行启用,并发布到访问网关,对外提供服务。
进一步来看,对聚合服务相关的元数据进行配置的过程为如下:
根据需要配置此聚合服务的基础参数,选择此聚合服务的请求方法(GET或POST);
设置此聚合服务的请求参数,并且将此聚合服务的所有请求参数分别映射到所关联的原始服务的对应的请求参数。因为原始服务请求需要动态传入部分参数,那么配置聚合服务请求参数的目的就是为了给配置原始服务请求参数;
设置此聚合服务所关联的原始服务之间的参数依赖关系。具体来说,比如聚合服务A关联了三个原始服务分别为原始服务A、原始服务B、和原始服务C,并且,原始服务B的部分请求参数来自于原始服务A的响应结果,那么此处的配置依赖关系指的就是:配置原始服务B的哪些参数来自于原始服务A的响应结果的哪些数据。
设置此聚合服务最终的响应结果参数,配置此响应结果的数据分别来自所关联的哪些原始服务响应结果的哪些参数。
结合实际实施来看,本发明采用的基于访问网关的服务调用的过程如下:
服务编排管理中心将已发布的聚合服务注册到访问网关,访问网关接收到的客户端发送的服务请求信息后,解析请求得到目标聚合服务的唯一标识信息。
访问网关根聚合服务的唯一标识信息,确定是否存在已发布的聚合服务,若有,则根据目标聚合服务的实体地址调用服务编排执行引擎,并异步等待服务编排执行引擎的处理结果。
访问网关得到服务编排执行引擎的响应信息后,将的响应信息返回到客户端。
再进一步来看,通过主动触发或被动触发的元数据实现热更新的过程如下:
通过主动触发或被动触发元数据实现热更新期间,通过服务编排管理中心,批量获取聚合数据资源元数据后,对获取的聚合服务元数据进行预处理,以减少聚合服务在被访问时逻辑处理的耗时。
依次遍历批量获取的聚合服务元数据,获取每一个聚合服务中关联的所有原始服务元数据的唯一标识信息,根据原始服务元数据的唯一标识信息批量获取对应的原始服务元数据。
将批量获取的原始服务元数据,按照聚合服务元数据中定义的原始服务依赖关系,形成调度执行流图结构数据,然后验证调度执行流图结构数据是否为有向无环图,若为非有向无环图,此数据将被认定为是错误的,并停止将此数据初始化到服务编排执行引擎本地缓存中,若调度执行流图结构通过验证为有向无环图,将会继续对此部分原始服务的调度顺序进行优化。最后将优化后的原始服务调度执行流图存于本地缓存中,以备此聚合服务被请求时本地获取参数而不是实时查询元数据,从而减少处理逻辑的时间消耗。
同时,主动触发热更新流程,在两种情况下会主动触发,第一种情况,在服务编排执行引擎启动时,服务编排执行引擎的元数据热更新模块会主动加载已启用的聚合服务元数据信息,另一种情况是以时间为周期,周期性查询状态变更的聚合服务元数据。
状态变更的聚合服务元数据分为两种类型,一种是在周期内新增状态为启用的聚合服务元数据,对于此类情况需要将的新启用的元数据加载到服务编排执行引擎中,另一种是在时间内状态由启用变更为禁用的元数据,此类情况需要将禁用的元数据从服务编排执行引擎中移除。
被动触发热更新流程,仅在一种情况下会被触发。具体来说,比如聚合服务A已启用,并且已经发布到访问网关,当服务编排执行引擎还未同步的聚合服务A的元数据。此时存在客户端向访问网关发起了针对聚合服务A的请求,那么在服务编排执行引擎的本地缓存中并不存在聚合服务A的元数据,那么会触发被动更新聚合服务A的元数据到服务编排执行引擎本地内存中。
本发明实施期间所采用的前驱后继的方式指的是,在原始服务调度过程中,每一个原始服务请求完成之后,首先会标识此原始服务已执行完成,然后验证是否存在依赖此原始服务响应数据的其他原始服务,如果存在,则验证此存在的原始服务是否还依赖其他原始服务的响应数据,如果不再依赖其他的原始服务,则激活此存在的原始服务进行调度执行,如果还依赖其他的原始服务,则需要验证被此存在的原始服务依赖的其他原始服务是否都已经被调度完成,如果存在没有被调度完成的原始服务,则此原始服务将不会被激活进入调度,只有当所依赖的原始服务被全部调度完成,才能被其所依赖的原始服务驱动并激活进入调度。
在上述调度的过程中,如果由于网络不稳导致的请求超时,那么会依照上述的原始服务的重试配置,进行调度重试;如果没有达到配置的重试次数的阙值,那么会一直进行重试调度,直到服务请求成功。如果达到了配置的重试阙值,将终止此聚合服务请求。
优化后的原始服务调度执行流图是一种变种的有向无环图结构,调度执行流图中的原始服务是按照优先级进行分批排序的。
优先级是按照依赖关系定义的,不依赖其他原始服务的原始资源被认定为最高优先级,将会被放在首批执行。按照依赖的顺序,随着依赖深度的增加,优先级逐步降低。
在实际的调度过程中,虽然按照此调度执行流图中定义的原始服务的优先级执行,但是不会出现明显的批次关系,而是采用前驱后继的方式进行调度。
为了更好的实施本发明,其采用的通过支持异步处理原始服务响应,统一处理最终响应结果的过程如下:
基于原始服务调度执行流图,每一个原始服务执行完成之后,都会将原始服务的响应结果交给响应结果处理器进行解析。如果存在其他原始服务依赖此原始服务的响应结果,则采用同步的方式使用响应对象处理器进行解析,响应对象处理器解析出依赖的原始服务所需要的参数后,继续调度执行下一个原始服务,同时会将解析的内容存在响应对象处理器内部以供组装最终响应结果。如果不存在其他原始服务依赖此原始服务的响应结果,则将采用异步解析的方式对此原始服务的响应结果进行解析,
在所有的原始服务调度完成之后,使用响应对象处理器组装聚合服务最终响应结果,并将响应结果返回给上述访问网关。
本发明的工作原理如下:
实施例一
基于访问网关支持多协议服务混合编排与异步调用的系统,包括服务编排管理中心1、服务编排执行引擎2和多个访问网关3。服务编排管理中心1用于编排聚合服务,每一个聚合服务流程对应多个原始服务,即编排多个原始服务的执行流程。服务编排执行引擎2用于执行聚合服务请求,即调度被编排到聚合服务中的原始服务,当聚合服务执行引擎2启动时,会将已发布的聚合服务元数据加载到本地内,以便在处理聚合服务请求的过程中只需要从本地获取聚合服务和原始服务的元数据。服务网关3对客户端请求的聚合服务进行路由,如果客户端请求的聚合服务已经发布,那么将请求转发到服务编排执行引擎,进行服务调度组执行。
进一步来看,服务编排管理中心1包括原始服务管理模块11和聚合服务管理模块12。原始服务管理模块11用于配置原始服务的请求及响应信息,聚合服务管理模块12用于配置聚合服务的请求参数及响应参数,以及编排原始服务的依赖关系,从而定义原始服务执行流程。服务编排执行引擎2包括服务编排热更新模块22和服务编排异步执行调度模块21。服务编排热更新模块22用于更新已发布的聚合服务元数据到服务编排执行引擎本地,服务编排异步执行调度模块21用于执行客户端请求的服务编排的聚合服务的逻辑,即按照聚合服务中配置的原始资源的依赖关系,对此聚合服务所关联的原始服务进行调度执行。
同时,聚合服务按照原始服务之间的依赖关系,对原始服务进行流程编排。服务的执行流程可以是:串行、并行、串并组合方式,可以根据实际需求进行不同的顺序的组合。具体选择哪种顺序,需要用户根据自己的实际需求确定。
图2为本申请实施例提供的执行业务操作的串行流程的示意图。原始服务以串行的顺序进行调度执行,第一个原始服务执行完成后,原始服务一的响应结果部分数据作为原始服务二的请求参数。第二个原始服务执行完成之后,原始服务二的响应结果部分数据作为原始服务三的请求参数。依次类推的执行。最后一个原始服务执行完成之后,将组装最终响应结果返回给客户端。
图3为本申请实施例提供的执行业务操作的并行流程的示意图,采用异步的方式多个原始服务同时被请求,等待所有原始服务响应结束之后,组装最终结果返回到客户端。
图4为本申请实施例提供的执行业务操作的串并组合流程的示意图。在此流程中存在并行执行的原始服务,也存在串行执行的原始服务。并行执行过程同上并行执行流程。服务四的执行,需要等待服务一、服务二、服务三都得到响应结果之后,才能继续被调度执行。其原因在于,服务四需要服务一、服务二、服务三的响应结果作为自己的请求参数。依次类推,直到所有的原始服务被调度执行完成之后,组装最终结果返回到客户端。
实施例二
如图5,服务的执行流程可以是单向流程,也可以是多向流程。
单向流程指的是多个原始服务依次相连。具体来说,每一个节点均只接收前一个原始服务的响应结果,如单向流程JK,在单向流程JK中原始服务J只接收来自聚合服务的映射参数作为入参,原始服务K只接收来自原始服务J的响应结果作为入参。
多向流程的多个服务节点中,至少有一个服务节点的入参数据来自其他两个或者更多个服务节点的响应结果。如流程ACDF、ABDF、ACEF和HEF等均为多向流程。
以多向流程ABDF为例,原始服务节点A执行完成之后,从原始服务A的响应结果中解析出原始服务B所需要的数据,原始服务B执行完成之后,从原始服务B的响应结果中解析出原始服务D所需要的数据,原始服务D需要收到原始服务B与原始服务C的结果之后才会被执行,原始服务D执行完成之后,从原始服务D的响应结果中解析出原始服务F所需要的数据,原始服务F需要收到原始服务D与原始服务E的结果之后才会被执行,原始服务F执行完成之后。此条流程被执行完成,验证其他流程是否都已执行完成,如果都已经执行完成,最后组装最终的响应结果返回给客户端。
在每一个聚合服务的编排流程中,每个原始服务节点均在不同的线程上异步执行,聚合服务的请求从优先级最高的同一批原始服务节点开始执行,所有服务流程的最后一个原始服务节点完成之后,组装最终结果并输出响应数据。
实施例三
如图5、6所示,本发明公开了一种基于访问网关支持多协议服务混合编排与异步调用的系统的基于访问网关的服务调用的方法,包括以下步骤:
原始服务在服务编排管理中心被编排成聚合服务,并测试通过之后,被发布到访问网关。
依照一定的热更新策略,聚合服务及原始服务的元数据被更新到服务编排执行引擎本地缓存中,实现元数据本地化。
在服务网关获得聚合服务的请求之后,首先会对访问进行基础验证,验证通过会将请求路由到服务编排执行引擎。
在服务编排执行引擎首先会对聚合服务请求参数做基础验证,包括但不限于验证此聚合资源的元数据是否在本地存在,如果不存在,则需要调用服务编排管理服务查询关于此聚合资源的元数据,查询到聚合资源的元数据之后会进行数据元数据本地换的预处理逻辑。
预处理完成之后,从本地缓存中获取此聚合服务的元数据,根据此聚合服务的配置的调度规则进行原始服务调度,调度完成之后依据聚合服务元数据配置的响应数据来源组装最终响应结果。
如图6中,步骤8将聚合服务元数据进行数据本地化逻辑包括以下子步骤:
通过服务编排管理中心提供的接口,来获取聚合服务及原始服务的元数据。根据聚合服务定义的原始服务之间的依赖关系,形成调用执行流图。
对于形成的调用执行流图,首先需要验证此图结构是否为有向无环图,如果此图中存在有向环,那么将被认定为此图结构为非有向无环图。如果此图为有向无环图,那么将继续使用调度优化器对调度顺序进行优化。
优化完成之后,将优化后的图结构数据,存于本地缓存中。至此,服务编排执行引擎完成元数据热更新流程。
图6中步骤10依据聚合资源编排规则对原始资源进行调度,并处理最终响应结果包括以下子步骤:
聚合服务中编排的原始服务在调度的过程中,每一个原始服务执行完成之后,都会将原始服务的响应结果进行解析,解析的方式有两种,一种为异步解析原始服务的响应结果,另一种是同步解析原始服务的响应结果。
采用何种解析方式主要依据是:是否存在其他原始服务依赖此原始服务的响应结果。如果存在其他原始服务依赖此原始服务的响应结果,那么采用同步的方式使用响应对象处理器进行解析,响应对象处理器解析出依赖的原始服务所需要的参数后,继续调度执行下一个原始服务,同时会将解析的内容存在响应对象处理器内部以供组装最终响应结果。如果不存在其他原始服务依赖此原始服务的响应结果,那么将采用异步解析的方式对此原始服务的响应结果进行解析。
所有的原始服务调度完成之后,使用响应对象处理器组装最终响应结果,并将响应结果返回。
通过上述的文字表述并结合附图可以看出,采用本发明后,拥有如下优点:
1、能够实现客户端与服务解耦,原始服务能够被复用。
2、通过软件来实现本发明的时候,无需客户端多次请求不同原始服务,仅需要调用一次由原始服务编排的聚合服务即可。
3、聚合服务中编排的所有原始服务采用异步并行调用,更快得到原始服务的响应结果,并依照响应编排规则返回最终结果。如果原始服务响应结构放生变化,客户端无需调整业务逻辑,仅需要调整服务编排响应配置数据。
4、客户端只需要请求一次聚合服务就可以得到相应结果,而不需要多次调用原始服务,从而减小了服务端的压力。
此外,本发明所描述的指示方位或位置关系,均为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或构造必须具有特定的方位,或是以特定的方位构造来进行操作,因此不能理解为对本发明的限制。
在本发明中,除非另有明确的规定和限定,术语“连接”、“设置”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个组件内部的连通或两个组件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。并且它可以直接在另一个组件上或者间接在该另一个组件上。当一个组件被称为是“连接于”另一个组件,它可以是直接连接到另一个组件或间接连接至该另一个组件上。
以上所述仅是本发明的优选实施方式,并不用于限制本发明,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变型,这些改进和变型也应视为本发明的保护范围。
Claims (1)
1.基于访问网关支持多协议服务混合编排与异步调用的系统,其特征在于:包括服务编排管理中心,用于定义原始服务元数据,以及定义聚合服务元数据;
还包括有服务编排执行引擎模块,用于对原始服务的请求进行调度,并处理组装最终的响应结果;
还包括有访问网关模块,用于注册已发布的聚合服务对外提供服务,并接收客户端请求路由到服务编排执行引擎模块;
所述服务编排管理中心模块包括:
原始服务管理模块,用户定义原始服务的请求参数,响应参数,
聚合服务管理模块,用于定义聚合服务的请求参数与原始服务请求参数的映射关系,定义原始服务之间的依赖关系,定义原始服务响应参数与聚合服务响应参数的映射关系,
所述服务编排执行引擎模块包括:
服务编排元数据热加载模块,用于加载已发布的聚合服务和相关联的原始服务的元数据到服务编排执行引擎中,进行数据本地化,
服务编排异步执行调度模块,用于对原始服务的请求进行调度,并处理组装最终的响应结果;
对不同协议进行服务编排,基于访问网关的服务调用,通过主动触发或被动触发的元数据实现热更新,通过基于原始服务前驱后继的请求来进行异步调度,通过支持异步处理原始服务响应,统一处理最终响应结果,
所述对不同协议进行服务编排,包括如下步骤,
步骤一,确定完成某一业务所需的原始服务接口集,并且将此接口集中的原始服务的元数据分别通过原始服务管理模块进行管理,所述元数据主要包括请求方法、异常重试参数、请求参数、响应参数;
步骤二,通过在线测试功能来测试原始服务的配置参数是否正确,测试通过后方可启用,以备聚合服务进行编排使用;
步骤三,令所有原始服务均注册完成,创建聚合服务,需要关联此聚合服务所需要编排的原始服务;
步骤四,聚合服务关联原始服务后,进行聚合服务配置,对聚合服务相关的元数据进行配置;
步骤五,聚合服务配置完成之后,需要通过在线测试测试配置的参数是否正确;
步骤六,聚合服务测试通过后,将此聚合服务进行启用,并发布到访问网关,对外提供服务;
所述对聚合服务相关的元数据进行配置的过程为,根据需要配置此聚合服务的基础参数,选择此聚合服务的请求方法;设置此聚合服务的请求参数,并且将此聚合服务的所有请求参数分别映射到所关联的原始服务的对应的请求参数;设置此聚合服务所关联的原始服务之间的参数依赖关系;设置此聚合服务最终的响应结果参数,配置此响应结果的数据分别来自所关联的哪些原始服务响应结果的哪些参数;
所述基于访问网关的服务调用的过程为,服务编排管理中心将已发布的聚合服务注册到访问网关,访问网关接收到的客户端发送的服务请求信息后,解析请求得到目标聚合服务的唯一标识信息;访问网关根聚合服务的唯一标识信息,确定是否存在已发布的聚合服务,若有,则根据目标聚合服务的实体地址调用服务编排执行引擎,并异步等待服务编排执行引擎的处理结果;访问网关得到服务编排执行引擎的响应信息后,将所述响应信息返回到客户端;
所述通过主动触发或被动触发的元数据实现热更新的过程为,通过主动触发或被动触发元数据实现热更新期间,通过服务编排管理中心,批量获取聚合数据资源元数据后,对获取的聚合服务元数据进行预处理;依次遍历批量获取的聚合服务元数据,获取每一个聚合服务中关联的所有原始服务元数据的唯一标识信息,根据所述原始服务元数据的唯一标识信息批量获取对应的原始服务元数据;将批量获取的原始服务元数据,按照聚合服务元数据中定义的原始服务依赖关系,形成调度执行流图结构数据,然后验证调度执行流图结构数据是否为有向无环图,若为非有向无环图,此数据将被认定为是错误的,并停止将此数据初始化到服务编排执行引擎本地缓存中,若调度执行流图结构通过验证为有向无环图,将会继续对此部分原始服务的调度顺序进行优化,最后将优化后的原始服务调度执行流图存于本地缓存中,以备此聚合服务被请求时本地获取参数而不是实时查询元数据;
所述主动触发热更新流程,在两种情况下会主动触发,第一种情况,在服务编排执行引擎启动时,服务编排执行引擎的元数据热更新模块会主动加载已启用的聚合服务元数据信息,另一种情况是以时间为周期,周期性查询状态变更的聚合服务元数据;状态变更的聚合服务元数据分为两种类型,一种是在周期内新增状态为启用的聚合服务元数据,对于此类情况需要将所述新启用的元数据加载到服务编排执行引擎中,另一种是在时间内状态由启用变更为禁用的元数据,此类情况需要将禁用的元数据从服务编排执行引擎中移除;被动触发热更新流程,仅在一种情况下会被触发,其为,某个聚合服务已启用,并且已经发布到访问网关,当服务编排执行引擎还未同步该聚合服务的元数据,此时存在客户端向访问网关发起了针对该聚合服务的请求,在服务编排执行引擎的本地缓存中并不存在该聚合服务的元数据,则会触发被动更新聚合服务的元数据到服务编排执行引擎本地内存中;
所述前驱后继的方式指的是,在原始服务调度过程中,每一个原始服务请求完成之后,首先会标识此原始服务已执行完成,然后验证是否存在依赖此原始服务响应数据的其他原始服务,如果存在,则验证此存在的原始服务是否还依赖其他原始服务的响应数据,如果不再依赖其他的原始服务,则激活此存在的原始服务进行调度执行,如果还依赖其他的原始服务,则需要验证被此存在的原始服务依赖的其他原始服务是否都已经被调度完成,如果存在没有被调度完成的原始服务,则此原始服务将不会被激活进入调度,只有当所依赖的原始服务被全部调度完成,才能被其所依赖的原始服务驱动并激活进入调度;
所述通过支持异步处理原始服务响应,统一处理最终响应结果的过程为,基于原始服务调度执行流图,每一个原始服务执行完成之后,都会将原始服务的响应结果交给响应结果处理器进行解析,如果存在其他原始服务依赖此原始服务的响应结果,则采用同步的方式使用响应对象处理器进行解析,响应对象处理器解析出依赖的原始服务所需要的参数后,继续调度执行下一个原始服务,同时会将解析的内容存在响应对象处理器内部以供组装最终响应结果,如果不存在其他原始服务依赖此原始服务的响应结果,则将采用异步解析的方式对此原始服务的响应结果进行解析,所有的原始服务调度完成之后,使用响应对象处理器组装聚合服务最终响应结果,并将响应结果返回给上述访问网关。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011101931.2A CN112243032B (zh) | 2020-10-15 | 2020-10-15 | 基于访问网关的服务调用方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011101931.2A CN112243032B (zh) | 2020-10-15 | 2020-10-15 | 基于访问网关的服务调用方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112243032A CN112243032A (zh) | 2021-01-19 |
CN112243032B true CN112243032B (zh) | 2022-11-04 |
Family
ID=74169203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011101931.2A Active CN112243032B (zh) | 2020-10-15 | 2020-10-15 | 基于访问网关的服务调用方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112243032B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113805870B (zh) * | 2021-09-18 | 2024-01-30 | 上海熙菱信息技术有限公司 | 一种基于bff架构的服务接口编排方法和系统 |
CN114143373B (zh) * | 2021-11-02 | 2023-11-28 | 福建福诺移动通信技术有限公司 | 基于bpmn规范的能力编排引擎优化系统及方法 |
CN114866479A (zh) * | 2022-04-24 | 2022-08-05 | 中电万维信息技术有限责任公司 | 一种基于服务网关的业务融合方法 |
CN115277745B (zh) * | 2022-06-24 | 2024-07-26 | 湖南大学 | 一种支持异步调度的服务总线编排系统及方法 |
CN115225712B (zh) * | 2022-07-01 | 2023-11-21 | 福建天泉教育科技有限公司 | 一种接口编排方法及终端 |
CN118118471B (zh) * | 2024-03-04 | 2024-09-20 | 北京华焱坤泰科技有限公司 | 基于http协议的服务流程编排方法、设备、计算机程序产品、以及计算机可读存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9785482B2 (en) * | 2010-09-17 | 2017-10-10 | Oracle International Corporation | System and method for extending a web service environment to support scalable asynchronous clients |
CN106846226A (zh) * | 2017-01-19 | 2017-06-13 | 湖北省基础地理信息中心(湖北省北斗卫星导航应用技术研究院) | 一种时空信息组装管理系统 |
CN109002362B (zh) * | 2017-06-06 | 2021-12-24 | 创新先进技术有限公司 | 一种服务方法、装置、系统以及电子设备 |
CN110618810A (zh) * | 2019-06-27 | 2019-12-27 | 武汉大学 | 一种基于元数据驱动的多样化服务的混合编排方法 |
-
2020
- 2020-10-15 CN CN202011101931.2A patent/CN112243032B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112243032A (zh) | 2021-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112243032B (zh) | 基于访问网关的服务调用方法及其系统 | |
US11481396B2 (en) | Executing untrusted commands from a distributed execution model | |
US20220327149A1 (en) | Dynamic partition allocation for query execution | |
US20230177047A1 (en) | Using worker nodes to process results of a subquery | |
US20220156335A1 (en) | Streaming data processing | |
US11663227B2 (en) | Generating a subquery for a distinct data intake and query system | |
US11615104B2 (en) | Subquery generation based on a data ingest estimate of an external data system | |
US11314753B2 (en) | Execution of a query received from a data intake and query system | |
US20200364223A1 (en) | Search time estimate in a data intake and query system | |
US11461334B2 (en) | Data conditioning for dataset destination | |
US20190138640A1 (en) | Subquery generation based on search configuration data from an external data system | |
US20190147092A1 (en) | Distributing partial results to worker nodes from an external data system | |
US20180089259A1 (en) | External dataset capability compensation | |
US20180089306A1 (en) | Query acceleration data store | |
US20180089269A1 (en) | Query processing using query-resource usage and node utilization data | |
US8892415B2 (en) | Model-based systems and methods for monitoring resources | |
US20190095488A1 (en) | Executing a distributed execution model with untrusted commands | |
CN111414381B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
WO2021238796A1 (zh) | 下载任务异步处理方法、装置、系统和存储介质 | |
CN110581893B (zh) | 数据传输方法、装置、路由设备、服务器及存储介质 | |
CN111913784A (zh) | 任务调度方法及装置、网元、存储介质 | |
CN116881040A (zh) | 一种业务操作处理方法、装置、电子装置和存储介质 | |
KR100974621B1 (ko) | Rfid 비즈니스 인식 프레임워크 | |
CN117632395A (zh) | 工作流处理方法、装置、设备、存储介质和程序产品 | |
JP3950752B2 (ja) | 装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |