CN115866056A - 服务调用方法和装置、电子设备、计算机可读存储介质 - Google Patents
服务调用方法和装置、电子设备、计算机可读存储介质 Download PDFInfo
- Publication number
- CN115866056A CN115866056A CN202211515391.1A CN202211515391A CN115866056A CN 115866056 A CN115866056 A CN 115866056A CN 202211515391 A CN202211515391 A CN 202211515391A CN 115866056 A CN115866056 A CN 115866056A
- Authority
- CN
- China
- Prior art keywords
- service
- target
- configuration information
- dependency relationship
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 230000008569 process Effects 0.000 claims abstract description 35
- 239000002131 composite material Substances 0.000 claims description 44
- 238000013507 mapping Methods 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 14
- 238000004458 analytical method Methods 0.000 claims description 8
- 238000011161 development Methods 0.000 abstract description 20
- 238000012423 maintenance Methods 0.000 abstract description 7
- 239000003292 glue Substances 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 239000000203 mixture Substances 0.000 description 4
- 239000012141 concentrate Substances 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本公开关于一种服务调用方法和装置、电子设备、计算机可读存储介质,服务调用方法包括:接收客户端发送的服务调用请求,其中,服务调用请求针对由多个目标服务构成的目标组合服务,服务调用请求包括输入数据;获取目标组合服务的配置信息,其中,目标组合服务的配置信息用于指示服务接口网关按照预设顺序向服务器调用多个目标服务;根据目标组合服务的配置信息,按照预设顺序向服务器调用多个目标服务对输入数据进行处理,得到输出数据;将输出数据返回至客户端。既不必针对每个组合服务添加胶水代码来实现组合逻辑,能够减少额外的开发、部署、维护成本,又可以利用配置信息方便、清晰地定义服务之间的依赖关系,提升了组合服务的整体性能。
Description
技术领域
本公开涉及微服务技术领域,尤其涉及一种服务调用方法和装置、电子设备、计算机可读存储介质。
背景技术
微服务架构是目前业界主流的服务端架构之一,大型的服务或应用通常会被分解为多个细粒度的独立的组件,每个组件都有各自的责任领域。通常在客户端展示中,一个页面可能需要调用多个微服务,这些调用可能存在依赖关系,先调用服务的结果,可能会作为后调用服务的输入信息,这样有依赖关系的调用组成了调用链。
客户端与后端服务集之间的调用,是以通过网络调用API(ApplicationProgramming Interface,应用程序编程接口)的形式实现的,由于需经由网络,所以通常延迟较高,为解决该问题,相关技术提出了使用连接多个微服务功能的组合API。但相关技术中为实现组合API所采用的方法,常常具备开发成本高,或者难以定义复杂依赖关系的问题。
发明内容
本公开提供一种服务调用方法和装置、电子设备、计算机可读存储介质,以至少解决相关技术中的如何兼顾开发成本的控制和服务间依赖关系的定义的问题,也可不解决任何上述问题。
根据本公开的第一方面,提供了一种服务调用方法,用于服务接口网关,所述服务调用方法包括:接收客户端发送的服务调用请求,其中,所述服务调用请求针对由多个目标服务构成的目标组合服务,所述服务调用请求包括输入数据;获取所述目标组合服务的配置信息,其中,所述目标组合服务的配置信息用于指示所述服务接口网关按照预设顺序向服务器调用所述多个目标服务;根据所述目标组合服务的配置信息,按照所述预设顺序向所述服务器调用所述多个目标服务对所述输入数据进行处理,得到输出数据;将所述输出数据返回至所述客户端。
可选地,所述根据所述目标组合服务的配置信息,按照所述预设顺序向所述服务器调用所述多个目标服务对所述输入数据进行处理,得到输出数据,包括:根据预设解析规则解析所述配置信息,得到所述多个目标服务以及所述多个目标服务之间的依赖关系,其中,所述依赖关系表示相应目标服务的输入与其他目标服务的输出之间的对应关系;根据预设执行规则分析所述多个目标服务之间的依赖关系,确定所述预设顺序;按照所述预设顺序向所述服务器调用所述多个目标服务对所述输入数据进行处理,得到所述输出数据。
可选地,所述依赖关系包括第一类依赖关系和第二类依赖关系,所述第一类依赖关系表示相应目标服务的输入和执行均与其他任何目标服务的输出之间无对应关系,所述第二类依赖关系表示以下至少一种对应关系:相应目标服务的输入与其他至少一个目标服务的输出中的目标字段之间的映射关系、相应目标服务的执行与其他至少一个目标服务的输出之间的对应关系。
可选地,所述根据预设执行规则分析所述多个目标服务之间的依赖关系,确定所述预设顺序,包括:针对所述多个目标服务,确定具备所述第一类依赖关系的目标服务,标记为第一目标服务;确定与所述第一目标服务具备所述第二类依赖关系的目标服务,标记为第二目标服务,并重复确定与最新标记的目标服务具备所述第二类依赖关系的目标服务,按序标记,直到确定没有任何目标服务与最新标记的目标服务具备所述第二类依赖关系,得到所述预设顺序。
可选地,所述第一类依赖关系还表示相应目标服务的输入与所述输入数据中的目标字段之间的映射关系,其中,所述按照所述预设顺序向所述服务器调用所述多个目标服务对所述输入数据进行处理,得到所述输出数据,包括:根据所述输入数据和所述第一类依赖关系,确定所述第一目标服务的第一输入,并调用所述第一目标服务对所述第一输入进行处理,得到第一输出;根据所述第一输出和所述第二目标服务的所述第二类依赖关系,确定所述第二目标服务的第二输入,并调用所述第二目标服务对所述第二输入进行处理,得到第二输出;重复根据最新的输出和基于所述预设顺序确定的下一个目标服务的所述第二类依赖关系,确定所述下一个目标服务的输入,并调用所述下一个目标服务对相应输入进行处理,得到相应输出,直到不存在所述下一个目标服务,将最新的输出作为所述输出数据。
可选地,所述获取所述目标组合服务的配置信息,包括:从配置信息集合中查找所述目标组合服务的配置信息,其中,所述配置信息集合包括至少一个组合服务的配置信息。
可选地,所述服务调用方法还包括:接收低代码平台发送的至少一个组合服务的配置信息;根据所述至少一个组合服务的配置信息,建立或更新所述配置信息集合。
根据本公开的第二方面,提供了一种服务调用装置,用于服务接口网关,所述服务调用装置包括:接收单元,被配置为执行接收客户端发送的服务调用请求,其中,所述服务调用请求针对由多个目标服务构成的目标组合服务,所述服务调用请求包括输入数据;获取单元,被配置为执行获取所述目标组合服务的配置信息,其中,所述目标组合服务的配置信息用于指示所述服务接口网关按照预设顺序向所述服务器调用所述多个目标服务;处理单元,被配置为执行根据所述目标组合服务的配置信息,按照所述预设顺序向所述服务器调用所述多个目标服务对所述输入数据进行处理,得到输出数据;发送单元,被配置为执行将所述输出数据返回至所述客户端。
可选地,所述处理单元还被配置为执行根据预设解析规则解析所述配置信息,得到所述多个目标服务以及所述多个目标服务之间的依赖关系,其中,所述依赖关系表示相应目标服务的输入与其他目标服务的输出之间的对应关系;根据预设执行规则分析所述多个目标服务之间的依赖关系,确定所述预设顺序;按照所述预设顺序向所述服务器调用所述多个目标服务对所述输入数据进行处理,得到所述输出数据。
可选地,所述依赖关系包括第一类依赖关系和第二类依赖关系,所述第一类依赖关系表示相应目标服务的输入和执行均与其他任何目标服务的输出之间无对应关系,所述第二类依赖关系表示以下至少一种对应关系:相应目标服务的输入与其他至少一个目标服务的输出中的目标字段之间的映射关系、相应目标服务的执行与其他至少一个目标服务的输出之间的对应关系。
可选地,所述处理单元还被配置为执行针对所述多个目标服务,确定具备所述第一类依赖关系的目标服务,标记为第一目标服务;确定与所述第一目标服务具备所述第二类依赖关系的目标服务,标记为第二目标服务,并重复确定与最新标记的目标服务具备所述第二类依赖关系的目标服务,按序标记,直到确定没有任何目标服务与最新标记的目标服务具备所述第二类依赖关系,得到所述预设顺序。
可选地,所述第一类依赖关系还表示相应目标服务的输入与所述输入数据中的目标字段之间的映射关系,所述处理单元还被配置为执行根据所述输入数据和所述第一类依赖关系,确定所述第一目标服务的第一输入,并调用所述第一目标服务对所述第一输入进行处理,得到第一输出;根据所述第一输出和所述第二目标服务的所述第二类依赖关系,确定所述第二目标服务的第二输入,并调用所述第二目标服务对所述第二输入进行处理,得到第二输出;重复根据最新的输出和基于所述预设顺序确定的下一个目标服务的所述第二类依赖关系,确定所述下一个目标服务的输入,并调用所述下一个目标服务对相应输入进行处理,得到相应输出,直到不存在所述下一个目标服务,将最新的输出作为所述输出数据。
可选地,所述获取单元还被配置为执行从配置信息集合中查找所述目标组合服务的配置信息,其中,所述配置信息集合包括至少一个组合服务的配置信息。
可选地,所述接收单元还被配置为执行接收低代码平台发送的至少一个组合服务的配置信息;根据所述至少一个组合服务的配置信息,建立或更新所述配置信息集合。
根据本公开的第三方面,提供了一种电子设备,所述电子设备包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行根据本公开的服务调用方法。
根据本公开的第四方面,提供了一种计算机可读存储介质,当所述计算机可读存储介质中的指令被至少一个处理器运行时,促使所述至少一个处理器执行根据本公开的服务调用方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机指令,所述计算机指令被至少一个处理器执行时实现根据本公开的服务调用方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
根据本公开的实施例的服务调用方法和服务调用装置,通过为组合服务建立配置信息,在配置信息中定义组合服务中的多个服务的执行顺序,即预设顺序,并向客户端暴露组合服务接口,能够在客户端调用一个组合服务接口时,根据相应的配置信息,按照预设顺序调用该组合服务中的多个服务。如此一来,可在服务接口网关中通过配置信息支持细粒度微服务的组合调用,客户端不必在不同业务场景中对细粒度的微服务进行反复调用,可减少网络延迟的影响。服务端开发团队则可以专注于细粒度微服务开发,有助于增加模块内聚性。同时,既不必针对每个具体的组合服务添加胶水代码来实现组合逻辑,能够减少额外的开发、部署、维护成本,又可以利用配置信息方便、清晰地定义服务之间的依赖关系,理论上能够支撑表达任意复杂依赖关系的组合服务流程,从而有效兼顾了开发成本的控制和服务间依赖关系的定义,提升了组合服务的整体性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是示出根据本公开的示例性实施例的服务调用方法的流程图;
图2是示出根据本公开的示例性实施例的服务调用方法的流程示意图;
图3是示出根据本公开的一个具体实施例的目标组合服务的流程图;
图4是示出根据本公开的示例性实施例的服务调用装置的框图;
图5是示出根据本公开的示例性实施例的电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在此需要说明的是,在本公开中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例如“执行步骤一和步骤二之中的至少一个”,即表示如下三种并列的情况:(1)执行步骤一;(2)执行步骤二;(3)执行步骤一和步骤二。
需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等),均为经用户授权或者经过各方充分授权的信息。
微服务架构是目前业界主流的服务端架构之一,大型的服务或应用通常会被分解为多个细粒度的独立的组件,每个组件都有各自的责任领域,例如:基本用户信息、用户评论等等。通常在客户端展示中,一个页面可能需要调用多个微服务,这些调用可能存在依赖关系,先调用服务的结果,可能会作为后调用服务的输入信息,这样有依赖关系的调用组成了调用链。
客户端与后端服务集之间的调用,是以通过网络调用API的形式实现的,由于需经由网络,所以通常延迟较高,有鉴于此,应尽量避免客户端发起长调用链,以减少网络延迟造成的后调用服务无法及时获取前调用服务的结果的情况发生。为解决该问题,相关技术提出了使用连接多个微服务功能的组合API。
为实现组合API,相关技术中主要存在两种方式。
一种是直接开发业务需要的组合API,通过API网关暴露给客户端。这种方式技术简单,但开发成本较高,每产生一个新业务场景,都需要对应开发部署相应的组合API,并且随着业务需求变化,还需要进行变更维护。此外,由于微服务粒度小,会产生组合爆炸,因此需要开发较大数量的不同的组合API。
另一种是接入支持GraphQL的网关。GraphQL是一种用于API的查询语言,可对API中的数据提供一套易于理解的完整描述,使客户端能够准确获得需要的数据。具体来说,GraphQL需要规范定义可以返回的数据类型,以及获取数据字段的方法(GraphQLresolver,GraphQL解析器,用代码的形式描述如何调用一个或多个微服务API来实现一个简单的功能),并允许在获取字段时,传入参数。此时客户端请求的是具体的数据,而非请求调用API。当客户端请求数据时,网关可根据该数据以及各个resolver的输入输出数据,顺序调用多个resolver以实现一个复杂的功能。例如客户端传入用户id,请求返回该用户的好友的最新上传内容,就可以先调用一个获取用户好友的resolver,再调用一个获取用户最新上传内容的resolver,从而实现该功能,将得到的数据返回给客户端。这种方式可根据客户端请求的数据调用相应的多个resolver,增大了客户端请求的自由度,也就无需开发大量固定的组合API代码,具有灵活、开发成本相对低的优势。但缺点在于,每个请求中都需要有验证流程,以验证操作是否合法,导致引入额外开销。同时,resolver的定义,实际上是GraphQL网关的一部分内容,所以更新resolver通常需要重新部署网关。再者,resolver默认可以使用调用链中的前一个resolver的输出,但不能直接获取有间隔的其他resolver的输出,而需要先将其他resolver的输出写入“共享上下文”,再从“共享上下文”中获取到所需的数据。此时虽然可以获取到所需的数据,但无法体现这些resolver之间的依赖关系,所以要定义复杂依赖关系比较困难,例如很难表达一个resolver要依赖多个前置的同类型resolver的共享数据。此外,由于本质上GraphQL是按照树状结构组织输出,这也就限制了resolver之间只能表达树状依赖,导致无法显式定义resolver数据的依赖关系。
根据本公开的示例性实施例的服务调用方法和装置,通过为组合服务建立配置信息,在配置信息中定义组合服务中的多个服务的执行顺序,即预设顺序,并向客户端暴露组合服务接口,能够在客户端调用一个组合服务接口时,根据相应的配置信息,按照预设顺序调用该组合服务中的多个服务。如此一来,可在服务接口网关中通过配置信息支持细粒度微服务的组合调用,客户端不必在不同业务场景中对细粒度的微服务进行反复调用,可减少网络延迟的影响。服务端开发团队则可以专注于细粒度微服务开发,有助于增加模块内聚性。同时,既不必针对每个具体的组合服务添加胶水代码来实现组合逻辑,能够减少额外的开发、部署、维护成本,又可以利用配置信息方便、清晰地定义服务之间的依赖关系,理论上能够支撑表达任意复杂依赖关系的组合服务流程,从而有效兼顾了开发成本的控制和服务间依赖关系的定义,提升了组合服务的整体性能。
下面,将参照图1至图5具体描述根据本公开的示例性实施例的服务调用方法和服务调用装置。
图1是示出根据本公开的示例性实施例的服务调用方法的流程图。图2是示出根据本公开的示例性实施例的服务调用方法的流程示意图。应理解,根据本公开的示例性实施例的服务调用方法可以在服务接口网关(即API网关)中实现,图2示出的是客户端、服务接口网关、低代码平台、服务的交互流程,其中,最终被调用的服务通常为微服务。
参照图1和图2,在步骤101,接收客户端发送的服务调用请求,其中,服务调用请求针对由多个目标服务构成的目标组合服务,服务调用请求包括输入数据。本公开的示例性实施例的服务接口网关可暴露组合服务接口,客户端只需针对目标组合服务发送包括输入数据的服务调用请求,即可实现调用目标组合服务接口来处理输入数据。
在步骤102,获取目标组合服务的配置信息,其中,目标组合服务的配置信息用于指示服务接口网关按照预设顺序向服务器调用多个目标服务。配置信息是提前建立好的,用于指导目标组合服务的执行。
可选地,步骤102包括:从配置信息集合中查找目标组合服务的配置信息,其中,配置信息集合包括至少一个组合服务的配置信息。通过提前建立配置信息集合,可以构建多个不同的组合服务,满足丰富的服务需要,并集中管理不同的组合服务的配置信息,提升信息管理效率,保证组合服务可靠执行。参照图2,配置信息集合中可以关联存储组合服务的名称和配置信息,通过从中查找目标组合服务的名称,就可找到目标组合服务的配置信息。
可选地,根据本公开的示例性实施例的服务调用方法还包括:接收低代码平台发送的至少一个组合服务的配置信息;根据至少一个组合服务的配置信息,建立或更新配置信息集合。低代码平台可以在可视化页面以拖放式功能创建业务应用,操作方便,且流程清晰。通过在低代码平台可视化编辑组合服务的配置信息,不但能够提升配置信息的编辑效率,降低组合服务的开发维护成本,还能够借助可视化的流程图显示描述组合服务中复杂的调用依赖关系,以及返回的输出数据的构成方法,从而提升配置信息的表达能力。在此基础上,服务接口网关可根据低代码平台发送来的配置信息,建立或更新配置信息集合,保障了配置信息集合的及时更新。应理解,低代码平台需支持创建和编辑流程图,同时还可以支持一些分支选择,也就是根据服务调用请求中的输入数据的字段或某个服务的输出字段来决定后续的调用分支。
作为示例,在低代码平台,可以可视化编辑和维护如下内容:
1、每一个原子服务接口的定义(原子服务接口就是指作为组合服务的组成部分的服务的接口),包含输入数据结构、输出数据结构(图2中“服务1”……“服务M”等的输入输出信息);
2、每一个组合服务中,所需要的原子服务的依赖关系,即图2中“执行流程”所对应的流程图定义,包括流程图中每一个节点,即对应一个服务接口的调用,或是选择/分支流程,还包括流程图中每一条边,这些边定义了该流程中两个服务之间的依赖关系;
3、在定义的依赖关系中,被依赖的输出字段与依赖其的节点所需要的输入字段的对应关系,例如:若服务Y依赖服务X,则调用服务X输出的结果中的字段x可能被映射为服务Y输入所需的字段y。
此流程中,被依赖的输出字段和依赖其的节点的输入字段的对应关系,需要一种字段选择描述方法,可以参考XPath/JsonPath,通过定义一个路径序列,从被依赖消息中选择字段,拼合到后续调用节点的输入指定字段中。
在通过低代码平台定义组合服务后,这些流程图描述将被序列化为配置信息,定期下发到服务接口网关中,服务接口网关根据客户端发送的服务调用请求所针对的目标组合服务(作为示例,可在服务调用请求中包含目标组合服务的组合id,例如图2中客户端发送的“组合K”),选择配置信息,可得到特定流程图。
在步骤103,根据目标组合服务的配置信息,按照预设顺序向服务器调用多个目标服务对输入数据进行处理,得到输出数据。参考上文,对于在低代码平台编辑配置信息的实施例,还需要将序列化的配置信息进行反序列化处理,以得到目标组合服务的执行流程。
可选地,配置信息中包含了组成组合服务的各个服务的输入和输出,以及不同服务的输入和输出之间的对应关系,从而体现了各个服务之间的依赖关系,进而限定了各个服务的执行顺序,也即限定了组合服务的执行流程。相应地,步骤103包括:根据预设解析规则解析配置信息,也就是进行反序列化处理,得到多个目标服务以及多个目标服务之间的依赖关系,其中,依赖关系表示相应目标服务的输入与其他目标服务的输出之间的对应关系;根据预设执行规则分析多个目标服务之间的依赖关系,确定预设顺序;按照预设顺序向服务器调用多个目标服务对输入数据进行处理,得到输出数据。通过配置预设解析规则和预设执行规则,具体是提前写好解析代码和执行代码,就可基于预设解析规则解析配置信息,并基于预设执行规则执行目标组合服务,不必对类似的配置重复书写代码,能够有效降低开发、部署和维护成本。
可选地,依赖关系包括第一类依赖关系和第二类依赖关系,第一类依赖关系表示相应目标服务的输入和执行均与其他任何目标服务的输出之间无对应关系,第二类依赖关系表示以下至少一种对应关系:相应目标服务的输入与其他至少一个目标服务的输出中的目标字段之间的映射关系、相应目标服务的执行与其他至少一个目标服务的输出之间的对应关系。通过区分出第一类依赖关系和第二类依赖关系,能够基于第一类依赖关系确定最先执行的目标服务,并基于第二类依赖关系确定后续执行的目标服务,保障了预设顺序的可靠确定。其中,第二类依赖关系又可具体包含前述的两种,前一种表示输入和输出之间的映射关系,从而可据此得到在后目标服务的输入,后一种表示在后目标服务可以是多个,但具体执行哪一个或哪几个,需要根据在先目标服务(也就是与在后目标服务具备这种第二类依赖关系的其他至少一个目标服务)的输出来判断确定,从而实现了更丰富的目标组合服务执行流程,有助于满足不同的执行需要。应理解,同样的两个目标服务,可以既具备前一种第二类依赖关系,又具备后一种第二类依赖关系,也就是在先目标服务的输出既决定在后具体执行哪一个或哪几个在后目标服务,又同时决定这一个或这几个在后目标服务的输入。对于仅具备后一种第二类依赖关系的情况,在后目标服务的输入例如可以是预设值(即第二类依赖关系还表示相应目标服务的输入为预设值),也可以是输入数据中的目标字段(即第二类依赖关系还表示相应目标服务的输入与输入数据中的目标字段之间的映射关系),本公开对此不作限制。
可选地,步骤103中确定预设顺序的步骤包括:针对多个目标服务,确定具备第一类依赖关系的目标服务,标记为第一目标服务;确定与第一目标服务具备第二类依赖关系的目标服务,标记为第二目标服务,并重复确定与最新标记的目标服务具备第二类依赖关系的目标服务,按序标记,直到确定没有任何目标服务与最新标记的目标服务具备第二类依赖关系,得到预设顺序。借助第一类依赖关系,可以有效确定出最先执行的第一目标服务,此后按照第二类依赖关系,结合最新标记的目标服务的输出,就能够逐个确定出其他目标服务的执行顺序,从而得到预设顺序,保障了预设顺序的可靠确定。应理解,每个序号的目标服务的数量可为至少一个,也就是对于没有先后顺序要求、可以同时执行的目标服务,可以使用同一个序号,与这些具有相同序号的目标服务具备第二类依赖关系的目标服务也可以相应使用同一个序号,此时需要将前一序号的所有目标服务都执行完毕后,再执行后一序号的目标服务。当然,也可以每个序号的目标服务仅限一个,也就是为每个目标服务分配唯一的序号,本公开对此不作限制。
可选地,第一类依赖关系还表示相应目标服务的输入与输入数据中的目标字段之间的映射关系,其中,步骤103中的按照预设顺序向服务器调用多个目标服务对输入数据进行处理,得到输出数据的步骤包括:根据输入数据和第一类依赖关系,确定第一目标服务的第一输入,并调用第一目标服务对第一输入进行处理,得到第一输出;根据第一输出和第二目标服务的第二类依赖关系,确定第二目标服务的第二输入,并调用第二目标服务对第二输入进行处理,得到第二输出;重复根据最新的输出和基于预设顺序确定的下一个目标服务的第二类依赖关系,确定下一个目标服务的输入,并调用下一个目标服务对相应输入进行处理,得到相应输出,直到不存在下一个目标服务,将最新的输出作为输出数据。通过结合输入数据和第一类依赖关系所表示的映射关系,可明确第一目标服务的输入(即第一输入),保障了第一目标服务的可靠调用。后续按序确定下一个目标服务的输入并予以调用,可最终得到输出数据,实现目标组合服务的可靠调用。
在一个具体实施例中,目标组合服务的配置信息包括如下依赖关系:
服务C依赖服务A、B。
服务A的输出字段A_O,映射为服务C的输入字段C_I0。
服务B的输出字段B_O,映射为服务C的输入字段C_I1。
服务A的输入为服务调用请求中输入数据的字段Req_X。
服务B的输入为服务调用请求中输入数据的字段Req_Y。
输出数据为服务C的输出字段C_O。
通过根据预设执行规则分析上述具体实施例的服务A、B、C之间的依赖关系可以发现,服务A、B不依赖其他服务,以服务调用请求中的输入数据的目标字段为输入,所以可以优先并行执行,服务C依赖服务A、B,需结合服务A、B的输出,得到其输入,所以可以得到先调用服务A、B,再调用服务C的预设顺序。可根据该预设顺序进行服务调用。
图3是示出根据本公开的一个具体实施例的目标组合服务的流程图。
参照图3,服务接口网关可组织如下调用流程:
1、并发调用:将输入数据中的字段Req_X映射到服务A的输入字段A_I,调用服务A,并将输入数据中的字段Req_Y映射到服务B的输入字段B_I,调用服务B。
2、等待服务A和服务B调用结束。
3、将调用服务A的输出字段A_O映射到服务C的输入字段C_I0,将服务B的输出字段B_O映射到服务C的输入字段C_I1,调用服务C。
4、等待服务C调用结束。
5、将服务C的输出字段C_O映射为目标组合服务的输出。
返回图1,在步骤104,将输出数据返回至客户端。通过向客户端反馈最终得到的输出数据,可完成目标组合服务的完整调用流程。由于客户端只需发送一次针对目标组合服务的服务调用请求,就可收到反馈的输出数据,无需对细粒度的微服务尽心反复调用,因而可减少对网速的依赖,降低网络延迟对服务调用的影响。
图4是示出根据本公开的示例性实施例的服务调用装置的框图。应理解,根据本公开的示例性实施例的服务调用装置可以在服务接口网关(即API网关)中实现。
参照图4,服务调用装置400包括接收单元401、获取单元402、处理单元403、发送单元404。
接收单元401可接收客户端发送的服务调用请求,其中,服务调用请求针对由多个目标服务构成的目标组合服务,服务调用请求包括输入数据。
可选地,接收单元401还可接收低代码平台发送的至少一个组合服务的配置信息;根据至少一个组合服务的配置信息,建立或更新配置信息集合。
获取单元402可获取目标组合服务的配置信息,目标组合服务的配置信息用于指示服务接口网关按照预设顺序向服务器调用多个目标服务。
可选地,获取单元402还可从配置信息集合中查找目标组合服务的配置信息,其中,配置信息集合包括至少一个组合服务的配置信息。
处理单元403可根据目标组合服务的配置信息,按照预设顺序向服务器调用多个目标服务对输入数据进行处理,得到输出数据。
可选地,处理单元403还可根据预设解析规则解析配置信息,得到多个目标服务以及多个目标服务之间的依赖关系,其中,依赖关系表示相应目标服务的输入与其他目标服务的输出之间的对应关系;根据预设执行规则分析多个目标服务之间的依赖关系,确定预设顺序;按照预设顺序向服务器调用多个目标服务对输入数据进行处理,得到输出数据。
可选地,依赖关系包括第一类依赖关系和第二类依赖关系,第一类依赖关系表示相应目标服务的输入和执行均与其他任何目标服务的输出之间无对应关系,第二类依赖关系表示以下至少一种对应关系:相应目标服务的输入与其他至少一个目标服务的输出中的目标字段之间的映射关系、相应目标服务的执行与其他至少一个目标服务的输出之间的对应关系。
可选地,处理单元403还可针对多个目标服务,确定具备第一类依赖关系的目标服务,标记为第一目标服务;确定与第一目标服务具备第二类依赖关系的目标服务,标记为第二目标服务,并重复确定与最新标记的目标服务具备第二类依赖关系的目标服务,按序标记,直到确定没有任何目标服务与最新标记的目标服务具备第二类依赖关系,得到预设顺序。
可选地,第一类依赖关系还表示相应目标服务的输入与输入数据中的目标字段之间的映射关系,处理单元403还可根据输入数据和第一类依赖关系,确定第一目标服务的第一输入,并调用第一目标服务对第一输入进行处理,得到第一输出;根据第一输出和第二目标服务的第二类依赖关系,确定第二目标服务的第二输入,并调用第二目标服务对第二输入进行处理,得到第二输出;重复根据最新的输出和基于预设顺序确定的下一个目标服务的第二类依赖关系,确定下一个目标服务的输入,并调用下一个目标服务对相应输入进行处理,得到相应输出,直到不存在下一个目标服务,将最新的输出作为输出数据。
发送单元404可将输出数据返回至客户端。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图5是根据本公开的示例性实施例的电子设备的框图。
参照图5,电子设备500包括至少一个存储器501和至少一个处理器502,所述至少一个存储器501中存储有计算机可执行指令集合,当计算机可执行指令集合被至少一个处理器502执行时,执行根据本公开的示例性实施例的服务调用方法。
作为示例,电子设备500可以是PC计算机、平板装置、个人数字助理、智能手机、或其他能够执行上述指令集合的装置。这里,电子设备500并非必须是单个的电子设备,还可以是任何能够单独或联合执行上述指令(或指令集)的装置或电路的集合体。电子设备500还可以是集成控制系统或系统管理器的一部分,或者可被配置为与本地或远程(例如,经由无线传输)以接口互联的便携式电子设备。
在电子设备500中,处理器502可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器或微处理器。作为示例而非限制,处理器还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
处理器502可运行存储在存储器501中的指令或代码,其中,存储器501还可以存储数据。指令和数据还可经由网络接口装置而通过网络被发送和接收,其中,网络接口装置可采用任何已知的传输协议。
存储器501可与处理器502集成为一体,例如,将RAM或闪存布置在集成电路微处理器等之内。此外,存储器501可包括独立的装置,诸如,外部盘驱动、存储阵列或任何数据库系统可使用的其他存储装置。存储器501和处理器502可在操作上进行耦合,或者可例如通过I/O端口、网络连接等互相通信,使得处理器502能够读取存储在存储器中的文件。
此外,电子设备500还可包括视频显示器(诸如,液晶显示器)和用户交互接口(诸如,键盘、鼠标、触摸输入装置等)。电子设备500的所有组件可经由总线和/或网络而彼此连接。
根据本公开的示例性实施例,还可提供一种计算机可读存储介质,当计算机可读存储介质中的指令被至少一个处理器运行时,促使至少一个处理器执行根据本公开的示例性实施例的服务调用方法。这里的计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
根据本公开的示例性实施例,还可提供一种计算机程序产品,该计算机程序产品包括计算机指令,计算机指令被至少一个处理器运行时,促使至少一个处理器执行根据本公开的示例性实施例的服务调用方法。
根据本公开的示例性实施例的服务调用方法和装置、电子设备、计算机可读存储介质,通过为组合服务建立配置信息,在配置信息中定义组合服务中的多个服务的执行顺序,即预设顺序,并向客户端暴露组合服务接口,能够在客户端调用一个组合服务接口时,根据相应的配置信息,按照预设顺序调用该组合服务中的多个服务。如此一来,可在服务接口网关中通过配置信息支持细粒度微服务的组合调用,客户端不必在不同业务场景中对细粒度的微服务进行反复调用,可减少网络延迟的影响。服务端开发团队则可以专注于细粒度微服务开发,有助于增加模块内聚性。同时,既不必针对每个具体的组合服务添加胶水代码来实现组合逻辑,能够减少额外的开发、部署、维护成本,又可以利用配置信息方便、清晰地定义服务之间的依赖关系,理论上能够支撑表达任意复杂依赖关系的组合服务流程,从而有效兼顾了开发成本的控制和服务间依赖关系的定义,提升了组合服务的整体性能。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种服务调用方法,其特征在于,用于服务接口网关,所述服务调用方法包括:
接收客户端发送的服务调用请求,其中,所述服务调用请求针对由多个目标服务构成的目标组合服务,所述服务调用请求包括输入数据;
获取所述目标组合服务的配置信息,其中,所述目标组合服务的配置信息用于指示所述服务接口网关按照预设顺序向服务器调用所述多个目标服务;
根据所述目标组合服务的配置信息,按照所述预设顺序向所述服务器调用所述多个目标服务对所述输入数据进行处理,得到输出数据;
将所述输出数据返回至所述客户端。
2.如权利要求1所述的服务调用方法,其特征在于,所述根据所述目标组合服务的配置信息,按照所述预设顺序向所述服务器调用所述多个目标服务对所述输入数据进行处理,得到输出数据,包括:
根据预设解析规则解析所述配置信息,得到所述多个目标服务以及所述多个目标服务之间的依赖关系,其中,所述依赖关系表示相应目标服务的输入与其他目标服务的输出之间的对应关系;
根据预设执行规则分析所述多个目标服务之间的依赖关系,确定所述预设顺序;
按照所述预设顺序向所述服务器调用所述多个目标服务对所述输入数据进行处理,得到所述输出数据。
3.如权利要求2所述的服务调用方法,其特征在于,所述依赖关系包括第一类依赖关系和第二类依赖关系,所述第一类依赖关系表示相应目标服务的输入和执行均与其他任何目标服务的输出之间无对应关系,所述第二类依赖关系表示以下至少一种对应关系:相应目标服务的输入与其他至少一个目标服务的输出中的目标字段之间的映射关系、相应目标服务的执行与其他至少一个目标服务的输出之间的对应关系。
4.如权利要求3所述的服务调用方法,其特征在于,所述根据预设执行规则分析所述多个目标服务之间的依赖关系,确定所述预设顺序,包括:
针对所述多个目标服务,确定具备所述第一类依赖关系的目标服务,标记为第一目标服务;
确定与所述第一目标服务具备所述第二类依赖关系的目标服务,标记为第二目标服务,并重复确定与最新标记的目标服务具备所述第二类依赖关系的目标服务,按序标记,直到确定没有任何目标服务与最新标记的目标服务具备所述第二类依赖关系,得到所述预设顺序。
5.如权利要求4所述的服务调用方法,其特征在于,所述第一类依赖关系还表示相应目标服务的输入与所述输入数据中的目标字段之间的映射关系,其中,所述按照所述预设顺序向所述服务器调用所述多个目标服务对所述输入数据进行处理,得到所述输出数据,包括:
根据所述输入数据和所述第一类依赖关系,确定所述第一目标服务的第一输入,并调用所述第一目标服务对所述第一输入进行处理,得到第一输出;
根据所述第一输出和所述第二目标服务的所述第二类依赖关系,确定所述第二目标服务的第二输入,并调用所述第二目标服务对所述第二输入进行处理,得到第二输出;
重复根据最新的输出和基于所述预设顺序确定的下一个目标服务的所述第二类依赖关系,确定所述下一个目标服务的输入,并调用所述下一个目标服务对相应输入进行处理,得到相应输出,直到不存在所述下一个目标服务,将最新的输出作为所述输出数据。
6.如权利要求1到5中的任一权利要求所述的服务调用方法,其特征在于,所述获取所述目标组合服务的配置信息,包括:
从配置信息集合中查找所述目标组合服务的配置信息,其中,所述配置信息集合包括至少一个组合服务的配置信息。
7.如权利要求6所述的服务调用方法,其特征在于,所述服务调用方法还包括:
接收低代码平台发送的至少一个组合服务的配置信息;
根据所述至少一个组合服务的配置信息,建立或更新所述配置信息集合。
8.一种服务调用装置,其特征在于,用于服务接口网关,所述服务调用装置包括:
接收单元,被配置为执行接收客户端发送的服务调用请求,其中,所述服务调用请求针对由多个目标服务构成的目标组合服务,所述服务调用请求包括输入数据;
获取单元,被配置为执行获取所述目标组合服务的配置信息,其中,所述目标组合服务的配置信息用于指示所述服务接口网关按照预设顺序向所述服务器调用所述多个目标服务;
处理单元,被配置为执行根据所述目标组合服务的配置信息,按照所述预设顺序向所述服务器调用所述多个目标服务对所述输入数据进行处理,得到输出数据;
发送单元,被配置为执行将所述输出数据返回至所述客户端。
9.一种电子设备,其特征在于,包括:
至少一个处理器;
至少一个存储计算机可执行指令的存储器,
其中,所述计算机可执行指令在被所述至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1到7中的任一权利要求所述的服务调用方法。
10.一种计算机可读存储介质,其特征在于,当所述计算机可读存储介质中的指令被至少一个处理器运行时,促使所述至少一个处理器执行如权利要求1到7中的任一权利要求所述的服务调用方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211515391.1A CN115866056A (zh) | 2022-11-29 | 2022-11-29 | 服务调用方法和装置、电子设备、计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211515391.1A CN115866056A (zh) | 2022-11-29 | 2022-11-29 | 服务调用方法和装置、电子设备、计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115866056A true CN115866056A (zh) | 2023-03-28 |
Family
ID=85667995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211515391.1A Pending CN115866056A (zh) | 2022-11-29 | 2022-11-29 | 服务调用方法和装置、电子设备、计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115866056A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078315A (zh) * | 2019-12-12 | 2020-04-28 | 拉扎斯网络科技(上海)有限公司 | 微服务编排、执行方法及系统、架构、设备、存储介质 |
US20220066775A1 (en) * | 2020-08-31 | 2022-03-03 | International Business Machines Corporation | Managing parallel microservices |
CN114143191A (zh) * | 2021-11-30 | 2022-03-04 | 招商局金融科技有限公司 | 基于分布式网关的微服务编排方法、装置及相关设备 |
CN114745295A (zh) * | 2022-04-19 | 2022-07-12 | 京东科技控股股份有限公司 | 数据采集方法、装置、设备和可读存储介质 |
-
2022
- 2022-11-29 CN CN202211515391.1A patent/CN115866056A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078315A (zh) * | 2019-12-12 | 2020-04-28 | 拉扎斯网络科技(上海)有限公司 | 微服务编排、执行方法及系统、架构、设备、存储介质 |
US20220066775A1 (en) * | 2020-08-31 | 2022-03-03 | International Business Machines Corporation | Managing parallel microservices |
CN114143191A (zh) * | 2021-11-30 | 2022-03-04 | 招商局金融科技有限公司 | 基于分布式网关的微服务编排方法、装置及相关设备 |
CN114745295A (zh) * | 2022-04-19 | 2022-07-12 | 京东科技控股股份有限公司 | 数据采集方法、装置、设备和可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11150893B2 (en) | Collaborative software development tool for resolving potential code-change conflicts in real time | |
US10740093B2 (en) | Advanced packaging techniques for improving work flows | |
US11797273B2 (en) | System and method for enhancing component based development models with auto-wiring | |
CN108304201B (zh) | 对象更新方法、装置及设备 | |
US10983774B2 (en) | Extensions for deployment patterns | |
US10291704B2 (en) | Networked solutions integration using a cloud business object broker | |
US9678740B2 (en) | Migration mechanism | |
US11182276B2 (en) | Development-time awareness of a production dependency injection environment | |
US20160259795A1 (en) | Distributed version control of orchestration templates | |
Wilkinson et al. | QMachine: commodity supercomputing in web browsers | |
CN116383542A (zh) | 页面生成方法、装置、电子设备及存储介质 | |
US20100180205A1 (en) | Method and apparatus to provide user interface as a service | |
US9703848B2 (en) | Caching linked queries for optimized compliance management | |
CN114489954A (zh) | 基于虚拟化平台的租户创建方法、租户访问方法及设备 | |
US9942298B2 (en) | Dynamic help pages using linked data | |
CN115866056A (zh) | 服务调用方法和装置、电子设备、计算机可读存储介质 | |
WO2024030113A1 (en) | System and method for bulk update of resource data for view parameters | |
US10606939B2 (en) | Applying matching data transformation information based on a user's editing of data within a document | |
US20210141562A1 (en) | Output management in command line interface | |
CN110971664A (zh) | 一种接口服务管理系统 | |
US12072882B2 (en) | Database query processing | |
US20210216518A1 (en) | Paging row-based data stored as objects | |
Giedrimas et al. | The impact of mobile architectures on component-based software engineering | |
CN114119806A (zh) | 嵌套流程图的生成方法、装置、电子设备及存储介质 | |
CN117348920A (zh) | 虚幻引擎的数据打包方法、系统、设备、介质及组网结构 |
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 |