CN113010332A - 一种远程服务调用方法、装置、设备及存储介质 - Google Patents
一种远程服务调用方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113010332A CN113010332A CN202110289782.5A CN202110289782A CN113010332A CN 113010332 A CN113010332 A CN 113010332A CN 202110289782 A CN202110289782 A CN 202110289782A CN 113010332 A CN113010332 A CN 113010332A
- Authority
- CN
- China
- Prior art keywords
- service
- micro
- mapping
- distributed system
- preset
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本文提供一种远程服务调用方法、装置、设备及存储介质,所述方法包括:获取待请求服务信息;按照预设映射规则,确定每个所述微服务在分布式系统中的映射参数;按照所述预设时序,确定初始微服务的映射参数,并根据初始微服务的预设映射标识和输入参数,获取并执行所述分布式系统中的初始微服务;当所述初始微服务执行成功时,将所述初始微服务的执行状态和下一个微服务的映射参数写入所述初始微服务的输出报文;根据所述输出报文中的下一个微服务的映射参数继续执行所述下一个微服务,本文提供的远程服务调用方法设计简单,节省了分布式系统远程服务调用的设计成本。
Description
技术领域
本文属于分布式系统领域,具体涉及一种远程服务调用方法、装置、设备及存储介质。
背景技术
由于分布式系统的特点,原本单机系统一个交易服务的功能,在分布式系统中可能会被拆分为多个微服务,通过微服务的组合调用来实现;目前分布式系统基本上是采用RPC(Remote Procedure Call,远程过程调用)框架实现。RPC框架的主要目标是让构建分布式应用更容易,在提供强大的远程服务调用能力时不损失本地调用(Local ProcedureCall,LPC)的语义简洁性。目前对微服务的组合调用主要采用操作人员对微服务进行全部配置,实现微服务的远程服务调用,但是在分布式系统进行改造或微服务改进时,特别是底层的微服务改进时,会存在微服务配置文件的重新设计,设计成本和工作量很大,从而增加了远程服务调用的成本,因此如何降低远程服务调用的设计成本成为现有亟需解决的技术问题。
发明内容
针对现有技术的上述问题,本文的目的在于,提供一种远程服务调用方法、装置、设备及存储介质,能够降低分布式系统中远程服务调用设计的成本。
为了解决上述技术问题,本文的具体技术方案如下:
一方面,本文提供一种远程服务调用方法,所述方法包括:
获取待请求服务信息,所述待请求服务信息包括多个按预设时序执行的微服务;
按照预设映射规则,确定每个所述微服务在分布式系统中的映射参数,所述映射参数包括预设映射标识和输入参数;
按照所述预设时序,确定初始微服务的映射参数,并根据所述初始微服务的预设映射标识和输入参数,获取并执行所述分布式系统中的初始微服务;
当所述初始微服务执行成功时,将所述初始微服务的执行状态和下一个微服务的映射参数写入所述初始微服务的输出报文;
根据所述输出报文中的下一个微服务的映射参数继续执行下一个微服务。
进一步地,所述预设映射规则的建立包括:
获取基于分布式系统的全部微服务,并确定所述微服务的属性信息,所述属性信息包括微服务类型和微服务位置;
根据所述微服务的属性信息和预设映射标识,建立所述微服务和所述预设映射标识之间的映射关系,以使通过所述预设映射标识从所述分布式系统中获取与所述预设映射标识对应的微服务。
优选地,所述获取待请求服务信息,之前包括:
建立动态代理框架,并对分布式系统上的全部微服务进行动态代理注解,通过所述动态代理注解实现对所述预设映射标识对应的微服务的自动执行。
进一步地,所述按照预设映射规则,确定每个所述微服务在分布式系统中的映射参数,包括:
根据所述待请求服务信息,确定每个微服务的输入参数;
根据预设映射规则,确定每个微服务在分布式系统中的预设映射标识;
根据所述预设映射标识和所述输入参数,通过预设格式转换规则确定所述映射参数。
进一步地,所述根据所述预设映射标识和所述输入参数,通过预设格式转换规则确定所述映射参数,包括:
根据所述预设格式转换规则,将所述输入参数转换成预设格式参数;
根据转换后的预设格式参数和所述预设映射标识,确定所述映射参数,并将所述映射参数存储到内存中。
优选地,所述预设格式转换规则为JSON字符串转换。
进一步地,所述获取待请求服务信息之后包括:
确定所述待请求服务信息中的多个微服务;
判断多个所述微服务是否全部在本地数据库中;
若多个所述微服务全部在本地数据库中,则按照预设时序执行所述微服务,以实现所述待请求服务;
若多个所述微服务不全部在本地数据库中,则执行对每个微服务的映射处理,以实现全部微服务的执行。
进一步地,所述若多个所述微服务不全部在本地数据库中,则执行对每个微服务的映射处理,以实现全部微服务的执行,包括:
判断多个所述微服务是否全部在基于分布式系统的数据库中;
若多个所述微服务全部在基于分布式系统的数据库中,则按照预设映射规则,确定每个所述微服务在分布式系统中的映射参数;
若多个所述微服务不全部在基于分布式系统的数据库中,更新基于分布式系统的数据库,以使多个所述微服务全部在更新后的基于分布式系统的数据库中。
进一步地,所述更新基于分布式系统的数据库包括:
获取不在基于分布式系统的数据库中的目标微服务;
根据所述目标微服务,确定匹配微服务,其中所述匹配微服务为基于分布式系统的数据库中与所述目标微服务匹配度达到预设值的微服务;
更新所述匹配微服务,以使更新后的所述匹配微服务与所述目标微服务一致。
进一步地,所述更新基于分布式系统的数据库包括:
获取不在基于分布式系统的数据库中的目标微服务;
当所述目标微服务与基于分布式系统的数据库中全部微服务的匹配度未达到预设值;
将所述目标微服务添加到基于分布式系统的数据库中,以使更新后的基于分布式系统的数据库包含所述目标微服务。
进一步地,所述更新基于分布式系统的数据库,以使多个所述微服务全部在更新后的基于分布式系统的数据库中,包括:
根据更新后的基于分布式系统的数据库中的目标微服务,通过已经建立的预设映射规则确定所述目标微服务的预设映射标识;
根据所述预设映射标识和所述目标微服务对应的输入参数,确定所述目标微服务的映射参数,并将所述映射参数存储到内存中。
进一步地,所述根据所述初始微服务的预设映射标识和输入参数,获取并执行所述分布式系统中的初始微服务,包括:
根据所述预设映射标识,获取基于分布式系统的数据库中初始微服务;
将所述输入参数输入所述初始微服务中,执行所述初始微服务,并获取所述初始微服务的执行状态。
进一步地,所述下一个微服务是通过所述预设时序确定的。
所述根据所述输出报文中的下一个微服务的映射参数继续执行所述下一个微服务,包括:
确定所述输出报文中下一个微服务的映射参数中的预设映射标识和输入参数,并将所述下一个微服务更新为当前微服务;
根据所述当前微服务的预设映射标识和输入参数,执行所述当前微服务;
当所述当前微服务执行成功时,将所述当前微服务的执行状态和下一个微服务的映射参数写入所述当前微服务的输出报文;
根据所述当前微服务所述输出报文,执行所述下一个微服务,以此类推,直到全部微服务全部执行完毕。
另一方面,本文还提供一种远程服务调用装置,所述装置包括:
待请求服务获取模块,用于获取待请求服务信息,所述待请求服务信息包括多个按预设时序执行的微服务;
映射模块,用于按照预设映射规则,确定每个所述微服务在分布式系统中的映射参数,所述映射参数包括预设映射标识和输入参数;
初始微服务执行模块,用于按照所述预设时序,确定初始微服务的映射参数,并根据所述初始微服务的预设映射标识和输入参数,获取并执行所述分布式系统中的初始微服务;
输出报文获取模块,用于当所述初始微服务执行成功时,将所述初始微服务的执行状态和下一个微服务的映射参数写入所述初始微服务的输出报文;
微服务执行模块,用于根据所述输出报文中的下一个微服务的映射参数继续执行所述下一个微服务。
另一方面,本文还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述所述方法的步骤。
另一方面,本文还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行计算机程序,所述计算机程序被处理器执行时实现如上述所述方法的步骤。
采用上述技术方案,本文所述的一种远程服务调用方法、装置、设备及存储介质,通过预设映射规则的设置获取待请求服务信息中的多个微服务的映射参数,并根据映射参数以及微服务的执行顺序,通过上一个微服务的执行状态来确定下一个微服务的执行,从而实现待请求服务的自动远程服务调用,本文提供的远程服务调用方法设计简单,通过预设映射规则和动态代理框架实现了对不同微服务的快速获取和执行,节省了分布式系统远程服务调用的设计成本。
为让本文的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本文实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本文的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本文实施例提供的远程服务调用方法的实施环境示意图;
图2示出了本文实施例提供的远程服务调用方法的步骤示意图;
图3示出了本文实施例提供的远程服务调用方法的步骤示意图;
图4示出了本文实施例中映射参数确定的步骤示意图;
图5示出了本文实施例中微服务在分布式系统中的判断步骤示意图;
图6示出了本文实施例中提供的远程服务调用装置的结构示意图;
图7示出了本文实施例中提供的计算机设备的结构示意图。
附图符号说明:
01、配置端;
02、服务器;
100、待请求服务获取模块;
200、映射模块;
300、初始微服务执行模块;
400、输出报文获取模块;
500、微服务执行模块;
702、计算机设备;
704、处理器;
706、存储器;
708、驱动机构;
710、输入/输出模块;
712、输入设备;
714、输出设备;
716、呈现设备;
718、图形用户接口;
720、网络接口;
722、通信链路;
724、通信总线。
具体实施方式
下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。
需要说明的是,本文的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本文的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
一个服务功能的实现是通过多个程序模块多个函数之间的调用完成,在分布式系统中,一个函数的逻辑可能会变成一次远程方法的调用(RPC),为了实现分布式系统中远程服务的调用,现有技术通常会使用整合单元(或处理单元)实现不同服务器对应数据库的调用,对于每个整合单元的调用路径都需要操作者在后端提前配置,因此在面对分布式系统的改造或者大量地层微服务的改造时,对整合单元的配置会是很大的难题,极大增加了整合单元的设计成本和配置难度。
因此,如图1所示,为本说明书实施例提供方法的实施环境示意图。如图1所示,该实施环境可以至少包括配置端01和服务器02。
具体的,所述配置端01可以包括智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、智能可穿戴设备、监控设备及语音交互设备等类型的设备,也可以包括运行于设备中的软体,例如一些服务商提供给用户的网页页面,也可以为该些服务商提供给用户的应用。具体的,所述配置端01可以用于获取用户的配置信息,并对服务器02中的微服务进行动态代理,同时存储用户的操作指令数据,并根据用户操作指令提取执行服务器02中的微服务。
具体的,所述服务器02可以是分布式系统,作为可选地,可以为独立的物理服务器,也可以是多个物理服务器构成的服务器集群,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。所述服务器02可以包括有网络通信单元、处理器和存储器等等。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。具体的,所述服务器02可以用于存储服务对应的微服务信息。
为了解决上述问题,本文实施例提供了一种远程服务调用方法,能够降低远程服务调用的设计成本,提高远程服务调用的效率,图2是本文实施例提供的一种远程服务调用方法的步骤示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或装置产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。具体的如图2所示,所述方法可以包括:
S101:获取待请求服务信息,所述待请求服务信息包括多个按预设时序执行的微服务;
S102:按照预设映射规则,确定每个所述微服务在分布式系统中的映射参数,所述映射参数包括预设映射标识和输入参数;
S103:按照所述预设时序,确定初始微服务的映射参数,并根据所述初始微服务的预设映射标识和输入参数,获取并执行所述分布式系统中的初始微服务;
S104:当所述初始微服务执行成功时,将所述初始微服务的执行状态和下一个微服务的映射参数写入所述初始微服务的输出报文;
S105:根据所述输出报文中的下一个微服务的映射参数继续执行下一个微服务。
本说明书实施例,通过预设映射规则,确定待请求微服务中每个微服务的映射参数,其中通过预设映射标识可以获取分布式系统中的微服务,并将输入参数带入对应的微服务中,从而实现微服务的自动执行,然后通过初始微服务的执行成功状态确定下一个微服务的映射参数,以此类推实现全部微服务的执行,本文提供的方法,通过预先的配置就能对接收到待请求信息进行快速的设计,从而降低远程服务调用的设计成本,进而提高了远程服务调用的效率。
其中所述待请求服务可以为具体的业务请求,每个业务请求可以有多个子业务(微服务)来实现,比如转账业务可以包括付款人账户金额的转出和收款人账户金额的转入两个子业务。在分布式系统中,微服务并不是全部都在本地服务器中,因此需要采用远程服务调用的方式进行微服务的执行,所述远程服务调用可以理解为通过http请求,调用远程服务器的服务完成方法逻辑的处理,其中每个微服务可以指独立的程序模块,所述程序模块中可以包括特定执行方法对应的函数,当然也可以包括多个函数,多个函数也可以呈现分布式的设置,在本说明书不做限定。
所述预设映射规则可以理解为分布式系统中的微服务和其预设映射标识的关系,通过所述预设映射标识就能获得与所述预设映射标识对应的微服务,作为可选地,通过所述预设映射标识可以确定所述微服务的类型及其位置,在获取为具体位置后就可以通过建立调用路径的方式获得其中的微服务。
在本说明书实施例中,所述预设映射规则的建立包括如下步骤:
获取基于分布式系统的全部微服务,并确定所述微服务的属性信息,所述属性信息包括微服务类型和微服务位置;
根据所述微服务的属性信息和预设映射标识,建立所述微服务和所述预设映射标识之间的映射关系,以使通过所述预设映射标识从所述分布式系统中获取与所述预设映射标识对应的微服务。
可以理解为,在原有系统已经进行了分布式改造后,分布式系统中的微服务已经确定,包括微服务的类型及其位置,因此通过建立预设映射标识和微服务之间的映射关系,就可以快速的通过所述预设映射标识确定所述微服务,其中所述预设映射标识为人为设置的标识,可以为微服务的远程服务调用交易码,预设映射标识通过配置在内存中,在通过待请求服务确定不同的微服务后,就可以通过确定的微服务确定预设映射标识,比如可以通过微服务类型确定所述预设映射标识,所述微服务类型可以表示微服务对应的方法类型或函数类型等,在本说明书不做限定。
现有技术中,是通过人为的配置待请求服务中的每个微服务的远程服务调用逻辑,通过整合单元实现微服务的按顺序进行,因此配置的过程针对微服务较大的场景下设计工作量比较大,很难实现对待请求服务的快速配置和执行,因此为了实现每个微服务在较少的配置下实现自动的执行,在本说明书实施例中,如图3所示,所述获取待请求服务信息之前还包括:
S100:建立动态代理框架,并对分布式系统上的全部微服务进行动态代理注解,通过所述动态代理注解实现对预设映射标识对应的微服务的自动执行。
可以理解为,所述动态代理框架是在分布式系统上建立的框架,这样在确定需要执行的微服务时,就可以在服务器(分布式系统)端实现微服务的自动运行,避免了现有技术中在调用者(如应用端)配置每个微服务执行文件的整合单元,通过一次动态代理的配置,可以实现分布式系统内微服务的自动执行,减少了对待请求信息配置的难度,提高了自动化。
具体地,可以利用面向切面编程技术(Aspect Orient Programming,简称AOP)实现动态代理的处理,AOP技术作为Java中一种成熟的动态代理技术。可以做到无代码侵入的增加功能,广泛应用于处理一些具有横切性质的系统级服务,利用AOP可以对业务类(如业务方法)的各个业务项目进行拦截,从而使得业务类的各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率,在一些其他的实施例中,还可以通过Spring XML进行配置就可以通过Spring框架完成动态代理,具体的动态代理方式在本说明书实施例不做限定。
在实际工作中,可以在动态代理框架上通过动态代理注解,比如java注解的方式实现对分布式系统中的全部微服务(方法)进行动态代理,这样在获取通过预设映射标识获取对应的微服务的请求时,拦截所述预设映射标识和输入参数,利用所述动态代理框架的反射机制调用所述预设映射标识对应的微服务,结合所述输入参数实现微服务的执行。在上一个微服务执行成功并返回输出报文时,通过获取所述输出报文中的下一个微服务的映射参数,然后自动执行下一个微服务,通过动态代理框架拦截下一个微服务的执行请求(包括下一个微服务的预设映射标识和输入参数),利用所述动态代理框架的反射机制调用所述预设映射标识对应的微服务,结合所述输入参数实现下一个微服务的执行,以此类推知道全部为服务的全部自动执行,因此本文通过前一个微服务的执行结果以及动态代理实现了远程服务调用的自动执行,减少了对每个微服务配置的设计成本,需要说明的是,每个微服务执行完的下一个微服务时通过预设时序确定的,当所述待请求服务信息确定后,所述预设时序也就确定了,通过配置文件自动生成。
其中,所述初始微服务的执行过程可以为:
根据所述预设映射标识,获取基于分布式系统的数据库中初始微服务;
将所述输入参数输入所述初始微服务中,执行所述初始微服务,并获取所述初始微服务的执行状态。
可以理解为,初始微服务可以为微服务执行序列中第一个微服务,通过上述动态代理框架可以实现初始微服务的自动执行。
在本说明书实施例中所述根据所述输出报文中的下一个微服务的映射参数继续执行所述下一个微服务,可以包括如下步骤:
确定所述输出报文中下一个微服务的映射参数中的预设映射标识和输入参数,并将所述下一个微服务更新为当前微服务;
根据所述当前微服务的预设映射标识和输入参数,执行所述当前微服务;
当所述当前微服务执行成功时,将所述当前微服务的执行状态和下一个微服务的映射参数写入所述当前微服务的输出报文;
根据所述当前微服务所述输出报文,执行所述下一个微服务,以此类推,直到全部微服务全部执行完毕。
在本说明书实施例中,如图4所示,所述按照所述预设映射规则,确定每个所述微服务在分布式系统中的映射参数,可以包括如下步骤:
S201:根据所述待请求服务信息,确定每个微服务的输入参数;
S202:根据预设映射规则,确定每个微服务在分布式系统中的预设映射标识;
S203:根据所述预设映射标识和所述输入参数,通过预设格式转换规则确定所述映射参数。
所述输入参数可以为执行每个微服务对应方法的参数名和参数值,在接收所述待请求服务信息时,所述输入参数已经确定。通过上述预设映射规则建立的步骤就可以确定每个微服务对应的预设映射标识。
由于所述输入参数中的数据,比如参数名不能被直接识别,因此可以通过预设格式转换规则将所述输入参数转换成预设格式参数进行保存,从而便于保存以及方法自动执行时的参数读取和输入。因此所述映射参数的获取过程可以包括:
根据所述预设格式转换规则,将所述输入参数转换成预设格式参数;
根据转换后的预设格式参数和所述预设映射标识,确定所述映射参数,并将所述映射参数存储到内存中。
在实际工作中,所述预设格式转换规则可以为JSON字符串转换。JSON字符串是一种以键值对形式存在的轻量级的数据存储格式,在函数方法之间可以实现快速的传输,提高了微服务处理的效率。
本说明书实施例提供的方法适应于远程服务调用的场景,并不是所有的场景都需要进行远程服务调用,因此在获得待请求服务信息之后还可以进行是否进行远程服务调用的判断,判断的步骤可以为:
确定所述待请求服务信息中的多个微服务;
判断多个所述微服务是否全部在本地数据库中;
若多个所述微服务全部在本地数据库中,则按照预设时序执行所述微服务,以实现所述待请求服务;
若多个所述微服务不全部在本地数据库中,则执行对每个微服务的映射处理,以实现全部微服务的执行。
其中,所述本地数据库可以为用户输入带请求服务所在的服务器对应的数据库,当所述待请求信息中全部的微服务都在本地数据库时,则就可以直接进行本地调用,实现全部微服务对应的方法,这样能提高调用的速度,同时减少远程服务调用配置文件的设计成本。
在实际工作中,可以通过预设映射标识进行判断,所述预设映射标识可以表示微服务类型(方法类型或方法名),通过确定所述待请求服务对应的多个微服务的预设映射标识和本地数据库中微服务的预设映射标识进行对比,当全部都能比对上,则表明所述待请求服务的全部微服务都在本地数据库里,当没有全部比对上,则表明所述待请求微服务的全部微服务不全都在本地数据库里。需要说明的是,一些特别情况下,一些微服务并没有确定出预设映射标识,表明所述微服务没有在分布式系统的全部数据库中,则需要对数据库进行更新,具体更新过程见下文描述。
当所述待请求服务对应的多个微服务不全部在本地数据库时,就可以通过上述远程服务调用的方法实现微服务的自动执行,需要说明的是,随着待请求服务的越来越复杂,场景越来越丰富,对实现一些特殊的场景所需要的微服务可能不在现有的分布式系统的数据库中,因此需要对数据库进行及时的更新,如图5所示,对所述待请求服务对应的微服务是否都在分布式系统的数据库中的判断可以有以下步骤:
S301:判断多个所述微服务是否全部在基于分布式系统的数据库中;
S302:若多个所述微服务全部在基于分布式系统的数据库中,则按照预设映射规则,确定每个所述微服务在分布式系统中的映射参数;
S303:若多个所述微服务不全部在基于分布式系统的数据库中,更新基于分布式系统的数据库,以使多个所述微服务全部在更新后的基于分布式系统的数据库中。
在实际工作中,也可以通过预设映射标识进行判断,具体的判断过程与上文一致,在本说明书实施例不做赘述。通过对微服务的及时判断,可以提高对数据库的更新效率,从而提高了对不同场景的适应能力,增加了用户体验。
其中所述更新基于分布式系统的数据库可以包括如下步骤:
获取不在基于分布式系统的数据库中的目标微服务;
根据所述目标微服务,确定匹配微服务,其中所述匹配微服务为基于分布式系统的数据库中与所述目标微服务匹配度达到预设值的微服务;
更新所述匹配微服务,以使更新后的所述匹配微服务与所述目标微服务一致。
可以理解为,可以从微服务对应方法的类型、结构、参数等方面进行匹配,获得与所述目标微服务匹配度较高的微服务,这样在更新时只需调整与所述目标微服务匹配度高的微服务即可,能够提高调整的效率,同时避免数据库内存资源的消耗,节约了内存成本,作为可选地,所述预设值可以根据实际情况设置的参数,在本说明书实施例不做限定。
当分布式系统的全部数据库中没有与所述目标微服务匹配的微服务时,则需要进一步调整所述数据库,具体地,还可以包括如下步骤:
获取不在基于分布式系统的数据库中的目标微服务;
当所述目标微服务与基于分布式系统的数据库中全部微服务的匹配度未达到预设值;
将所述目标微服务添加到基于分布式系统的数据库中,以使更新后的基于分布式系统的数据库包含所述目标微服务。
在实际工作中,可以将所述目标微服务添加到本地数据库,可以提高数据库更新的速度,保证了微服务添加的准确性。
通过上述调整或添加的方式更新数据库之后,更新后的微服务也都需要确定相应的预设映射标识,从而便于实现微服务的获取,因此,所述更新基于分布式系统的数据库,以使多个所述微服务全部在更新后的基于分布式系统的数据库中,还包括如下步骤:
根据更新后的基于分布式系统的数据库中的目标微服务,通过已经建立的预设映射规则确定所述目标微服务的预设映射标识;
根据所述预设映射标识和所述目标微服务对应的输入参数,确定所述目标微服务的映射参数,并将所述映射参数存储到内存中。
可以理解为,通过上述更新的过程可以将无法自动匹配的微服务通过手工的方式注入到自动执行的程序中,可以提高远程服务调用方法对不同场景服务的适应能力,提高用户的体验感。
本说明书实施例提供的远程服务调用方法,通过预设映射规则的设置获取待请求服务信息中的多个微服务的映射参数,并根据映射参数以及微服务的执行顺序,通过上一个微服务的执行状态来确定下一个微服务的执行,从而实现待请求服务的自动远程服务调用,本文提供的远程服务调用方法设计简单,通过预设映射规则和动态代理框架实现了对不同微服务的快速获取和执行,节省了分布式系统远程服务调用的设计成本。
基于同一发明构思,在上述提供的方法的基础上,本说明书实施例还提供一种远程服务调用装置,如图6所示,所述装置包括:
待请求服务获取模块100,用于获取待请求服务信息,所述待请求服务信息包括多个按预设时序执行的微服务;
映射模块200,用于按照预设映射规则,确定每个所述微服务在分布式系统中的映射参数,所述映射参数包括预设映射标识和输入参数;
初始微服务执行模块300,用于按照所述预设时序,确定初始微服务的映射参数,并根据所述初始微服务的预设映射标识和输入参数,获取并执行所述分布式系统中的初始微服务;
输出报文获取模块400,用于当所述初始微服务执行成功时,将所述初始微服务的执行状态和下一个微服务的映射参数写入所述初始微服务的输出报文;
微服务执行模块500,用于根据所述输出报文中的下一个微服务的映射参数继续执行所述下一个微服务。
通过上述装置所取得的有益效果和上述方法取得的有益效果一致,在本说明书实施例不做赘述。
如图7所示,为本文实施例提供的一种计算机设备,所述计算机设备702可以包括一个或多个处理器704,诸如一个或多个中央处理单元(CPU),每个处理单元可以实现一个或多个硬件线程。计算机设备702还可以包括任何存储器706,其用于存储诸如代码、设置、数据等之类的任何种类的信息。非限制性的,比如,存储器706可以包括以下任一项或多种组合:任何类型的RAM,任何类型的ROM,闪存设备,硬盘,光盘等。更一般地,任何存储器都可以使用任何技术来存储信息。进一步地,任何存储器可以提供信息的易失性或非易失性保留。进一步地,任何存储器可以表示计算机设备702的固定或可移除部件。在一种情况下,当处理器704执行被存储在任何存储器或存储器的组合中的相关联的指令时,计算机设备702可以执行相关联指令的任一操作。计算机设备702还包括用于与任何存储器交互的一个或多个驱动机构708,诸如硬盘驱动机构、光盘驱动机构等。
计算机设备702还可以包括输入/输出模块710(I/O),其用于接收各种输入(经由输入设备712)和用于提供各种输出(经由输出设备714))。一个具体输出机构可以包括呈现设备716和相关联的图形用户接口(GUI)718。在其他实施例中,还可以不包括输入/输出模块710(I/O)、输入设备712以及输出设备714,仅作为网络中的一台计算机设备。计算机设备702还可以包括一个或多个网络接口720,其用于经由一个或多个通信链路722与其他设备交换数据。一个或多个通信总线724将上文所描述的部件耦合在一起。
通信链路722可以以任何方式实现,例如,通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信链路722可以包括由任何协议或协议组合支配的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
对应于图2-图5中的方法,本文实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法的步骤。
本文实施例还提供一种计算机可读指令,其中当处理器执行所述指令时,其中的程序使得处理器执行如图2至图5所示的方法。
应理解,在本文的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本文实施例的实施过程构成任何限定。
还应理解,在本文实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本文的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本文所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本文实施例方案的目的。
另外,在本文各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本文的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本文各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本文中应用了具体实施例对本文的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本文的方法及其核心思想;同时,对于本领域的一般技术人员,依据本文的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本文的限制。
Claims (17)
1.一种远程服务调用方法,其特征在于,所述方法包括:
获取待请求服务信息,所述待请求服务信息包括多个按预设时序执行的微服务;
按照预设映射规则,确定每个所述微服务在分布式系统中的映射参数,所述映射参数包括预设映射标识和输入参数;
按照所述预设时序,确定初始微服务的映射参数,并根据所述初始微服务的预设映射标识和输入参数,获取并执行所述分布式系统中的初始微服务;
当所述初始微服务执行成功时,将所述初始微服务的执行状态和下一个微服务的映射参数写入所述初始微服务的输出报文;
根据所述输出报文中的下一个微服务的映射参数继续执行所述下一个微服务。
2.根据权利要求1所述的方法,其特征在于,所述预设映射规则的建立包括:
获取基于分布式系统的全部微服务,并确定所述微服务的属性信息,所述属性信息包括微服务类型和微服务位置;
根据所述微服务的属性信息和预设映射标识,建立所述微服务和所述预设映射标识之间的映射关系,以使通过所述预设映射标识从所述分布式系统中获取与所述预设映射标识对应的微服务。
3.根据权利要求1所述的方法,其特征在于,所述获取待请求服务信息,之前包括:
建立动态代理框架,并对分布式系统上的全部微服务进行动态代理注解,通过所述动态代理注解实现对预设映射标识对应的微服务的自动执行。
4.根据权利要求1所述的方法,其特征在于,所述按照预设映射规则,确定每个所述微服务在分布式系统中的映射参数,包括:
根据所述待请求服务信息,确定每个微服务的输入参数;
根据预设映射规则,确定每个微服务在分布式系统中的预设映射标识;
根据所述预设映射标识和所述输入参数,通过预设格式转换规则确定所述映射参数。
5.根据权利要求4所述的方法,其特征在于,所述根据所述预设映射标识和所述输入参数,通过预设格式转换规则确定所述映射参数,包括:
根据所述预设格式转换规则,将所述输入参数转换成预设格式参数;
根据转换后的预设格式参数和所述预设映射标识,确定所述映射参数,并将所述映射参数存储到内存中。
6.根据权利要求5所述的方法,其特征在于,所述预设格式转换规则为JSON字符串转换。
7.根据权利要求1所述的方法,其特征在于,所述获取待请求服务信息之后包括:
确定所述待请求服务信息中的多个微服务;
判断多个所述微服务是否全部在本地数据库中;
若多个所述微服务全部在本地数据库中,则按照预设时序执行所述微服务,以实现所述待请求服务;
若多个所述微服务不全部在本地数据库中,则执行对每个微服务的映射处理,以实现全部微服务的执行。
8.根据权利要求7所述的方法,其特征在于,所述若多个所述微服务不全部在本地数据库中,则执行对每个微服务的映射处理,以实现全部微服务的执行,包括:
判断多个所述微服务是否全部在基于分布式系统的数据库中;
若多个所述微服务全部在基于分布式系统的数据库中,则按照预设映射规则,确定每个所述微服务在分布式系统中的映射参数;
若多个所述微服务不全部在基于分布式系统的数据库中,更新基于分布式系统的数据库,以使多个所述微服务全部在更新后的基于分布式系统的数据库中。
9.根据权利要求8所述的方法,其特征在于,所述更新基于分布式系统的数据库包括:
获取不在基于分布式系统的数据库中的目标微服务;
根据所述目标微服务,确定匹配微服务,其中所述匹配微服务为基于分布式系统的数据库中与所述目标微服务匹配度达到预设值的微服务;
更新所述匹配微服务,以使更新后的所述匹配微服务与所述目标微服务一致。
10.根据权利要求9所述的方法,其特征在于,所述更新基于分布式系统的数据库包括:
获取不在基于分布式系统的数据库中的目标微服务;
当所述目标微服务与基于分布式系统的数据库中全部微服务的匹配度未达到预设值;
将所述目标微服务添加到基于分布式系统的数据库中,以使更新后的基于分布式系统的数据库包含所述目标微服务。
11.根据权利要求10所述的方法,其特征在于,所述更新基于分布式系统的数据库,以使多个所述微服务全部在更新后的基于分布式系统的数据库中,包括:
根据更新后的基于分布式系统的数据库中的目标微服务,通过已经建立的预设映射规则确定所述目标微服务的预设映射标识;
根据所述预设映射标识和所述目标微服务对应的输入参数,确定所述目标微服务的映射参数,并将所述映射参数存储到内存中。
12.根据权利要求1所述的方法,其特征在于,所述根据所述初始微服务的预设映射标识和输入参数,获取并执行所述分布式系统中的初始微服务,包括:
根据所述预设映射标识,获取基于分布式系统的数据库中初始微服务;
将所述输入参数输入所述初始微服务中,执行所述初始微服务,并获取所述初始微服务的执行状态。
13.根据权利要求1所述的方法,其特征在于,所述下一个微服务是通过所述预设时序确定的。
14.根据权利要求1所述的方法,其特征在于,所述根据所述输出报文中的下一个微服务的映射参数继续执行所述下一个微服务,包括:
确定所述输出报文中下一个微服务的映射参数中的预设映射标识和输入参数,并将所述下一个微服务更新为当前微服务;
根据所述当前微服务的预设映射标识和输入参数,执行所述当前微服务;
当所述当前微服务执行成功时,将所述当前微服务的执行状态和下一个微服务的映射参数写入所述当前微服务的输出报文;
根据所述当前微服务所述输出报文,执行所述下一个微服务,以此类推,直到全部微服务全部执行完毕。
15.一种远程服务调用装置,其特征在于,所述装置包括:
待请求服务获取模块,用于获取待请求服务信息,所述待请求服务信息包括多个按预设时序执行的微服务;
映射模块,用于按照预设映射规则,确定每个所述微服务在分布式系统中的映射参数,所述映射参数包括预设映射标识和输入参数;
初始微服务执行模块,用于按照所述预设时序,确定初始微服务的映射参数,并根据所述初始微服务的预设映射标识和输入参数,获取并执行所述分布式系统中的初始微服务;
输出报文获取模块,用于当所述初始微服务执行成功时,将所述初始微服务的执行状态和下一个微服务的映射参数写入所述初始微服务的输出报文;
微服务执行模块,用于根据所述输出报文中的下一个微服务的映射参数继续执行所述下一个微服务。
16.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至14任一项所述方法的步骤。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至14任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110289782.5A CN113010332A (zh) | 2021-03-17 | 2021-03-17 | 一种远程服务调用方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110289782.5A CN113010332A (zh) | 2021-03-17 | 2021-03-17 | 一种远程服务调用方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113010332A true CN113010332A (zh) | 2021-06-22 |
Family
ID=76409601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110289782.5A Pending CN113010332A (zh) | 2021-03-17 | 2021-03-17 | 一种远程服务调用方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113010332A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114070886A (zh) * | 2021-11-17 | 2022-02-18 | 深圳壹账通智能科技有限公司 | 报文转换方法、装置、设备及介质 |
CN114938387A (zh) * | 2022-07-22 | 2022-08-23 | 浙江中控技术股份有限公司 | 一种数据传输方法、装置、系统及存储介质 |
CN117093638A (zh) * | 2023-10-17 | 2023-11-21 | 博智安全科技股份有限公司 | 一种微服务数据初始化方法、系统、电子设备及存储介质 |
-
2021
- 2021-03-17 CN CN202110289782.5A patent/CN113010332A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114070886A (zh) * | 2021-11-17 | 2022-02-18 | 深圳壹账通智能科技有限公司 | 报文转换方法、装置、设备及介质 |
CN114938387A (zh) * | 2022-07-22 | 2022-08-23 | 浙江中控技术股份有限公司 | 一种数据传输方法、装置、系统及存储介质 |
CN117093638A (zh) * | 2023-10-17 | 2023-11-21 | 博智安全科技股份有限公司 | 一种微服务数据初始化方法、系统、电子设备及存储介质 |
CN117093638B (zh) * | 2023-10-17 | 2024-01-23 | 博智安全科技股份有限公司 | 一种微服务数据初始化方法、系统、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113010332A (zh) | 一种远程服务调用方法、装置、设备及存储介质 | |
US11477298B2 (en) | Offline client replay and sync | |
US10284671B2 (en) | Dynamic bundling of web components for asynchronous delivery | |
US10209855B1 (en) | Concurrent display of masked views of applications between devices | |
US9557880B2 (en) | Shared user interface services framework | |
CN107872437A (zh) | 一种用于业务请求的方法、装置及服务器 | |
US20150067013A1 (en) | Methods for servicing web service requests using parallel agile web services and devices thereof | |
CN108737471B (zh) | 一种网络访问方法及装置 | |
CN110224899B (zh) | 一种tcp应用的调用链获取方法及装置 | |
US11379446B1 (en) | Session-based data storage for chat-based communication sessions | |
US8510707B1 (en) | Mainframe-based web service development accelerator | |
CA3178644A1 (en) | Techniques to facilitate a migration process to cloud storage | |
JP2012512445A (ja) | メッセージ処理パイプラインの構成 | |
AU2016101498B4 (en) | Data Interchange System | |
US8555239B1 (en) | Mainframe-based web service development accelerator | |
CN109005163B (zh) | 一种http动态请求服务调用方法 | |
US9858321B2 (en) | Accessing application services from forms | |
US20160099842A1 (en) | Intersystem automated-dialog agent | |
Sefid‐Dashti et al. | A reference architecture for mobile SOA | |
CN110321507A (zh) | 浏览器跨域通信方法及装置 | |
US20160099843A1 (en) | Intersystem automated-dialog agent | |
US8479175B1 (en) | Mainframe-based web service development accelerator | |
US11301538B1 (en) | Data management in multi-application web pages | |
CN112631696B (zh) | 服务的编排方法、编排装置、处理器与服务的编排系统 | |
CN105389355B (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 |