CN116074337B - 基于api网关的远程过程调用处理方法和装置 - Google Patents
基于api网关的远程过程调用处理方法和装置 Download PDFInfo
- Publication number
- CN116074337B CN116074337B CN202310355367.4A CN202310355367A CN116074337B CN 116074337 B CN116074337 B CN 116074337B CN 202310355367 A CN202310355367 A CN 202310355367A CN 116074337 B CN116074337 B CN 116074337B
- Authority
- CN
- China
- Prior art keywords
- parameter value
- output parameter
- input parameter
- api gateway
- service
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/321—Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请公开一种基于API网关的远程过程调用处理方法和装置,API网关根据API接口对应的微服务元数据信息生成对微服务的RPC接口方法的RPC调用请求,拦截RPC调用请求的输入参数值,根据输入参数属性指示的启用输入参数的引用传递的指示,将输入参数值写入分布式缓存,基于引用传递标识和输入参数值的访问地址信息生成替代输入参数值的替代输入参数,传输给微服务;微服务拦截替代输入参数,当识别到替代输入参数中的引用传递标识时,基于访问地址信息从分布式缓存读取输入参数值。本申请可以降低API网关与微服务之间的数据传输,提高客户端通过API网关访问包含大数据处理的微服务的性能和服务质量。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种基于API网关的远程过程调用处理方法和装置。
背景技术
随着分布式和微服务技术的发展,基于微服务架构的API网关(API Gateway)得到了广泛的应用。API网关是实现对后端的微服务接口调用的统一入口,对来自应用客户端的访问请求进行路由、负载均衡、协议转换、访问控制和流量限制等处理,从而向各应用客户端隐藏后端微服务的接口服务,使得隐藏在 API 网关后面的各微服务可以专注于业务服务,而不用去处理如负载均衡、协议转换、访问控制和流量限制等基础功能,也提高了系统的可维护性和扩展性。由于基于远程过程调用(RPC)的微服务接口调用协议,如gRPC、Protobuf、Dubbo等在性能上的优点,实际应用中可以在API网关中使用这些RPC协议实现对后端微服务的接口调用,从而通过将应用客户端的HTTP协议的接口请求转换为对后端微服务的RPC接口调用,实现对微服务的服务调用。
上述RPC接口调用是采用客户端/服务端(C/S)模式,通过网络协议在作为客户端的API网关上实现对远程计算机的微服务中的方法的远程调用,这种远程调用主要是通过传递参数值(输入参数值和输出参数值)的方式进行,一般不支持直接传递参数的引用,即使作为客户端的API网关想要通过传递参数的引用的方式实现远程过程调用,实质也是需要传递参数值的副本给作为服务端的微服务。然而,在涉及大数据处理等的数据密集型应用的场景下,如果通过API网关实现对包含大数据处理的微服务的RPC接口调用,将导致API网关与后端微服务之间的大量的数据传输,从而影响了应用客户端通过API网关访问后端微服务的性能和服务质量。
发明内容
有鉴于此,本申请提出一种基于API网关的远程过程调用处理方法和装置,能够在数据密集型应用的场景下,显著降低API网关与后端的微服务之间RPC调用导致的大量的数据传输,提高应用客户端通过API网关访问后端微服务的性能和服务质量。
第一方面,本申请提出一种基于API网关的远程过程调用处理方法,包括:
响应于接收到客户端对第一API接口的访问请求,API网关根据所述第一API接口对应的第一微服务元数据信息生成对目标微服务的第一RPC接口方法的第一RPC调用请求,所述第一微服务元数据信息包括与所述第一RPC接口方法关联的第一输入参数属性和第一输出参数属性;
所述API网关拦截所述第一RPC调用请求的第一输入参数值,根据所述第一输入参数属性指示的启用输入参数的引用传递的第一指示,将所述第一输入参数值写入分布式缓存;
所述API网关基于引用传递标识和所述第一输入参数值在所述分布式缓存中的第一访问地址信息生成替代所述第一输入参数值的第一替代输入参数,传输给所述目标微服务;
所述目标微服务拦截所述第一替代输入参数,当识别到所述第一替代输入参数中的所述引用传递标识时,基于所述第一访问地址信息从所述分布式缓存读取所述第一输入参数值,传递给所述第一RPC接口方法,以基于所述第一输入参数值执行所述第一RPC接口方法。
在可选的实施方式中,所述方法包括:
所述目标微服务拦截执行所述第一RPC接口方法的第一输出参数值,根据所述第一输出参数属性指示的启用输出参数的引用传递的第二指示,将所述第一输出参数值写入所述分布式缓存;
所述目标微服务基于所述引用传递标识和所述第一输出参数值在所述分布式缓存中的第二访问地址信息生成替代所述第一输出参数值的第一替代输出参数,传输给所述API网关;
所述API网关拦截所述第一替代输出参数,当识别到所述第一替代输出参数中的所述引用传递标识时,基于所述第二访问地址信息从所述分布式缓存读取所述第一输出参数值,传递给所述客户端。
在可选的实施方式中,所述方法包括:
所述目标微服务拦截执行所述第一RPC接口方法的第一输出参数值,根据所述第一输出参数属性指示的不启用输出参数的引用传递的第三指示,将所述第一输出参数值传输给所述API网关;
所述API网关拦截所述第一输出参数值,当未识别到所述第一输出参数值中的所述引用传递标识时,将所述第一输出参数值传递给所述客户端。
在可选的实施方式中,所述方法还包括:
所述API网关将所述第一输出参数值传递给所述客户端之后,根据所述第一输入参数属性和第一输出参数属性,向所述分布式缓存发送数据删除请求,所述数据删除请求携带所述第一访问地址信息和第二访问地址信息;
所述分布式缓存响应于所述数据删除请求,根据所述数据删除请求携带的所述第一访问地址信息和第二访问地址信息删除已存储的所述第一输入参数值和所述第一输出参数值。
在可选的实施方式中,所述方法包括:
响应于接收到客户端对第二API接口的访问请求,所述API网关根据所述第二API接口对应的第二微服务元数据信息生成对所述目标微服务的第二RPC接口方法的第二RPC调用请求,所述第二微服务元数据信息包括与所述第二RPC接口方法关联的第二输入参数属性和第二输出参数属性;
所述API网关拦截所述第二RPC调用请求的第二输入参数值,根据所述第二输入参数属性指示的不启用输入参数的引用传递的第四指示,直接将所述第二输入参数值传输给所述目标微服务;
所述目标微服务拦截所述第二输入参数值,当未识别到所述第二输入参数值中的所述引用传递标识时,将所述第二输入参数值传递给所述第二RPC接口方法,以基于所述第二输入参数值执行所述第二RPC接口方法。
在可选的实施方式中,所述方法包括:
所述目标微服务拦截执行所述第二RPC接口方法的第二输出参数值,根据所述第二输出参数属性指示的启用输出参数的引用传递的第五指示,将所述第二输出参数值写入所述分布式缓存;
所述目标微服务基于所述引用传递标识和所述第二输出参数值在所述分布式缓存中的第三访问地址信息生成替代所述第二输出参数值的第二替代输出参数,传输给所述API网关;
所述API网关拦截所述第二替代输出参数,当识别到所述第二替代输出参数中的所述引用传递标识时,基于所述第三访问地址信息从所述分布式缓存读取所述第二输出参数值,传递给所述客户端。
在可选的实施方式中,所述方法包括:
所述目标微服务拦截执行所述第二RPC接口方法的第二输出参数值,根据所述第二输出参数属性指示的不启用输出参数的引用传递的第六指示,将所述第二输出参数值传输给所述API网关;
所述API网关拦截所述第二输出参数值,当未识别到所述第二输出参数值中的所述引用传递标识时,将所述第二输出参数值传递给所述客户端。
在可选的实施方式中,所述将所述第一输入参数值写入分布式缓存包括所述API网关将所述第一输入参数值以第一键值对写入所述分布式缓存;所述将所述第一输出参数值写入所述分布式缓存包括将所述第一输出参数值以第二键值对写入所述分布式缓存;所述将所述第二输出参数值写入所述分布式缓存包括将所述第二输出参数值以第三键值对写入所述分布式缓存。
在可选的实施方式中,所述第一访问地址信息包括所述第一键值对中的第一关键字;所述第二访问地址信息包括所述第二键值对中的第二关键字;所述第三访问地址信息包括所述第三键值对中的第三关键字。
第二方面,本申请还提出一种基于API网关的远程过程调用处理装置,包括:
请求处理单元,用于响应于接收到客户端对第一API接口的访问请求,API网关根据所述第一API接口对应的第一微服务元数据信息生成对目标微服务的第一RPC接口方法的第一RPC调用请求,所述第一微服务元数据信息包括与所述第一RPC接口方法关联的第一输入参数属性和第一输出参数属性;
第一拦截单元,用于所述API网关拦截所述第一RPC调用请求的第一输入参数值,根据所述第一输入参数属性指示的启用输入参数的引用传递的第一指示,将所述第一输入参数值写入分布式缓存;
第一参数替代单元,用于所述API网关基于引用传递标识和所述第一输入参数值在所述分布式缓存中的第一访问地址信息生成替代所述第一输入参数值的第一替代输入参数,传输给所述目标微服务;
第二拦截单元,用于所述目标微服务拦截所述第一替代输入参数,当识别到所述第一替代输入参数中的所述引用传递标识时,基于所述第一访问地址信息从所述分布式缓存读取所述第一输入参数值,传递给所述第一RPC接口方法,以基于所述第一输入参数值执行所述第一RPC接口方法。
本申请至少可以达到如下有益效果:
本申请在基于API网关实现对后端的多个微服务的RPC接口调用的现有方案不支持向指定微服务的RPC接口方法传递输入参数的引用的情形下,在涉及大数据处理等数据密集型应用的场景下,可以基于API网关实现对包含大数据处理的微服务的RPC接口调用时对输入参数的引用传递,显著降低API网关与后端的微服务之间RPC调用导致的大量的数据传输,提高客户端通过API网关访问包含大数据处理的微服务的性能和服务质量。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍。应当理解,以下附图仅示出了本申请的某些实施例,而不应被看作是对本申请范围的限制。
图1是现有的基于API网关实现微服务的RPC调用的系统100的示例性的架构示意图;
图2是本申请一实施例的基于API网关实现微服务的RPC调用的系统200的示例性的架构示意图;
图3是根据本申请第一实施例的基于API网关的远程过程调用处理方法的流程示意图;
图4示出API网关中的一种示例性的接口路由表的结构示意图;
图5是根据本申请第二实施例的基于API网关的远程过程调用处理方法的部分流程示意图;
图6是根据本申请第三实施例的基于API网关的远程过程调用处理方法的部分流程示意图;
图7是根据本申请第四实施例的基于API网关的远程过程调用处理方法的部分流程示意图;
图8是根据本申请第五实施例的基于API网关的远程过程调用处理方法的部分流程示意图;
图9是根据本申请第六实施例的基于API网关的远程过程调用处理方法的部分流程示意图;
图10是根据本申请第七实施例的基于API网关的远程过程调用处理方法的部分流程示意图;
图11是本申请一具体实施方式的基于API网关的远程过程调用处理方法的通信时序图;
图12是根据本申请第一实施例的基于API网关的远程过程调用处理装置的结构示意图;
图13是根据本申请第二实施例的基于API网关的远程过程调用处理装置的部分结构示意图;
图14是根据本申请第三实施例的基于API网关的远程过程调用处理装置的部分结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请实施例的附图,对本申请实施例中的技术方案进行清楚、完整地描述。然而,应当理解,所描述的实施例仅仅是本申请的部分示例性实施例,而不是全部实施例,因此以下对本申请实施例的详细描述并非旨在限制本申请要求保护的范围。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书中的术语“第一”、“第二”等仅是用于区别描述类似的对象,而不是用于描述特定的顺序或先后次序,也不能理解为指示或暗示相对重要性。
图1是现有的基于API网关实现微服务的RPC调用的系统100的示例性的架构示意图。该系统100包括多个客户端110,API网关120、服务注册中心130以及多个微服务140。其中,多个微服务140可以向服务注册中心130注册微服务元数据信息,微服务元数据信息包括服务名称(Service_Name)、服务地址(Service_Address)、RPC接口方法(Interface_Method)、输入参数信息(Input_Parameter)和输出参数信息(Output_Parameter)等。API网关120通过向服务注册中心130获取每个微服务元数据信息,然后为每个微服务的RPC接口方法构建面向客户端110访问的HTTP协议的API接口,并形成接口路由表121,保存在API网关120关联的数据库中。接口路由表121包括面向客户端110访问的HTTP协议的API接口与对应的微服务140的微服务元数据信息之间的映射关系。当API网关120接收到多个客户端中任一客户端110对指定API接口的访问请求,API网关120从接口路由表121中获得该指定API接口对应的微服务元数据信息,基于对应的微服务元数据信息由协议转换模块122生成向对应的微服务的RPC接口方法的RPC调用请求。
上述系统架构中,API网关120实现对后端的多个微服务140的RPC接口调用是采用客户端/服务端(C/S)模式,通过网络协议在API网关120上实现对远程计算机的多个微服务140中的RPC接口方法的RPC调用,这种RPC调用主要基于微服务元数据信息中RPC接口方法所需的输入参数信息(Input_Parameter)和输出参数信息(Output_Parameter),向指定微服务的RPC接口方法传递输入参数值的方式进行,一般不支持直接传递输入参数的引用和输出参数的引用,即使作为客户端的API网关120想要通过传递输入参数的引用的方式实现RPC远程过程调用,实质也是需要传递输入参数值的副本给作为服务端的指定微服务的RPC接口方法。因此,在涉及大数据处理等数据密集型应用的场景下,如果通过API网关120实现对包含大数据处理的微服务的RPC接口调用,将导致API网关120与后端的微服务140之间RPC调用导致的大量的数据传输,从而影响了客户端110通过API网关120访问后端的微服务140的性能和服务质量。为此,本申请提出一种基于API网关的远程过程调用处理方法和装置,以改进上述问题。
图2是本申请一实施例的基于API网关实现微服务的RPC调用的系统200的示例性的架构示意图。该系统200在前述系统100的基础上,进一步包括分布式缓存150,该分布式缓存150分别连接到API网关120和多个微服务140。在一个实施方式中,所述分布式缓存150可以以存储键值对(Key-Value Pair)的方式缓存数据对象,例如可以基于Redis或者Memcached分布式缓存实现。API网关120和多个微服务140可以向所述分布式缓存150进行键值对的读写操作。
该系统200在API网关120内置有请求方参数拦截器123,在多个微服务140中每个微服务内置服务方参数拦截器141。多个微服务140在向服务注册中心130注册微服务元数据信息时,微服务元数据信息除了包括服务名称(Service_Name)、服务地址(Service_Address)、RPC接口方法(Interface_Method)、与RPC接口方法(Interface_Method)对应的输入参数信息(Input_Parameter)和输出参数信息(Output_Parameter)等基础元数据信息之外,还进一步包括与RPC接口方法(Interface_Method)关联的输入参数属性(Input_Parameter_Property)和输出参数属性(Output_Parameter_Property)。其中,输入参数属性(Input_Parameter_Property)和输出参数属性(Output_Parameter_Property)分别用于指示微服务的RPC接口方法是否启用输入参数的引用传递和输出参数的引用传递。
一方面,API网关120通过向服务注册中心130获取每个微服务元数据信息,然后为每个微服务的RPC接口方法构建面向客户端110访问的HTTP协议的API接口,并形成所述接口路由表121。当API网关120接收到多个客户端中目标客户端110对指定API接口的访问请求,API网关120从接口路由表121中获得该指定API接口对应的目标微服务140的微服务元数据信息,通过协议转换模块122生成向目标微服务的对应RPC接口方法的RPC调用请求,API网关120的请求方参数拦截器123会拦截该RPC调用请求的输入参数值,从目标微服务140对应的微服务元数据信息获得目标微服务140的对应RPC接口方法的输入参数属性。根据对应RPC接口方法的输入参数属性的指示,确定是否启用输入参数值的引用传递。如果目标微服务140的对应RPC接口方法的输入参数属性指示启用输入参数的引用传递时,请求方参数拦截器123会根据分布式缓存150的访问地址,将所述输入参数值写入分布式缓存150,并将指定的引用传递标识和所述输入参数值在分布式缓存150中的访问地址信息组装为字符串,作为替代输入参数,替代原输入参数值,通过网络协议传输给目标微服务140。
目标微服务140内置的服务方参数拦截器141拦截该替代输入参数,当识别到该替代输入参数中的指定的引用传递标识时,基于该替代输入参数中的所述输入参数值在分布式缓存150中的访问地址信息从分布式缓存150中读取所述输入参数值,传递给目标微服务140的对应RPC接口方法,并基于该输入参数值执行所述对应RPC接口方法。
另一方面,当目标微服务140的对应RPC接口方法执行完成,并需要向API网关120返回输出参数值时,目标微服务140内置的服务方参数拦截器141拦截该输出参数值,从服务注册中心130注册的微服务元数据信息获得该对应RPC接口方法的输出参数属性。根据对应RPC接口方法的输出参数属性的指示,确定是否启用输出参数值的引用传递。当该对应RPC接口方法的输出参数属性指示启用输出参数的引用传递时,服务方参数拦截器141会根据分布式缓存150的访问地址,将所述输出参数值写入分布式缓存150,并将指定的引用传递标识、所述输出参数值在分布式缓存150中的访问地址信息组装为字符串,作为替代输出参数,替代所述输出参数值,通过网络协议传输给API网关120。
API网关120内置的请求方参数拦截器123拦截该替代输出参数,当识别到该替代输出参数中的指定的引用传递标识时,基于该替代输出参数中的所述输出参数值在分布式缓存150中的访问地址信息从分布式缓存150中读取所述输出参数值,传递给目标客户端110,从而实现数据密集型应用场景下经由API网关120对包含大数据处理的微服务的RPC接口调用。
下面将结合图2所示的示例性的系统架构进一步对本申请各个实施例涉及的基于API网关的远程过程调用处理方法的流程以及对应的装置的功能模块进行详细说明。
图3是根据本申请第一实施例的基于API网关的远程过程调用处理方法的流程示意图。如图3所示,该方法包括以下步骤:
步骤S301,响应于接收到客户端对第一API接口的第一访问请求,API网关根据所述第一API接口对应的第一微服务元数据信息生成对目标微服务的第一RPC接口方法的第一RPC调用请求,所述第一微服务元数据信息包括与所述第一RPC接口方法关联的第一输入参数属性和第一输出参数属性;
步骤S302,所述API网关拦截所述第一RPC调用请求的第一输入参数值,根据所述第一输入参数属性指示的启用输入参数的引用传递的第一指示,将所述第一输入参数值写入分布式缓存;
步骤S303,所述API网关基于引用传递标识和所述第一输入参数值在所述分布式缓存中的第一访问地址信息生成替代所述第一输入参数值的第一替代输入参数,传输给所述目标微服务;
步骤S304,所述目标微服务拦截所述第一替代输入参数,当识别到所述第一替代输入参数中的所述引用传递标识时,基于所述第一访问地址信息从所述分布式缓存读取所述第一输入参数值,传递给所述第一RPC接口方法,以基于所述第一输入参数值执行所述第一RPC接口方法。
本实施例中,当API网关120接收到客户端110对指定的第一API接口的第一访问请求,API网关120可以从接口路由表121中获得该第一API接口对应的第一微服务元数据信息,根据所述第一微服务元数据信息生成对目标微服务140的第一RPC接口方法的RPC调用请求。具体而言,可以通过内置的协议转换模块122来生成向目标微服务140的第一RPC接口方法的第一RPC调用请求。
接口路由表121中的第一API接口对应的第一微服务元数据信息可以是API网关120从服务注册中心130获取的微服务元数据信息。多个微服务140在发布时可以向服务注册中心130注册自己的微服务元数据信息。本实施例中,所述第一API接口对应的第一微服务元数据信息包括所述目标微服务140的基础元数据信息之外,还包括与所述目标微服务140的第一RPC接口方法关联的第一输入参数属性和第一输出参数属性。所述目标微服务140的基础元数据信息可以包括服务名称、服务地址、所述第一RPC接口方法、所述第一RPC接口方法的输入参数信息和输出参数信息等。与所述目标微服务140的第一RPC接口方法关联的第一输入参数属性和第一输出参数属性分别用于指示目标微服务140的第一RPC接口方法是否启用输入参数的引用传递和输出参数的引用传递。
图4示出API网关中的一种示例性的接口路由表的结构示意图。如图4所示,该示例性的接口路由表121包括API网关120已经构建的面向客户端110访问的HTTP协议的多个API接口,例如API_URL1、API_URL2、API_URL3、API_URL4,该多个API接口可以表示为统一资源定位符的格式。该示例性的接口路由表121还包括与所述多个API接口分别对应的目标微服务140的基础元数据信息,例如服务名称、服务地址、RPC接口方法、输入参数信息和输出参数信息;以及还包括与对应的目标微服务140的RPC接口方法关联的输入参数属性和输出参数属性。其中,服务名称表示目标微服务140的唯一标识名称,服务地址表示访问微服务的ip地址和端口,RPC接口方法表示目标微服务140提供的RPC接口中的方法名称,输入参数信息和输出参数信息分别表示目标微服务140的RPC接口方法的输入参数和输出参数的定义信息。输入参数属性和输出参数属性用于指示目标微服务140的RPC接口方法是否启用输入参数的引用传递和输出参数的引用传递,例如输入参数属性和输出参数属性可以设定为开关选项,例如当输入参数属性为ON时,表示在PRC调用中启用输入参数的引用传递,当输入参数属性为OFF时,表示在PRC调用中不启用输入参数的引用传递;同理,当输出参数属性为ON时,表示在PRC调用中启用输出参数的引用传递,当输出参数属性为OFF时,表示在PRC调用中不启用输出参数的引用传递。
如图4所示,条目401和402分别表示API网关120对微服务Service_Name1的RPC接口方法Method_Name1和Method_Name2分别构建的API接口(API_URL1和API_URL2)与微服务元数据信息的映射关系,其中与RPC接口方法Method_Name1对应的输入参数属性为ON,输出参数属性为ON,即对该RPC接口方法Method_Name1的输入参数和输出参数均启用引用传递;与RPC接口方法Method_Name2对应的输入参数属性为OFF,输出参数属性为OFF,即对该RPC接口方法Method_Name2的输入参数和输出参数均不启用引用传递。同理,条目403和404分别表示API网关120对微服务Service_Name2的RPC接口方法Method_Name3和Method_Name4分别构建的API接口(API_URL3和API_URL4)与微服务元数据信息的映射关系,其中与RPC接口方法Method_Name3对应的输入参数属性为ON,输出参数属性为OFF,即对该RPC接口方法Method_Name3的输入参数启用引用传递,对输出参数不启用引用传递;与RPC接口方法Method_Name4对应的输入参数属性为OFF,输出参数属性为ON,即对该RPC接口方法Method_Name4的输入参数不启用引用传递,但对输出参数启用引用传递。
进一步地,API网关120在生成向目标微服务140的第一RPC接口方法的第一RPC调用请求之后,请求方参数拦截器123会拦截该第一RPC调用请求的第一输入参数值,从第一API接口对应的第一微服务元数据信息获得目标微服务140的第一RPC接口方法的第一输入参数属性。根据所述第一输入参数属性指示的启用输入参数的引用传递的第一指示,将所述第一输入参数值写入分布式缓存150。具体而言,当该目标微服务140的第一RPC接口方法的第一输入参数属性的开关选项指示启用输入参数的引用传递时,请求方参数拦截器123会根据分布式缓存150的访问地址,将所述第一输入参数值写入分布式缓存150中进行保存。
进一步地,API网关120在将所述第一输入参数值写入分布式缓存150中进行保存之后,会基于引用传递标识和所述第一输入参数值在所述分布式缓存150中的第一访问地址信息生成替代所述第一输入参数值的第一替代输入参数,具体而言,可以将所述引用传递标识和所述第一访问地址信息组装为字符串格式来生成所述第一替代输入参数,并传输给所述目标微服务140。引用传递标识是用于表征向目标微服务140传输输入参数的引用的唯一标识符,所述第一输入参数值在所述分布式缓存150中的第一访问地址信息表示可以用于从所述分布式缓存150中读取所述第一输入参数值的访问地址信息。API网关120在生成所述第一替代输入参数之后,会基于RPC在请求方和服务方之间的通信网络协议向所述目标微服务140传输所述第一替代输入参数。
进一步地,所述目标微服务140内置的服务方参数拦截器141会拦截该第一替代输入参数,当识别到该第一替代输入参数中包含所述引用传递标识时,根据分布式缓存150的访问地址,以及基于该第一替代输入参数中的第一访问地址信息从分布式缓存150中读取所述第一输入参数值,传递给目标微服务140的所述第一RPC接口方法,以基于所述第一输入参数值执行所述第一RPC接口方法。
在一个实施方式中,所述分布式缓存150可以包括Redis或者Memcached分布式缓存,可以以存储键值对(Key-Value Pair)的方式缓存数据对象。
在一个实施方式中,所述API网关将所述第一输入参数值写入分布式缓存可以包括所述API网关将所述第一输入参数值以第一键值对写入所述分布式缓存,其中第一键值对包括唯一标识该第一输入参数值的第一关键字和与第一关键字对应的第一输入参数值。在一个实施方式中,第一输入参数值可以包括至少一个输入参数值,所述至少一个输入参数值可以以列表(List)数据对象的结构存储为值对象(ValueObjectList)。
相应地,所述第一输入参数值在所述分布式缓存150中的第一访问地址信息可以包括所述第一键值对中的第一关键字,该第一关键字可以唯一识别所述分布式缓存150中的第一输入参数值,可以根据所述第一关键字读取所述第一键值对中的值对象,并根据所述值对象提取出所述至少一个输入参数值,作为所述第一输入参数值。
在一个实施方式中,API网关120和多个微服务140可以预先获取所述分布式缓存150的访问地址,例如访问IP地址和端口号,并缓存在本地节点,以便可以实现对所述分布式缓存150的连接和读写操作。
综上,本申请实施例响应于接收到客户端对第一API接口的第一访问请求,API网关根据所述第一API接口对应的第一微服务元数据信息生成对目标微服务的第一RPC接口方法的第一RPC调用请求,所述第一微服务元数据信息包括与所述第一RPC接口方法关联的第一输入参数属性和第一输出参数属性;所述API网关拦截所述第一RPC调用请求的第一输入参数值,根据所述第一输入参数属性指示的启用输入参数的引用传递的第一指示,将所述第一输入参数值写入分布式缓存;所述API网关基于引用传递标识和所述第一输入参数值在所述分布式缓存中的第一访问地址信息生成替代所述第一输入参数值的第一替代输入参数,传输给所述目标微服务;所述目标微服务拦截所述第一替代输入参数,当识别到所述第一替代输入参数中的所述引用传递标识时,基于所述第一访问地址信息从所述分布式缓存读取所述第一输入参数值,传递给所述第一RPC接口方法,以基于所述第一输入参数值执行所述第一RPC接口方法。从而,在基于API网关实现对后端的多个微服务的RPC接口调用的现有方案不支持向指定微服务的RPC接口方法传递输入参数的引用的情形下,在涉及大数据处理等数据密集型应用的场景下,可以基于API网关实现对包含大数据处理的微服务的RPC接口调用时对输入参数的引用传递,显著降低API网关与后端的微服务之间RPC调用导致的大量的数据传输,提高客户端通过API网关访问包含大数据处理的微服务的性能和服务质量。
图5是根据本申请第二实施例的基于API网关的远程过程调用处理方法的部分流程示意图。如图5所示,在前述任一实施例的基础上,所述方法还可以包括以下步骤:
步骤S501,所述目标微服务拦截执行所述第一RPC接口方法的第一输出参数值,根据所述第一输出参数属性指示的启用输出参数的引用传递的第二指示,将所述第一输出参数值写入所述分布式缓存;
步骤S502,所述目标微服务基于所述引用传递标识和所述第一输出参数值在所述分布式缓存中的第二访问地址信息生成替代所述第一输出参数值的第一替代输出参数,传输给所述API网关;
步骤S503,所述API网关拦截所述第一替代输出参数,当识别到所述第一替代输出参数中的所述引用传递标识时,基于所述第二访问地址信息从所述分布式缓存读取所述第一输出参数值,传递给所述客户端。
本实施例中,当目标微服务140的所述第一RPC接口方法执行完成,需要向API网关120返回第一输出参数值时,目标微服务140内置的服务方参数拦截器141拦截执行所述第一RPC接口方法的第一输出参数值,从服务注册中心130注册的微服务元数据信息获得该第一RPC接口方法的第一输出参数属性,当该第一RPC接口方法的第一输出参数属性指示启用输出参数的引用传递时,服务方参数拦截器141会根据分布式缓存150的访问地址,将所述第一输出参数值写入分布式缓存150,并将指定的引用传递标识和所述第一输出参数值在分布式缓存150中的第二访问地址信息组装生成第一替代输出参数,替代所述第一输出参数值,通过网络协议传输给API网关120。API网关120的请求方参数拦截器123拦截该第一替代输出参数,当识别到该第一替代输出参数中的指定的引用传递标识时,根据分布式缓存150的访问地址以及所述第二访问地址信息从分布式缓存150中读取所述第一输出参数值,传递给对应的目标客户端,从而实现数据密集型应用场景下经由API网关120对包含大数据处理的微服务的RPC接口调用。
在一个实施方式中,所述目标微服务将所述第一输出参数值写入所述分布式缓存可以包括所述目标微服务将所述第一输出参数值以第二键值对写入所述分布式缓存,其中第二键值对包括唯一标识该第一输出参数值的第二关键字和与第二关键字对应的第一输出参数值。在一个实施方式中,第一输出参数值可以包括至少一个输出参数值,所述至少一个输出参数值可以以列表(List)数据对象的结构存储为值对象(ValueObjectList)。
相应地,所述第一输出参数值在所述分布式缓存中的第二访问地址信息可以包括所述第二键值对中的第二关键字,该第二关键字可以唯一识别所述分布式缓存中的第一输出参数值,可以根据所述第二关键字读取所述第二键值对中的值对象,并根据所述值对象提取出所述至少一个输出参数值,作为所述第一输出参数值。
综上,本实施例通过所述目标微服务拦截执行所述第一RPC接口方法的第一输出参数值,根据所述第一输出参数属性指示的启用输出参数的引用传递的第二指示,将所述第一输出参数值写入所述分布式缓存;所述目标微服务基于所述引用传递标识和所述第一输出参数值在所述分布式缓存中的第二访问地址信息生成替代所述第一输出参数值的第一替代输出参数,传输给所述API网关;所述API网关拦截所述第一替代输出参数,当识别到所述第一替代输出参数中的所述引用传递标识时,基于所述第二访问地址信息从所述分布式缓存读取所述第一输出参数值,传递给所述客户端。从而,在基于API网关实现对后端的多个微服务的RPC接口调用的现有方案不支持指定微服务的RPC接口方法返回输出参数的引用的情形下,在涉及大数据处理等数据密集型应用的场景下,可以基于API网关实现对包含大数据处理的微服务的RPC接口调用时对输出参数的引用传递,显著降低API网关与后端的微服务之间RPC调用导致的大量的数据传输,提高客户端通过API网关访问包含大数据处理的微服务的性能和服务质量。
图6是根据本申请第三实施例的基于API网关的远程过程调用处理方法的部分流程示意图。如图6所示,在前述任一实施例的基础上,所述方法还可以包括以下步骤:
步骤S601,所述目标微服务拦截执行所述第一RPC接口方法的第一输出参数值,根据所述第一输出参数属性指示的不启用输出参数的引用传递的第三指示,将所述第一输出参数值传输给所述API网关;
步骤S602,所述API网关拦截所述第一输出参数值,当未识别到所述第一输出参数值中的所述引用传递标识时,将所述第一输出参数值传递给所述客户端。
本实施例中,当目标微服务的所述第一RPC接口方法执行完成,需要向API网关120返回第一输出参数值时,目标微服务内置的服务方参数拦截器141拦截执行所述第一RPC接口方法的第一输出参数值,从服务注册中心130注册的微服务元数据信息获得该第一RPC接口方法的第一输出参数属性,当该第一RPC接口方法的第一输出参数属性指示不启用输出参数的引用传递时,服务方参数拦截器141会直接将所述第一输出参数值通过网络协议传输给API网关120。API网关120的请求方参数拦截器123拦截该第一输出参数值,当识别到该第一输出参数值中没有指定的引用传递标识时,直接将所述第一输出参数值传递给所述客户端。
从而,本实施例可以进一步在涉及大数据处理等数据密集型应用的场景下,当对包含大数据处理的微服务的RPC接口调用的输入参数的数据量较大,而输出参数的数据量较小时,可以基于API网关仅实现对包含大数据处理的微服务的RPC接口调用时对输入参数的引用传递,而不启用对输出参数的引用传递,从而降低目标微服务与分布式缓存之间不必要的数据交互,在显著降低API网关与后端的微服务之间的大量的数据传输的基础上,进一步提高客户端通过API网关访问包含大数据处理的微服务的性能和服务质量。
图7是根据本申请第四实施例的基于API网关的远程过程调用处理方法的部分流程示意图。如图7所示,在前述任一实施例的基础上,所述方法还可以包括以下步骤:
步骤S701,所述API网关将所述第一输出参数值传递给所述客户端之后,根据所述第一输入参数属性和第一输出参数属性,向所述分布式缓存发送数据删除请求,所述数据删除请求携带所述第一访问地址信息和第二访问地址信息;
步骤S702,所述分布式缓存响应于所述数据删除请求,根据所述数据删除请求携带的所述第一访问地址信息和第二访问地址信息删除已存储的所述第一输入参数值和所述第一输出参数值。
本实施例中,当API网关120执行对目标微服务的所述第一RPC接口方法的RPC调用完成时,为了减少RPC调用过程中对分布式缓存150的写入所产生的过时垃圾数据对分布式缓存150的存储空间和读写性能的影响,本实施例进一步通过所述API网关120在将所述第一输出参数值传递给所述客户端之后,根据所述第一输入参数属性和第一输出参数属性,当所述第一输入参数属性指示启用输入参数的引用传递和第一输出参数属性指示启用输出参数的引用传递时,向所述分布式缓存150发送数据删除请求,所述数据删除请求携带所述第一访问地址信息和第二访问地址信息。所述分布式缓存150响应于所述数据删除请求,根据所述数据删除请求携带的所述第一访问地址信息和第二访问地址信息从分布式缓存150的存储空间删除已存储的所述第一输入参数值和所述第一输出参数值。
从而,本实施例可以进一步在涉及大数据处理等数据密集型应用的场景下,可以基于API网关仅实现对包含大数据处理的微服务的RPC接口调用时对输入参数和输出参数的引用传递,并且能够减少RPC调用过程中对分布式缓存的写入所产生的过时垃圾数据对分布式缓存的存储空间和读写性能的影响,从而在显著降低API网关与后端的微服务之间RPC调用导致的大量的数据传输的基础上,进一步提高客户端通过API网关访问包含大数据处理的微服务的性能和服务质量。
图8是根据本申请第五实施例的基于API网关的远程过程调用处理方法的部分流程示意图。如图8所示,在前述任一实施例的基础上,所述方法还可以包括以下步骤:
步骤S801,响应于接收到客户端对第二API接口的第二访问请求,所述API网关根据所述第二API接口对应的第二微服务元数据信息生成对所述目标微服务的第二RPC接口方法的第二RPC调用请求,所述第二微服务元数据信息包括与所述第二RPC接口方法关联的第二输入参数属性和第二输出参数属性;
步骤S802,所述API网关拦截所述第二RPC调用请求的第二输入参数值,根据所述第二输入参数属性指示的不启用输入参数的引用传递的第四指示,直接将所述第二输入参数值传输给所述目标微服务;
步骤S803,所述目标微服务拦截所述第二输入参数值,当未识别到所述第二输入参数值中的所述引用传递标识时,将所述第二输入参数值传递给所述第二RPC接口方法,以基于所述第二输入参数值执行所述第二RPC接口方法。
本实施例中,所述API网关120接收到客户端对第二API接口的第二访问请求,会根据所述第二API接口对应的第二微服务元数据信息生成对所述目标微服务的第二RPC接口方法的第二RPC调用请求,所述第二微服务元数据信息包括与所述第二RPC接口方法关联的第二输入参数属性和第二输出参数属性。所述API网关120的请求方参数拦截器123拦截所述第二RPC调用请求的第二输入参数值,根据所述第二输入参数属性指示的不启用输入参数的引用传递的第四指示,直接将所述第二输入参数值传输给所述目标微服务。所述目标微服务的服务方参数拦截器141拦截所述第二输入参数值,当识别到所述第二输入参数值中没有所述引用传递标识时,直接将所述第二输入参数值传递给所述第二RPC接口方法,以基于所述第二输入参数值执行所述第二RPC接口方法。
从而,本实施例可以进一步在涉及大数据处理等数据密集型应用的场景下,当对包含大数据处理的微服务的RPC接口调用的输入参数的数据量较小时,可以基于API网关实现对包含大数据处理的微服务的RPC接口调用时不启用对输入参数的引用传递,从而降低目标微服务与分布式缓存之间不必要的数据交互,在显著降低API网关与后端的微服务之间RPC调用导致的大量的数据传输的基础上,进一步提高客户端通过API网关访问包含大数据处理的微服务的性能和服务质量。
图9是根据本申请第六实施例的基于API网关的远程过程调用处理方法的部分流程示意图。如图9所示,在前述任一实施例的基础上,所述方法还可以包括以下步骤:
步骤S901,所述目标微服务拦截执行所述第二RPC接口方法的第二输出参数值,根据所述第二输出参数属性指示的启用输出参数的引用传递的第五指示,将所述第二输出参数值写入所述分布式缓存;
步骤S902,所述目标微服务基于所述引用传递标识和所述第二输出参数值在所述分布式缓存中的第三访问地址信息生成替代所述第二输出参数值的第二替代输出参数,传输给所述API网关;
步骤S903,所述API网关拦截所述第二替代输出参数,当识别到所述第二替代输出参数中的所述引用传递标识时,基于所述第三访问地址信息从所述分布式缓存读取所述第二输出参数值,传递给所述客户端。
本实施例中,当目标微服务的所述第二RPC接口方法执行完成,需要向API网关120返回第二输出参数值时,目标微服务内置的服务方参数拦截器141拦截执行所述第二RPC接口方法的第二输出参数值,从服务注册中心130注册的微服务元数据信息获得该第二RPC接口方法的第二输出参数属性,当该第二RPC接口方法的第二输出参数属性指示启用输出参数的引用传递时,服务方参数拦截器141会根据分布式缓存150的访问地址,将所述第二输出参数值写入分布式缓存150,并将指定的引用传递标识和所述第二输出参数值在分布式缓存150中的第三访问地址信息组装生成第二替代输出参数,替代所述第二输出参数值,通过网络协议传输给API网关120。API网关120的请求方参数拦截器123拦截该第二替代输出参数,当识别到该第二替代输出参数中的指定的引用传递标识时,根据分布式缓存150的访问地址以及所述第三访问地址信息从分布式缓存150中读取所述第二输出参数值,传递给对应的目标客户端。
从而,本实施例可以进一步在涉及大数据处理等数据密集型应用的场景下,当对包含大数据处理的微服务的RPC接口调用的输入参数的数据量较小,而输出参数的数据量较大时,可以基于API网关实现对包含大数据处理的微服务的RPC接口调用时启用对输出参数的引用传递,而不启用对输入参数的引用传递,从而降低目标微服务与分布式缓存之间不必要的数据交互,在显著降低API网关与后端的微服务之间RPC调用导致的大量的数据传输的基础上,进一步提高客户端通过API网关访问包含大数据处理的微服务的性能和服务质量。
在一个实施方式中,所述目标微服务将所述第二输出参数值写入所述分布式缓存可以包括所述目标微服务将所述第二输出参数值以第三键值对写入所述分布式缓存,其中第三键值对包括唯一标识该第二输出参数值的第三关键字和与第三关键字对应的第二输出参数值。在一个实施方式中,第二输出参数值可以包括至少一个输出参数值,所述至少一个输出参数值可以以列表(List)数据对象的结构存储为值对象(ValueObjectList)。
相应地,所述第二输出参数值在所述分布式缓存中的第三访问地址信息可以包括所述第三键值对中的第三关键字,该第三关键字可以唯一识别所述分布式缓存中的第二输出参数值,可以根据所述第三关键字读取所述第三键值对中的值对象,并根据所述值对象提取出所述至少一个输出参数值,作为所述第二输出参数值。
图10是根据本申请第七实施例的基于API网关的远程过程调用处理方法的部分流程示意图。如图10所示,在前述任一实施例的基础上,所述方法还可以包括以下步骤:
步骤S1001,所述目标微服务拦截执行所述第二RPC接口方法的第二输出参数值,根据所述第二输出参数属性指示的不启用输出参数的引用传递的第六指示,将所述第二输出参数值传输给所述API网关;
步骤S1002,所述API网关拦截所述第二输出参数值,当未识别到所述第二输出参数值中的所述引用传递标识时,将所述第二输出参数值传递给所述客户端。
本实施例中,当目标微服务的所述第二RPC接口方法执行完成,需要向API网关120返回第二输出参数值时,目标微服务内置的服务方参数拦截器141拦截执行所述第二RPC接口方法的第二输出参数值,从服务注册中心130注册的微服务元数据信息获得该第二RPC接口方法的第二输出参数属性,当该第二RPC接口方法的第二输出参数属性指示不启用输出参数的引用传递时,服务方参数拦截器141会直接将所述第二输出参数值通过网络协议传输给API网关120。API网关120的请求方参数拦截器123拦截该第二输出参数值,当识别到该第一输出参数值中没有指定的引用传递标识时,直接将所述第二输出参数值传递给所述客户端。
从而,本实施例可以进一步在涉及大数据处理等数据密集型应用的场景下,当对包含大数据处理的微服务的RPC接口调用的输入参数和输出参数的数据量都较小时,可以基于API网关实现对包含大数据处理的微服务的RPC接口调用时不启用输入参数和输出参数的引用传递,从而降低目标微服务与分布式缓存之间不必要的数据交互,进一步保证客户端通过API网关访问包含大数据处理的微服务的性能和服务质量。
以下结合图11所示的通信时序图进一步解释本申请一实施例的具体实施方式。
如图11所示,步骤S1101,客户端110向API网关120发起对第一API接口的第一访问请求。
步骤S1102,当API网关120接收到客户端110对第一API接口的第一访问请求,API网关120从接口路由表121中获得该第一API接口对应的第一微服务元数据信息,根据所述第一微服务元数据信息生成对目标微服务140的第一RPC接口方法的第一RPC调用请求。
步骤S1103,API网关120的请求方参数拦截器123会拦截该第一RPC调用请求的第一输入参数值{In_Params}。
步骤S1104,请求方参数拦截器123从第一API接口对应的第一微服务元数据信息获得第一RPC接口方法的第一输入参数属性,根据所述第一输入参数属性指示的启用输入参数的引用传递的第一指示,将所述第一输入参数值{In_Params}写入分布式缓存150;具体而言,请求方参数拦截器123会根据分布式缓存150的访问地址,将所述第一输入参数值{In_Params}以第一键值对{key1:ValueObjectList[In_Params]}写入分布式缓存150中进行保存,key1表示唯一标识该第一输入参数值的第一关键字,ValueObjectList[In_Params]表示将所述第一输入参数值{In_Params}以列表(List)数据对象的结构存储为值对象(ValueObjectList)。
步骤S1105,API网关120基于引用传递标识和所述第一输入参数值在所述分布式缓存150中的第一访问地址信息生成替代所述第一输入参数值的第一替代输入参数,具体而言,可以以所述第一输入参数值存储在所述分布式缓存150中的第一键值对中的第一关键字key1作为所述第一访问地址信息,将引用传递标识@Ref和所述第一访问地址信息key1组装为字符串格式来生成第一替代输入参数“@Ref(key1)”,并传输给所述目标微服务140。
步骤S1106,所述目标微服务140的服务方参数拦截器141拦截所述第一替代输入参数,当识别到该第一替代输入参数中包含所述引用传递标识@Ref时,从所述第一替代输入参数中解析出所述第一访问地址信息,即第一关键字key1。
步骤S1107,服务方参数拦截器141根据分布式缓存150的访问地址、所述第一访问地址信息从分布式缓存150中读取所述第一输入参数值。
步骤S1108,分布式缓存150向目标微服务140返回所述第一输入参数值的值对象ValueObjectList[In_Params]。
步骤S1109,目标微服务140从所述值对象ValueObjectList[In_Params]提取出所述第一输入参数值{In_Params},以基于所述第一输入参数值执行所述第一RPC接口方法。
步骤S1110,当目标微服务140的所述第一RPC接口方法执行完成,目标微服务140的服务方参数拦截器141拦截执行所述第一RPC接口方法的第一输出参数值{Out_Params},从服务注册中心130注册的微服务元数据信息获得该第一RPC接口方法的第一输出参数属性,当该第一RPC接口方法的第一输出参数属性指示启用输出参数的引用传递时,服务方参数拦截器141会根据分布式缓存150的访问地址,将所述第一输出参数值{Out_Params}写入分布式缓存150;具体而言,服务方参数拦截器141会根据分布式缓存150的访问地址,将所述第一输出参数值{Out_Params}以第二键值对{key2:ValueObjectList[Out_Params]}写入分布式缓存150中进行保存,key2表示唯一标识该第一输出参数值的第二关键字,ValueObjectList[Out_Params]表示将所述第一输出参数值{Out_Params}以列表(List)数据对象的结构存储为值对象(ValueObjectList)。
步骤S1111,目标微服务140的服务方参数拦截器141将引用传递标识和所述第一输出参数值在分布式缓存150中的第二访问地址信息组装生成第一替代输出参数,替代所述第一输出参数值,通过网络协议传输给API网关120;具体而言,可以以所述第一输出参数值存储在所述分布式缓存150中的第二键值对中的第二关键字key2作为所述第二访问地址信息,将引用传递标识@Ref和所述第二访问地址信息key2组装为字符串格式来生成第一替代输出参数“@Ref(key2)”。
步骤S1112,API网关120的请求方参数拦截器123拦截该第一替代输出参数,当识别到该第一替代输出参数中的指定的引用传递标识@Ref时,从所述第一替代输出参数中解析出所述第二访问地址信息key2,根据分布式缓存150的访问地址、所述第二访问地址信息从分布式缓存150中读取所述第一输出参数值。
步骤S1113,分布式缓存150向API网关120返回所述第一输出参数值的值对象ValueObjectList[Out_Params]。
步骤S1114,API网关120从所述第一输出参数值的值对象ValueObjectList[Out_Params]提取出所述第一输出参数值{Out_Params},传递给对应的客户端110。
需要说明的是,本领域技术人员应当明了,图11所示的具体实施方式仅为本申请一实施例的一种可选的具体实施方式,不构成对本申请请求保护范围的限制。此外,前述实施例仅针对同一目标微服务中的第一RPC接口方法和第二RPC接口方法的RPC调用处理,实质上本申请还可以进一步扩展到实现对第一微服务和第二微服务中的不同RPC接口方法的RPC调用处理,具体实施方式类似,在此不再赘述。
图12是根据本申请第一实施例的基于API网关的远程过程调用处理装置的结构示意图。如图12所示,该装置包括以下单元:
请求处理单元1201,用于响应于接收到客户端对第一API接口的访问请求,API网关根据所述第一API接口对应的第一微服务元数据信息生成对目标微服务的第一RPC接口方法的第一RPC调用请求,所述第一微服务元数据信息包括与所述第一RPC接口方法关联的第一输入参数属性和第一输出参数属性;
第一拦截单元1202,用于所述API网关拦截所述第一RPC调用请求的第一输入参数值,根据所述第一输入参数属性指示的启用输入参数的引用传递的第一指示,将所述第一输入参数值写入分布式缓存;
第一参数替代单元1203,用于所述API网关基于引用传递标识和所述第一输入参数值在所述分布式缓存中的第一访问地址信息生成替代所述第一输入参数值的第一替代输入参数,传输给所述目标微服务;
第二拦截单元1204,用于所述目标微服务拦截所述第一替代输入参数,当识别到所述第一替代输入参数中的所述引用传递标识时,基于所述第一访问地址信息从所述分布式缓存读取所述第一输入参数值,传递给所述第一RPC接口方法,以基于所述第一输入参数值执行所述第一RPC接口方法。
在一个实施方式中,所述API网关将所述第一输入参数值写入分布式缓存可以包括所述API网关将所述第一输入参数值以第一键值对写入所述分布式缓存,其中第一键值对包括唯一标识该第一输入参数值的第一关键字和与第一关键词对应的第一输入参数值。在一个实施方式中,第一输入参数值可以包括至少一个输入参数值,所述至少一个输入参数值可以以列表(List)数据对象的结构存储为值对象(ValueObjectList)。
相应地,所述第一输入参数值在所述分布式缓存150中的第一访问地址信息可以包括所述第一键值对中的第一关键字,该第一关键字可以唯一识别所述分布式缓存150中的第一输入参数值,可以根据所述第一关键字读取所述第一键值对中的值对象,并根据所述值对象提取出所述至少一个输入参数值,作为所述第一输入参数值。
在一些实施方式中,如图13所示,在前述任一实施例的基础上,所述装置还可以包括以下单元:
第三拦截单元1301,用于所述目标微服务拦截执行所述第一RPC接口方法的第一输出参数值,根据所述第一输出参数属性指示的启用输出参数的引用传递的第二指示,将所述第一输出参数值写入所述分布式缓存;
第二参数替代单元1302,用于所述目标微服务基于所述引用传递标识和所述第一输出参数值在所述分布式缓存中的第二访问地址信息生成替代所述第一输出参数值的第一替代输出参数,传输给所述API网关;
第四拦截单元1303,用于所述API网关拦截所述第一替代输出参数,当识别到所述第一替代输出参数中的所述引用传递标识时,基于所述第二访问地址信息从所述分布式缓存读取所述第一输出参数值,传递给所述客户端。
在一个实施方式中,所述目标微服务将所述第一输出参数值写入所述分布式缓存可以包括所述目标微服务将所述第一输出参数值以第二键值对写入所述分布式缓存,其中第二键值对包括唯一标识该第一输出参数值的第二关键字和与第二关键字对应的第一输出参数值。在一个实施方式中,第一输出参数值可以包括至少一个输出参数值,所述至少一个输出参数值可以以列表(List)数据对象的结构存储为值对象(ValueObjectList)。
相应地,所述第一输出参数值在所述分布式缓存中的第二访问地址信息可以包括所述第二键值对中的第二关键字,该第二关键字可以唯一识别所述分布式缓存中的第一输出参数值,可以根据所述第二关键字读取所述第二键值对中的值对象,并根据所述值对象提取出所述至少一个输出参数值,作为所述第一输出参数值。
在一些实施方式中,在前述任一实施例的基础上,所述第三拦截单元1301还用于:所述目标微服务拦截执行所述第一RPC接口方法的第一输出参数值,根据所述第一输出参数属性指示的不启用输出参数的引用传递的第三指示,将所述第一输出参数值传输给所述API网关;
所述第四拦截单元1303还用于:所述API网关拦截所述第一输出参数值,当未识别到所述第一输出参数值中的所述引用传递标识时,将所述第一输出参数值传递给所述客户端。
在一些实施方式中,如图14所示,在前述任一实施例的基础上,所述装置还可以包括以下单元:
数据删除请求单元1401,用于所述API网关将所述第一输出参数值传递给所述客户端之后,根据所述第一输入参数属性和第一输出参数属性,向所述分布式缓存发送数据删除请求,所述数据删除请求携带所述第一访问地址信息和第二访问地址信息;
数据删除单元1402,用于所述分布式缓存响应于所述数据删除请求,根据所述数据删除请求携带的所述第一访问地址信息和第二访问地址信息删除已存储的所述第一输入参数值和所述第一输出参数值。
在一些实施方式中,在前述任一实施例的基础上,所述请求处理单元1201还用于:响应于接收到客户端对第二API接口的第二访问请求,所述API网关根据所述第二API接口对应的第二微服务元数据信息生成对所述目标微服务的第二RPC接口方法的第二RPC调用请求,所述第二微服务元数据信息包括与所述第二RPC接口方法关联的第二输入参数属性和第二输出参数属性;
所述第一拦截单元1202还用于:所述API网关拦截所述第二RPC调用请求的第二输入参数值,根据所述第二输入参数属性指示的不启用输入参数的引用传递的第四指示,直接将所述第二输入参数值传输给所述目标微服务;
所述第二拦截单元1204还用于:所述目标微服务拦截所述第二输入参数值,当未识别到所述第二输入参数值中的所述引用传递标识时,将所述第二输入参数值传递给所述第二RPC接口方法,以基于所述第二输入参数值执行所述第二RPC接口方法。
在一些实施方式中,在前述任一实施例的基础上,所述第三拦截单元1301还用于:所述目标微服务拦截执行所述第二RPC接口方法的第二输出参数值,根据所述第二输出参数属性指示的启用输出参数的引用传递的第五指示,将所述第二输出参数值写入所述分布式缓存;
所述第二参数替代单元1302还用于:所述目标微服务基于所述引用传递标识和所述第二输出参数值在所述分布式缓存中的第三访问地址信息生成替代所述第二输出参数值的第二替代输出参数,传输给所述API网关;
所述第四拦截单元1303还用于:所述API网关拦截所述第二替代输出参数,当识别到所述第二替代输出参数中的所述引用传递标识时,基于所述第三访问地址信息从所述分布式缓存读取所述第二输出参数值,传递给所述客户端。
在一个实施方式中,所述目标微服务将所述第二输出参数值写入所述分布式缓存可以包括所述目标微服务将所述第二输出参数值以第三键值对写入所述分布式缓存,其中第三键值对包括唯一标识该第二输出参数值的第三关键字和与第三关键词对应的第二输出参数值。在一个实施方式中,第二输出参数值可以包括至少一个输出参数值,所述至少一个输出参数值可以以列表(List)数据对象的结构存储为值对象(ValueObjectList)。
相应地,所述第二输出参数值在所述分布式缓存中的第三访问地址信息可以包括所述第三键值对中的第三关键字,该第三关键字可以唯一识别所述分布式缓存中的第二输出参数值,可以根据所述第三关键字读取所述第三键值对中的值对象,并根据所述值对象提取出所述至少一个输出参数值,作为所述第二输出参数值。
在一些实施方式中,在前述任一实施例的基础上,所述第三拦截单元1301还用于:所述目标微服务拦截执行所述第二RPC接口方法的第二输出参数值,根据所述第二输出参数属性指示的不启用输出参数的引用传递的第六指示,将所述第二输出参数值传输给所述API网关;
所述第四拦截单元1303还用于:所述API网关拦截所述第二输出参数值,当未识别到所述第二输出参数值中的所述引用传递标识时,将所述第二输出参数值传递给所述客户端。
综上,本申请实施例响应于接收到客户端对第一API接口的第一访问请求,API网关根据所述第一API接口对应的第一微服务元数据信息生成对目标微服务的第一RPC接口方法的第一RPC调用请求,所述第一微服务元数据信息包括与所述第一RPC接口方法关联的第一输入参数属性和第一输出参数属性;所述API网关拦截所述第一RPC调用请求的第一输入参数值,根据所述第一输入参数属性指示的启用输入参数的引用传递的第一指示,将所述第一输入参数值写入分布式缓存;所述API网关基于引用传递标识和所述第一输入参数值在所述分布式缓存中的第一访问地址信息生成替代所述第一输入参数值的第一替代输入参数,传输给所述目标微服务;所述目标微服务拦截所述第一替代输入参数,当识别到所述第一替代输入参数中的所述引用传递标识时,基于所述第一访问地址信息从所述分布式缓存读取所述第一输入参数值,传递给所述第一RPC接口方法,以基于所述第一输入参数值执行所述第一RPC接口方法。从而,在基于API网关实现对后端的多个微服务的RPC接口调用的现有方案不支持向指定微服务的RPC接口方法传递输入参数的引用的情形下,在涉及大数据处理等数据密集型应用的场景下,可以基于API网关实现对包含大数据处理的微服务的RPC接口调用时启用对输入参数的引用传递,显著降低API网关与后端的微服务之间RPC调用导致的大量的数据传输,提高客户端通过API网关访问包含大数据处理的微服务的性能和服务质量。
需要说明的是,本领域技术人员可以理解,本申请的方法实施例所描述的不同实施方式及其说明解释和所达到的技术效果,同样适用于本申请的装置实施例中,在此不再赘述。
进一步地,本申请实施例还提出一种电子设备,该电子设备可以包括:处理器和存储器。其中,存储器存储有计算机程序指令,处理器可以调用存储器中的计算机程序指令以执行本申请任一实施方式所述方法的全部或部分步骤。上述的存储器中的计算机程序指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。
进一步地,本申请还提供一种计算机程序产品,所述计算机程序产品包括存储有计算机程序的非暂态计算机可读存储介质,当该计算机可读存储介质连接至计算机设备,所述计算机程序被计算机设备的一个或多个处理器执行时,能够执行本申请任一实施方式所述方法的全部或部分步骤。
进一步地,本申请还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序可以被一个或多个处理器执行以执行本申请任一实施方式所述方法的全部或部分步骤。
通过以上的实施方式的描述,本领域技术人员可以清楚地了解到本申请的各实施方式可借助软件或者软件结合必要的通用硬件平台的方式来实现,当然也可以通过硬件功能实现。基于这样的理解,本申请的技术方案本质上或者对现有技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备,例如包括但不限于个人计算机,服务器,或者网络设备等,来执行本申请任一实施方式所述方法的全部或部分步骤。前述的存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储计算机程序代码的介质。
以上描述了本申请示例性的实施例,应当理解,上述示例性的实施例不是限制性的,而是说明性的,本申请的保护范围不限于此。应理解,本领域技术人员在不脱离本申请的精神和范围的情况下,可以对本申请实施例进行修改和变型,这些修改和变型理应在本申请的保护范围之内。
Claims (9)
1.一种基于API网关的远程过程调用处理方法,其特征在于,包括:
响应于接收到客户端对第一API接口的访问请求,API网关根据所述第一API接口对应的第一微服务元数据信息生成对目标微服务的第一RPC接口方法的第一RPC调用请求,所述第一微服务元数据信息包括与所述第一RPC接口方法关联的第一输入参数属性和第一输出参数属性;
所述API网关拦截所述第一RPC调用请求的第一输入参数值,根据所述第一输入参数属性指示的启用输入参数的引用传递的第一指示,将所述第一输入参数值写入分布式缓存;
所述API网关基于引用传递标识和所述第一输入参数值在所述分布式缓存中的第一访问地址信息生成替代所述第一输入参数值的第一替代输入参数,传输给所述目标微服务;
所述目标微服务拦截所述第一替代输入参数,当识别到所述第一替代输入参数中的所述引用传递标识时,基于所述第一访问地址信息从所述分布式缓存读取所述第一输入参数值,传递给所述第一RPC接口方法,以基于所述第一输入参数值执行所述第一RPC接口方法;
所述目标微服务拦截执行所述第一RPC接口方法的第一输出参数值,根据所述第一输出参数属性指示的不启用输出参数的引用传递的第三指示,将所述第一输出参数值传输给所述API网关;
所述API网关拦截所述第一输出参数值,当未识别到所述第一输出参数值中的所述引用传递标识时,将所述第一输出参数值传递给所述客户端。
2.根据权利要求1所述的基于API网关的远程过程调用处理方法,其特征在于,所述方法,包括:
所述目标微服务拦截执行所述第一RPC接口方法的第一输出参数值,根据所述第一输出参数属性指示的启用输出参数的引用传递的第二指示,将所述第一输出参数值写入所述分布式缓存;
所述目标微服务基于所述引用传递标识和所述第一输出参数值在所述分布式缓存中的第二访问地址信息生成替代所述第一输出参数值的第一替代输出参数,传输给所述API网关;
所述API网关拦截所述第一替代输出参数,当识别到所述第一替代输出参数中的所述引用传递标识时,基于所述第二访问地址信息从所述分布式缓存读取所述第一输出参数值,传递给所述客户端。
3.根据权利要求2所述的基于API网关的远程过程调用处理方法,其特征在于,所述方法还包括:
所述API网关将所述第一输出参数值传递给所述客户端之后,根据所述第一输入参数属性和第一输出参数属性,向所述分布式缓存发送数据删除请求,所述数据删除请求携带所述第一访问地址信息和第二访问地址信息;
所述分布式缓存响应于所述数据删除请求,根据所述数据删除请求携带的所述第一访问地址信息和第二访问地址信息删除已存储的所述第一输入参数值和所述第一输出参数值。
4.根据权利要求3所述的基于API网关的远程过程调用处理方法,其特征在于,所述方法包括:
响应于接收到客户端对第二API接口的访问请求,所述API网关根据所述第二API接口对应的第二微服务元数据信息生成对所述目标微服务的第二RPC接口方法的第二RPC调用请求,所述第二微服务元数据信息包括与所述第二RPC接口方法关联的第二输入参数属性和第二输出参数属性;
所述API网关拦截所述第二RPC调用请求的第二输入参数值,根据所述第二输入参数属性指示的不启用输入参数的引用传递的第四指示,直接将所述第二输入参数值传输给所述目标微服务;
所述目标微服务拦截所述第二输入参数值,当未识别到所述第二输入参数值中的所述引用传递标识时,将所述第二输入参数值传递给所述第二RPC接口方法,以基于所述第二输入参数值执行所述第二RPC接口方法。
5.根据权利要求4所述的基于API网关的远程过程调用处理方法,其特征在于,所述方法包括:
所述目标微服务拦截执行所述第二RPC接口方法的第二输出参数值,根据所述第二输出参数属性指示的启用输出参数的引用传递的第五指示,将所述第二输出参数值写入所述分布式缓存;
所述目标微服务基于所述引用传递标识和所述第二输出参数值在所述分布式缓存中的第三访问地址信息生成替代所述第二输出参数值的第二替代输出参数,传输给所述API网关;
所述API网关拦截所述第二替代输出参数,当识别到所述第二替代输出参数中的所述引用传递标识时,基于所述第三访问地址信息从所述分布式缓存读取所述第二输出参数值,传递给所述客户端。
6.根据权利要求4所述的基于API网关的远程过程调用处理方法,其特征在于,所述方法包括:
所述目标微服务拦截执行所述第二RPC接口方法的第二输出参数值,根据所述第二输出参数属性指示的不启用输出参数的引用传递的第六指示,将所述第二输出参数值传输给所述API网关;
所述API网关拦截所述第二输出参数值,当未识别到所述第二输出参数值中的所述引用传递标识时,将所述第二输出参数值传递给所述客户端。
7.根据权利要求5所述的基于API网关的远程过程调用处理方法,其特征在于,所述将所述第一输入参数值写入分布式缓存包括所述API网关将所述第一输入参数值以第一键值对写入所述分布式缓存;所述将所述第一输出参数值写入所述分布式缓存包括将所述第一输出参数值以第二键值对写入所述分布式缓存;所述将所述第二输出参数值写入所述分布式缓存包括将所述第二输出参数值以第三键值对写入所述分布式缓存。
8.根据权利要求7所述的基于API网关的远程过程调用处理方法,其特征在于,所述第一访问地址信息包括所述第一键值对中的第一关键字;所述第二访问地址信息包括所述第二键值对中的第二关键字;所述第三访问地址信息包括所述第三键值对中的第三关键字。
9.一种基于API网关的远程过程调用处理装置,其特征在于,包括:
请求处理单元,用于响应于接收到客户端对第一API接口的访问请求,API网关根据所述第一API接口对应的第一微服务元数据信息生成对目标微服务的第一RPC接口方法的第一RPC调用请求,所述第一微服务元数据信息包括与所述第一RPC接口方法关联的第一输入参数属性和第一输出参数属性;
第一拦截单元,用于所述API网关拦截所述第一RPC调用请求的第一输入参数值,根据所述第一输入参数属性指示的启用输入参数的引用传递的第一指示,将所述第一输入参数值写入分布式缓存;
第一参数替代单元,用于所述API网关基于引用传递标识和所述第一输入参数值在所述分布式缓存中的第一访问地址信息生成替代所述第一输入参数值的第一替代输入参数,传输给所述目标微服务;
第二拦截单元,用于所述目标微服务拦截所述第一替代输入参数,当识别到所述第一替代输入参数中的所述引用传递标识时,基于所述第一访问地址信息从所述分布式缓存读取所述第一输入参数值,传递给所述第一RPC接口方法,以基于所述第一输入参数值执行所述第一RPC接口方法;
第三拦截单元,用于所述目标微服务拦截执行所述第一RPC接口方法的第一输出参数值,根据所述第一输出参数属性指示的不启用输出参数的引用传递的第三指示,将所述第一输出参数值传输给所述API网关;
第四拦截单元,用于所述API网关拦截所述第一输出参数值,当未识别到所述第一输出参数值中的所述引用传递标识时,将所述第一输出参数值传递给所述客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310355367.4A CN116074337B (zh) | 2023-04-06 | 2023-04-06 | 基于api网关的远程过程调用处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310355367.4A CN116074337B (zh) | 2023-04-06 | 2023-04-06 | 基于api网关的远程过程调用处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116074337A CN116074337A (zh) | 2023-05-05 |
CN116074337B true CN116074337B (zh) | 2023-06-13 |
Family
ID=86183992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310355367.4A Active CN116074337B (zh) | 2023-04-06 | 2023-04-06 | 基于api网关的远程过程调用处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116074337B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117278640B (zh) * | 2023-09-05 | 2024-05-17 | 北京长河数智科技有限责任公司 | 一种基于数据归集的api接口调用方法及系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113992738A (zh) * | 2021-09-02 | 2022-01-28 | 深圳市高腾科技服务有限公司 | 基于微服务网关的反向代理方法、装置、设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10455040B2 (en) * | 2017-01-30 | 2019-10-22 | Microsoft Technology Licensing, Llc | Deferring invocation requests for remote objects |
CN108897629A (zh) * | 2018-06-01 | 2018-11-27 | 山东中创软件商用中间件股份有限公司 | 一种ejb调用参数传递方法及相关装置 |
CN114095550A (zh) * | 2020-08-10 | 2022-02-25 | 北京瀚海云星科技有限公司 | 一种服务端直接读取引用参数的远程过程调用方法 |
-
2023
- 2023-04-06 CN CN202310355367.4A patent/CN116074337B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113992738A (zh) * | 2021-09-02 | 2022-01-28 | 深圳市高腾科技服务有限公司 | 基于微服务网关的反向代理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116074337A (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10554607B2 (en) | Heterogeneous cloud controller | |
US9137288B2 (en) | Scalable push-based architecture for web applications | |
US6775700B2 (en) | System and method for common information model object manager proxy interface and management | |
EP1429517B1 (en) | Access relaying apparatus | |
US7987266B2 (en) | Failover in proxy server networks | |
CN110413418B (zh) | 缓存同步装置及方法,缓存同步系统、电子设备 | |
CN106169963B (zh) | 服务页面的访问方法及系统、代理服务器 | |
CN116074337B (zh) | 基于api网关的远程过程调用处理方法和装置 | |
CN109451014B (zh) | 一种WebService代理系统及其透明代理方法 | |
CN109729187B (zh) | 一种代理通信方法、系统、装置及存储介质 | |
CN113010549B (zh) | 基于异地多活系统的数据处理方法、相关设备及存储介质 | |
CN110557284A (zh) | 基于客户端网关的数据聚合方法及装置 | |
CN107315972A (zh) | 一种大数据非结构化文件动态脱敏方法及系统 | |
CN113507475B (zh) | 跨域访问方法和装置 | |
CN109067936A (zh) | 一种域名解析的方法及装置 | |
CN111314450A (zh) | 数据的传输方法、装置、电子设备和计算机存储介质 | |
JP2009151560A (ja) | リソースの管理方法、情報処理システム、情報処理装置、及びプログラム | |
CN104205730B (zh) | 网元数据访问方法、虚拟网元、网络管理服务器及网络管理系统 | |
CN108279924A (zh) | 程序发布方法及装置 | |
CN108874472B (zh) | 一种用户头像的优化显示方法及系统 | |
WO2022067509A1 (zh) | 设备升级控制方法、装置、计算机设备及存储介质 | |
US20210374072A1 (en) | Augmenting storage functionality using emulation of storage characteristics | |
US7792921B2 (en) | Metadata endpoint for a generic service | |
CN114840574A (zh) | 数据查询方法、服务器、节点及存储介质 | |
JP7309418B2 (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 |