CN111414261B - 一种分布式系统的跨网络调用方法、装置及相关组件 - Google Patents
一种分布式系统的跨网络调用方法、装置及相关组件 Download PDFInfo
- Publication number
- CN111414261B CN111414261B CN202010191665.0A CN202010191665A CN111414261B CN 111414261 B CN111414261 B CN 111414261B CN 202010191665 A CN202010191665 A CN 202010191665A CN 111414261 B CN111414261 B CN 111414261B
- Authority
- CN
- China
- Prior art keywords
- distributed system
- request
- network
- service
- rpc
- 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
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
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- 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/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种分布式系统的跨网络调用方法,应用于第一分布式系统,包括接收第二分布式系统发送的RPC调用请求,并将所述RPC调用请求转换为对应的HTTP请求;将所述HTTP请求发送至所述第三分布式系统,以便所述第三分布式系统将所述HTTP请求泛化为所述RPC调用请求,并向所述第一分布式系统返回服务调用结果;当接收到所述第三分布式系统返回的所述服务调用结果时,将所述服务调用结果发送至所述第二分布式系统。本申请能够提高跨网络服务调用效率及其升级改造的研发效率。本申请还公开了一种跨网络的服务调用方法、一种分布式系统的跨网络调用装置、一种存储介质及一种电子设备,具有以上有益效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种分布式系统的跨网络调用方法、一种跨网络的服务调用方法、一种分布式系统的跨网络调用装置、一种存储介质及一种电子设备。
背景技术
分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的特性是处于同一网络中,这样便于处于分布式系统中的各系统进行交互与通信,从而完成共同的任务。分布式系统中通常采用基于RPC技术的RPC服务实现信息通信。
如同一网络的订单系统(下文简称A系统)、库存系统(下文简称B系统),为了提升通信的性能,一般采用基于RPC(Remote Procedure Call,远程过程调用)技术的RPC服务。但是,在分布式系统跨网络调用时,由于RPC技术一般要求基于RPC协议的私有网络,并不会直接暴露服务的注册中心,所以需要使用其他技术进行服务信息交互(如REST服务,一种基于HTTP协议的服务方法,下文以REST技术举例),即当A系统需要跨网络访问B系统的服务时,会将B系统的服务进行转换,将B系统的RPC服务暴露为REST服务。但是上述将被调用系统RPC服务暴露为REST服务这种方案的缺点在于:当存在大量的跨网络服务需要进行改造时,其将会是一个非常大的系统工程,涉及的编码与工作量会随着服务的数量成指数级别的增长,导致服务服务调用效率、升级改造的研发效率都很低下。
因此,如何提高跨网络服务调用效率及其升级改造的研发效率是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供一种分布式系统的跨网络调用方法、一种跨网络的服务调用方法、一种分布式系统的跨网络调用装置、一种存储介质及一种电子设备,能够提高跨网络服务调用效率及其升级改造的研发效率。
为解决上述技术问题,本申请提供一种分布式系统的跨网络调用方法,应用于第一分布式系统,该跨网络调用方法包括:
接收第二分布式系统发送的RPC调用请求,并将所述RPC调用请求转换为对应的HTTP请求;其中,所述第一分布式系统和所述第二分布式系统处于第一网络,所述第一分布式系统通过将处于第二网络的第三分布式系统进行同等部署得到;
将所述HTTP请求发送至所述第三分布式系统,以便所述第三分布式系统将所述HTTP请求泛化为所述RPC调用请求,并向所述第一分布式系统返回服务调用结果;
当接收到所述第三分布式系统返回的所述服务调用结果时,将所述服务调用结果发送至所述第二分布式系统。
可选的,还包括:
在所述第一分布式系统中添加Filter插件;
相应的,将所述RPC调用请求转换为对应的HTTP请求,包括:
通过所述Filter插件将所述RPC调用请求转换为对应的HTTP请求。
可选的,通过所述Filter插件将所述RPC调用请求转换为对应的HTTP请求包括:
利用所述Filter插件获取所述RPC调用请求的请求信息;其中,所述请求信息包括所述RPC调用请求的服务名、参数、参数类型和版本;
构建所述RPC调用请求对应的HTTP请求;其中,所述HTTP请求的请求地址为所述第二网络的代理层IP地址,所述HTTP请求的统一资源标识符URL包括所述请求信息。
可选的,在将所述RPC调用请求转换为对应的HTTP请求之前,还包括:
判断所述第一分布式系统的本地缓存中是否包括所述RPC调用请求对应的服务调用结果;
若是,将所述第一分布式系统的本地缓存中存储的所述RPC调用请求对应的服务调用结果返回至所述第二分布式系统;
若否,则进入将所述RPC调用请求转换为对应的HTTP请求的操作。
可选的,所述第三分布式系统中部署有Proxy层代理服务;
相应的,将所述HTTP请求泛化为所述RPC调用请求,包括:
利用所述Proxy层代理服务将所述HTTP请求泛化为所述RPC调用请求。
可选的,所述HTTP请求包括所述第一分布式系统的用户标识;
相应的,向所述第一分布式系统返回服务调用结果包括:
所述第三分布式系统判断所述用户标识是否为白名单中的预设标识;
若是,则执行所述RPC调用请求得到所述服务调用结果,并向所述第一分布式系统返回所述服务调用结果;
若否,则向所述第一分布式系统返回调用失败的提示信息。
本申请还提供了一种跨网络的服务调用方法,包括:
确定执行跨网络调用操作的第二分布式系统和被跨网络调用的第三分布式系统;其中,所述第二分布式系统处于第一网络,所述第三分布式系统处于第二网络;
将所述第三分布式系统在所述第二分布式系统所在的本地网络中执行同等部署操作,得到第一分布式系统;
所述第二分布式系统向所述第一分布式系统发送RPC调用请求,以便所述第一分布式系统将所述RPC调用请求转换为HTTP请求并将所述HTTP请求转发至所述第三分布式系统;
所述第三分布式系统将所述HTTP请求泛化为所述RPC调用请求,并向所述第一分布式系统返回服务调用结果;
所述第一分布式系统将所述服务调用结果发送至所述第二分布式系统。
本申请还提供了一种分布式系统的跨网络调用装置,应用于第一分布式系统,该装置包括:
请求转换模块,用于接收第二分布式系统发送的RPC调用请求,并将所述RPC调用请求转换为对应的HTTP请求;其中,所述第一分布式系统和所述第二分布式系统处于第一网络,所述第一分布式系统通过将处于第二网络的第三分布式系统进行同等部署得到;
请求发送模块,用于将所述HTTP请求发送至所述第三分布式系统,以便所述第三分布式系统将所述HTTP请求泛化为所述RPC调用请求,并向所述第一分布式系统返回服务调用结果;
结果返回模块,用于当接收到所述第三分布式系统返回的所述服务调用结果时,将所述服务调用结果发送至所述第二分布式系统。
本申请还提供了一种存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述方法执行的步骤。
本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述方法执行的步骤。
本申请提供了一种分布式系统的跨网络调用方法,应用于第一分布式系统,包括:接收第二分布式系统发送的RPC调用请求,并将所述RPC调用请求转换为对应的HTTP请求;其中,所述第一分布式系统和所述第二分布式系统处于第一网络,所述第一分布式系统通过将处于第二网络的第三分布式系统进行同等部署得到;将所述HTTP请求发送至所述第三分布式系统,以便所述第三分布式系统将所述HTTP请求泛化为所述RPC调用请求,并向所述第一分布式系统返回服务调用结果;当接收到所述第三分布式系统返回的所述服务调用结果时,将所述服务调用结果发送至所述第二分布式系统。
本申请在第一分布式系统收到第二分布式系统发送的RPC调用请求之后将RPC调用请求转换为对应的HTTP请求,进而将HTTP请求转发至跨网络的第三分布式系统,以使第三分布式系统将接收到的HTTP请求泛化为RPC请求,向将服务调用结果经第一分布式系统发送至第二分布式系统。由于第一分布式系统和第二分布式系统为处于同一网络的分布式系统,且第一分布式系统为第三分布式系统同等部署得到的系统,因此第二分布式系统向第一分布式系统可以通过RPC调用请求,第一分布式系统在接收到RPC调用请求后通过HTTP请求进行跨网络的服务调用,可以将跨网络的服务调用转化为第一分布式系统在本地网络内的服务调用,同时无需将被调用分布式系统的所有服务均进行改造,本申请能够提高跨网络服务调用效率及其升级改造的研发效率。本申请同时还提供了一种跨网络的服务调用方法、一种分布式系统的跨网络调用装置、一种存储介质和一种电子设备,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种分布式系统的跨网络调用方法的流程图;
图2为本申请实施例所提供的一种RPC调用请求转换方法的流程图;
图3为本申请实施例提供的一种跨网络的分布式系统间调用方法的流程图;
图4为本申请实施例所提供的一种分布式系统的跨网络调用装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面请参见图1,图1为本申请实施例所提供的一种分布式系统的跨网络调用方法的流程图。
具体步骤可以包括:
S101:接收第二分布式系统发送的RPC调用请求,并将所述RPC调用请求转换为对应的HTTP请求;
其中,本实施例中所提到的第一分布式系统和第二分布式系统处于第一网络,且第一分布式系统通过将处于第二网络的第三分布式系统进行同等部署得到。具体的可以通过在第一网络内部署第三分布式系统的源代码实现同等部署操作,进而得到第一分布式系统。可以理解的是,在本步骤之前还可以存在以下操作:确定执行跨网络调用操作的第二分布式系统和被跨网络调用的第三分布式系统;将所述第三分布式系统在所述第二分布式系统所在的本地网络中执行同等部署操作,得到第一分布式系统。
由于第一分布式系统和第二分布式系统均处于第一网络,因此第二分布式系统可以向第一分布式系统发送RPC调用请求,进而在本地调用第一分布式系统的服务。虽然第一分布式系统通过对第三分布式系统无差别部署得到,但是第一分布式系统中并不具体执行具体的服务,因此在接收到第二分布式系统发送的RPC调用请求之后,第一分布式系统可以将RPC调用请求转换为对应的HTTP请求。RPC调用请求适用于本地网络的分布式系统间服务调用,而HTTP请求可以进行跨网络的传输,因此本实施例将RPC调用请求转换为对应的HTTP请求,以使通过HTTP请求传输第二分布式系统的服务调用请求。RPC是一种通过网络从远程计算机程序上请求服务,其协议一般来说是企业内部的私有协议,更加的隐秘。。RPC将原来的本地调用转变为调用远端的服务器上的方法,给系统的处理能力和吞吐量带来了近似于无限制提升的可能。
作为一种可行的实施方式,第一分布式系统可以为添加有Filter插件的分布式系统,第一分布式系统可以通过所述Filter插件将所述RPC调用请求转换为对应的HTTP请求。通过所述Filter插件将所述RPC调用请求转换为对应的HTTP请求的过程如下:利用所述Filter插件获取所述RPC调用请求的请求信息;其中,所述请求信息包括所述RPC调用请求的服务名、参数、参数类型和版本;构建所述RPC调用请求对应的HTTP请求;其中,所述HTTP请求的请求地址为所述第二网络的代理层IP地址,所述HTTP请求的统一资源标识符URL包括所述请求信息。
S102:将所述HTTP请求发送至所述第三分布式系统,以便所述第三分布式系统将所述HTTP请求泛化为所述RPC调用请求,并向所述第一分布式系统返回服务调用结果;
其中,在第一分布式系统将RPC调用请求转换为对应的HTTP请求之后,第一分布式系统可以将HTTP请求发送至处于第二网络的第三分布式系统。在第三分布式系统接收到HTTP请求之后,可以将HTTP请求泛化为RPC调用请求,并根据RPC调用请求调用对应的服务得到服务调用结果,进而将服务调用结果返回至第一分布式系统。
S103:当接收到所述第三分布式系统返回的所述服务调用结果时,将所述服务调用结果发送至所述第二分布式系统。
其中,在第一分布式系统接收到第三分布式系统返回的所述服务调用结果之后,第一分布式系统可以将服务调用结果发送至所述第二分布式系统。通过上述操作,在第二分布式系统的视角看来,第二分布式系统向本地网络的第一分布式系统发送RPC调用请求,接收第一分布式系统返回的服务调用结果,无需对服务接口进行改造,提高了跨网络服务调用的效率。
本实施例在第一分布式系统收到第二分布式系统发送的RPC调用请求之后将RPC调用请求转换为对应的HTTP请求,进而将HTTP请求转发至跨网络的第三分布式系统,以使第三分布式系统将接收到的HTTP请求泛化为RPC请求,向将服务调用结果经第一分布式系统发送至第二分布式系统。由于第一分布式系统和第二分布式系统为处于同一网络的分布式系统,且第一分布式系统为第三分布式系统同等部署得到的系统,因此第二分布式系统向第一分布式系统可以通过RPC调用请求,第一分布式系统在接收到RPC调用请求后通过HTTP请求进行跨网络的服务调用,可以将跨网络的服务调用转化为第一分布式系统在本地网络内的服务调用,同时无需将被调用分布式系统的所有服务均进行改造,本实施例能够提高跨网络服务调用效率及其升级改造的研发效率。
请参见图2,图2为本申请实施例所提供的一种RPC调用请求转换方法的流程图,本实施例是对图1对应实施例中S101的进一步介绍,可以将本实施例和图1对应的实施例相结合得到进一步的实施方式,本实施可以包括以下步骤:
S201:接收第二分布式系统发送的RPC调用请求。
S202:判断所述第一分布式系统的本地缓存中是否包括所述RPC调用请求对应的服务调用结果;若是,则进入S203;若否,则进入S204;
S203:将所述第一分布式系统的本地缓存中存储的所述RPC调用请求对应的服务调用结果返回至所述第二分布式系统;
S204:将所述RPC调用请求转换为对应的HTTP请求。
其中,本实施例可以在部署第一分布式系统时,在第一分布式系统的本地缓存中预先存储预设服务调用结果,在接收到第二分布式系统发送的RPC调用请求时,先在本地缓存中查询是否存在RPC调用请求对应的服务调用结果,若存在则直接向第二分布式系统返回服务调用结果,若不存在则执行RPC调用请求转换并通过第三分布式系统获取服务调用结果。本实施例利用第一分布式系统的本地缓存判断是否存在RPC调用请求对应的服务调用结果,能够提高分布式系统见服务调用的效率。
作为对于上述实施例的进一步介绍,第三分布式系统中部署有Proxy层代理服务。相应的,在第三分布式系统将所述HTTP请求泛化为所述RPC调用请求时可以具体执行以下操作:利用所述Proxy层代理服务将所述HTTP请求泛化为所述RPC调用请求。具体的,第三分布式系统接收HTTP请求及其对应的参数,通过泛化调用的技术构建RPC请求的接口及其参数,进而执行RPC服务请求。此方案可作为跨网络分布式系统间服务调用的通用方案。
作为一种可行的实施方式,第一分布式系统生成的HTTP请求中可以包括所述第一分布式系统的用户标识。第三分布式系统在接收到HTTP请求后,可以先判断所述用户标识是否为白名单中的预设标识;若是,则执行所述RPC调用请求得到所述服务调用结果,并向所述第一分布式系统返回所述服务调用结果;若否,则向所述第一分布式系统返回调用失败的提示信息。通过上述方法能够根据第二分布式系统的权限判断是否可以跨网络调用第三分布式系统的服务,提高了服务调用的安全性。
本申请还提供了一种跨网络的服务调用方法,具体可以包括以下步骤:
步骤1:确定执行跨网络调用操作的第二分布式系统和被跨网络调用的第三分布式系统;其中,所述第二分布式系统处于第一网络,所述第三分布式系统处于第二网络;
步骤2:将所述第三分布式系统在所述第二分布式系统所在的本地网络中执行同等部署操作,得到第一分布式系统;
步骤3:所述第二分布式系统向所述第一分布式系统发送RPC调用请求,以便所述第一分布式系统将所述RPC调用请求转换为HTTP请求并将所述HTTP请求转发至所述第三分布式系统;
步骤4:所述第三分布式系统将所述HTTP请求泛化为所述RPC调用请求,并向所述第一分布式系统返回服务调用结果;
步骤5:所述第一分布式系统将所述服务调用结果发送至所述第二分布式系统。
上述实施例还可以在所述第一分布式系统中添加Filter插件,以便第一分布式系统通过所述Filter插件将所述RPC调用请求转换为对应的HTTP请求。具体的,第一分布式系统可以利用所述Filter插件获取所述RPC调用请求的请求信息;其中,所述请求信息包括所述RPC调用请求的服务名、参数、参数类型和版本;构建所述RPC调用请求对应的HTTP请求;其中,所述HTTP请求的请求地址为所述第二网络的代理层IP地址,所述HTTP请求的统一资源标识符URL包括所述请求信息。
进一步的,在将所述RPC调用请求转换为对应的HTTP请求之前,还可以判断所述第一分布式系统的本地缓存中是否包括所述RPC调用请求对应的服务调用结果;若是,则将所述第一分布式系统的本地缓存中存储的所述RPC调用请求对应的服务调用结果返回至所述第二分布式系统;若否,则进入将所述RPC调用请求转换为对应的HTTP请求的操作。
进一步的,第三分布式系统中部署有Proxy层代理服务,第三分布式系统可以利用所述Proxy层代理服务将所述HTTP请求泛化为所述RPC调用请求。
进一步的,本实施例中的HTTP请求可以包括所述第一分布式系统的用户标识;第三分布式系统在接收到HTTP请求之后,可以判断所述用户标识是否为白名单中的预设标识;若是,则执行所述RPC调用请求得到所述服务调用结果,并向所述第一分布式系统返回所述服务调用结果;若否,则向所述第一分布式系统返回调用失败的提示信息。
本实施例在第一分布式系统收到第二分布式系统发送的RPC调用请求之后将RPC调用请求转换为对应的HTTP请求,进而将HTTP请求转发至跨网络的第三分布式系统,以使第三分布式系统将接收到的HTTP请求泛化为RPC请求,向将服务调用结果经第一分布式系统发送至第二分布式系统。由于第一分布式系统和第二分布式系统为处于同一网络的分布式系统,且第一分布式系统为第三分布式系统同等部署得到的系统,因此第二分布式系统向第一分布式系统可以通过RPC调用请求,第一分布式系统在接收到RPC调用请求后通过HTTP请求进行跨网络的服务调用,可以将跨网络的服务调用转化为第一分布式系统在本地网络内的服务调用,同时无需将被调用分布式系统的所有服务均进行改造,本实施例能够提高跨网络服务调用效率及其升级改造的研发效率。
请参见图3,图3为本申请实施例提供的一种跨网络的分布式系统间调用方法的流程图。本实施例基于Filter的过滤器模式与Proxy代理层的方案,透明于服务间的访问(A系统调用远程B系统如调用本地同一网络一样),首先通过在Filter层把RPC调用转换为更加通用的HTTP调用,其次在远程Proxy代理层把HTTP调用再泛化为普通的RPC调用,最后此方案屏蔽了具体的业务代码的改造,大大提升了工程效率,减少代码量,减少了开发时间。跨网络的分布式系统间调用方法包括与以下步骤:
步骤1、确定需要跨网络调用的主服务系统A。
步骤2、确定被跨网络调用的服务系统B。
其中,在确定被跨网络调用的服务系统B后,可以判断服务系统B是否暴露所有服务,若是则为服务提供者(工程级别)增加Filter插件,若否则为服务提供者(类级别)增加Filter插件。
步骤3、将系统B在本网络同等部署,即在本网络无差别部署同样的系统B’。
步骤4、B’系统工程级别(即B系统所有服务都需要调用远程服务,也可以是类级别)增加Filter插件。
步骤5、B’系统通过Filter插件,在本地Redis缓存查找是否存在此次调用服务的缓存,如存在则不进行远程访问,直接取缓存结果,调用结束;否则调用下一流程。
步骤6、B’系统通过Filter层把RPC服务转换为通用的HTTP调用(无须针对具体业务逐一编码)。
本步骤的主要实现过程如下:Filter层接收到RPC服务请求,获取请求的服务名、参数、参数类型、版本等。通过HttpClient构建Http请求,请求地址为跨网络远程代理层IP(域名),Url地址增加服务名、参数、参数类型等
步骤7、跨网络远程系统B侧,部署Proxy层代理服务。
步骤8、Proxy层代理服务把接收到的HTTP请求泛化为本地RPC服务调用。
本步骤主要实现过程如下:Proxy层代理层启动自己的服务(可以是Jetty、Tomcat、Netty、Mina、容器等),Proxy层代理层接收到Http请求并将把Http请求泛化为系统内的RPC调用。本实施例可以针对请求方设置IP白名单(只允许指定调用者调用)、限流(控制调用频率于次数)等。
步骤9、跨网络远程系统B接收到RPC调用,返回结果至系统B’,系统B’将结果发送至主服务系统A。
本实施例中Filter层与Proxy代理层的实现方案,对于被调用方来无需了解具体的业务逻辑,所以基本无业务代码改造。通过在Filter层过滤器的方式进行拦截,转换RPC访问为HTTP请求,再通过远程Proxy层进行HTTP与RPC方式的互转,大大减少了编码量与研发时间,显著的提升了效率。同时缓存的使用,极大的提升跨网远程访问的效率。本方案在跨网远程访问的时候,我们首先会去查询缓存系统,如果存在则直接返回,否则才进行跨网远程访问。跨网络远程访问本地副本的部署方案,对于调用方来说无需关心服务在远程还是本地,无须做任何的代码改动。调用跨网络远程服务如同调用本地服务,使分布式系统中跨网络远程访问变的透明。
本实施例中系统A、系统B和系统B’分布式系统,在分布式跨网络系统间的调用过程中,本方案无需考虑跨网络远程服务到底有多少个,对于本方案来说是无差别的,且数量越多效果越明显;其次Filter层和Proxy代理层的使用可以有效屏蔽业务场景,做到只关注技术的实现,而无需考虑具体的业务需求,真正做到技术与业务的解耦;最后远程服务本地副本的部署方案,做到了跨网络远程服务对调用方来说是透明。调用方就如同调用本地本网络服务一样,无需更改任何代码。本实施例缓存的使用可以提升跨网远程访问的效率。本方案在跨网络远程访问的时候,首先会去查询缓存系统,如果缓存系统存在远程访问的数据,则直接返回;否则才进行跨网络远程访问。综上所述,本方案在代码量、研发时间、系统鲁棒性方面存在显著的优化。同时缓存系统的增加,大大提升了跨网络分布式系统间远程调用的性能。
例如:在传统方案中若存在500个接口,每个接口有10个服务方法需要改造,其一共需要进行5000个服务方法的改造。如果每个方法平均需要增加10行代码(包括配置)来实现跨网络的无状态调用,则产生5000*10=50000的代码量,这是一个繁重且容易出错的工作。通过实施本方案只需通过一行代码(系统级别的暴露全部)增加全局Filter过滤,再通过Proxy代理层进行代理,整个编码量可以控制在500行以内,大大提升了分布式系统中的跨网效率。同时本方案剥离了具体的业务实现,让代码脱离了繁琐的业务,使程序更加的高内聚,低耦合,大大增加了分布式系统中的系统的鲁棒性。本方案可以减少90%编码量,减少了10倍的研发成本,大大提升了跨网络分布式系统间访问的效率。
请参见图4,图4为本申请实施例所提供的一种分布式系统的跨网络调用装置的结构示意图;
该装置可以包括:
请求转换模块100,用于接收第二分布式系统发送的RPC调用请求,并将所述RPC调用请求转换为对应的HTTP请求;其中,所述第一分布式系统和所述第二分布式系统处于第一网络,所述第一分布式系统通过将处于第二网络的第三分布式系统进行同等部署得到;
请求发送模块200,用于将所述HTTP请求发送至所述第三分布式系统,以便所述第三分布式系统将所述HTTP请求泛化为所述RPC调用请求,并向所述第一分布式系统返回服务调用结果;
结果返回模块300,用于当接收到所述第三分布式系统返回的所述服务调用结果时,将所述服务调用结果发送至所述第二分布式系统。
本实施例在第一分布式系统收到第二分布式系统发送的RPC调用请求之后将RPC调用请求转换为对应的HTTP请求,进而将HTTP请求转发至跨网络的第三分布式系统,以使第三分布式系统将接收到的HTTP请求泛化为RPC请求,向将服务调用结果经第一分布式系统发送至第二分布式系统。由于第一分布式系统和第二分布式系统为处于同一网络的分布式系统,且第一分布式系统为第三分布式系统同等部署得到的系统,因此第二分布式系统向第一分布式系统可以通过RPC调用请求,第一分布式系统在接收到RPC调用请求后通过HTTP请求进行跨网络的服务调用,可以将跨网络的服务调用转化为第一分布式系统在本地网络内的服务调用,同时无需将被调用分布式系统的所有服务均进行改造,本实施例能够提高跨网络服务调用效率及其升级改造的研发效率。
进一步的,还包括:
插件添加模块,用于在所述第一分布式系统中添加Filter插件;
相应的,请求转换模块100具体为用于通过所述Filter插件将所述RPC调用请求转换为对应的HTTP请求的模块。
进一步的,请求转换模块100包括:
请求信息获取单元,用于利用所述Filter插件获取所述RPC调用请求的请求信息;其中,所述请求信息包括所述RPC调用请求的服务名、参数、参数类型和版本;
请求构建单元,用于构建所述RPC调用请求对应的HTTP请求;其中,所述HTTP请求的请求地址为所述第二网络的代理层IP地址,所述HTTP请求的统一资源标识符URL包括所述请求信息。
进一步的,还包括:
缓存判断模块,用于判断所述第一分布式系统的本地缓存中是否包括所述RPC调用请求对应的服务调用结果;若是,则将所述第一分布式系统的本地缓存中存储的所述RPC调用请求对应的服务调用结果返回至所述第二分布式系统;若否,则进入请求转换模块的工作流程。
进一步的,所述第三分布式系统中部署有Proxy层代理服务;
相应的,第三分布式系统用于利用所述Proxy层代理服务将所述HTTP请求泛化为所述RPC调用请求。
进一步的,所述HTTP请求包括所述第一分布式系统的用户标识;
相应的,第三分布式系统包括:
表示判断模块,用于判断所述用户标识是否为白名单中的预设标识;若是,则执行所述RPC调用请求得到所述服务调用结果,并向所述第一分布式系统返回所述服务调用结果;若否,则向所述第一分布式系统返回调用失败的提示信息。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请还提供了一种存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种分布式系统的跨网络调用方法,其特征在于,应用于第一分布式系统,包括:
接收第二分布式系统发送的RPC调用请求,并将所述RPC调用请求转换为对应的HTTP请求;其中,所述第一分布式系统和所述第二分布式系统处于第一网络,所述第一分布式系统通过将处于第二网络的第三分布式系统的源代码在所述第一网络进行同等部署得到;
将所述HTTP请求发送至所述第三分布式系统,以便所述第三分布式系统将所述HTTP请求泛化为所述RPC调用请求并向所述第一分布式系统返回服务调用结果;
当接收到所述第三分布式系统返回的所述服务调用结果时,将所述服务调用结果发送至所述第二分布式系统。
2.根据权利要求1所述跨网络调用方法,其特征在于,还包括:
在所述第一分布式系统中添加Filter插件;
相应的,将所述RPC调用请求转换为对应的HTTP请求,包括:
通过所述Filter插件将所述RPC调用请求转换为对应的HTTP请求。
3.根据权利要求2所述跨网络调用方法,其特征在于,通过所述Filter插件将所述RPC调用请求转换为对应的HTTP请求包括:
利用所述Filter插件获取所述RPC调用请求的请求信息;其中,所述请求信息包括所述RPC调用请求的服务名、参数、参数类型和版本;
构建所述RPC调用请求对应的HTTP请求;其中,所述HTTP请求的请求地址为所述第二网络的代理层IP地址,所述HTTP请求的统一资源标识符URL包括所述请求信息。
4.根据权利要求1所述跨网络调用方法,其特征在于,在将所述RPC调用请求转换为对应的HTTP请求之前,还包括:
判断所述第一分布式系统的本地缓存中是否包括所述RPC调用请求对应的服务调用结果;
若是,则将所述第一分布式系统的本地缓存中存储的所述RPC调用请求对应的服务调用结果返回至所述第二分布式系统;
若否,则进入将所述RPC调用请求转换为对应的HTTP请求的操作。
5.根据权利要求1所述跨网络调用方法,其特征在于,所述第三分布式系统中部署有Proxy层代理服务;
相应的,将所述HTTP请求泛化为所述RPC调用请求,包括:
利用所述Proxy层代理服务将所述HTTP请求泛化为所述RPC调用请求。
6.根据权利要求1所述跨网络调用方法,其特征在于,所述HTTP请求包括所述第一分布式系统的用户标识;
相应的,向所述第一分布式系统返回服务调用结果包括:
所述第三分布式系统判断所述用户标识是否为白名单中的预设标识;
若是,则执行所述RPC调用请求得到所述服务调用结果,并向所述第一分布式系统返回所述服务调用结果;
若否,则向所述第一分布式系统返回调用失败的提示信息。
7.一种跨网络的服务调用方法,其特征在于,包括:
确定执行跨网络调用操作的第二分布式系统和被跨网络调用的第三分布式系统;其中,所述第二分布式系统处于第一网络,所述第三分布式系统处于第二网络;
将所述第三分布式系统的源代码在所述第二分布式系统所在的本地网络中执行同等部署操作,得到第一分布式系统;
所述第二分布式系统向所述第一分布式系统发送RPC调用请求,以便所述第一分布式系统将所述RPC调用请求转换为HTTP请求并将所述HTTP请求转发至所述第三分布式系统;
所述第三分布式系统将所述HTTP请求泛化为所述RPC调用请求,并向所述第一分布式系统返回服务调用结果;
所述第一分布式系统将所述服务调用结果发送至所述第二分布式系统。
8.一种分布式系统的跨网络调用装置,其特征在于,应用于第一分布式系统,包括:
请求转换模块,用于接收第二分布式系统发送的RPC调用请求,并将所述RPC调用请求转换为对应的HTTP请求;其中,所述第一分布式系统和所述第二分布式系统处于第一网络,所述第一分布式系统通过将处于第二网络的第三分布式系统的源代码在所述第一网络进行同等部署得到;
请求发送模块,用于将所述HTTP请求发送至所述第三分布式系统,以便所述第三分布式系统将所述HTTP请求泛化为所述RPC调用请求,并向所述第一分布式系统返回服务调用结果;
结果返回模块,用于当接收到所述第三分布式系统返回的所述服务调用结果时,将所述服务调用结果发送至所述第二分布式系统。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1至7任一项所述方法的步骤。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010191665.0A CN111414261B (zh) | 2020-03-18 | 2020-03-18 | 一种分布式系统的跨网络调用方法、装置及相关组件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010191665.0A CN111414261B (zh) | 2020-03-18 | 2020-03-18 | 一种分布式系统的跨网络调用方法、装置及相关组件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111414261A CN111414261A (zh) | 2020-07-14 |
CN111414261B true CN111414261B (zh) | 2023-08-22 |
Family
ID=71491232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010191665.0A Active CN111414261B (zh) | 2020-03-18 | 2020-03-18 | 一种分布式系统的跨网络调用方法、装置及相关组件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111414261B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112804303B (zh) * | 2020-12-31 | 2023-11-03 | 网银在线(北京)科技有限公司 | 服务提供方法、装置、系统、中转平台及存储介质 |
CN113379956B (zh) * | 2021-08-11 | 2021-11-02 | 四川智优羊科技有限公司 | 一种应用于校园门禁的netty4管道跨网协议的通信方法 |
CN116633993B (zh) * | 2023-07-25 | 2023-10-10 | 中邮消费金融有限公司 | 跨网络调用微服务方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101609415A (zh) * | 2009-07-17 | 2009-12-23 | 武汉大学 | 基于中间件的通用服务调用系统及方法 |
CN103002047A (zh) * | 2012-12-19 | 2013-03-27 | 上海斐讯数据通信技术有限公司 | 一种rpc式web服务架构方法 |
CN106572051A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 分布式系统中分布式锁服务实现方法以及装置 |
CN106998343A (zh) * | 2016-01-26 | 2017-08-01 | 阿里巴巴集团控股有限公司 | 一种远程过程调用处理方法、装置及系统 |
CN109714332A (zh) * | 2018-12-26 | 2019-05-03 | 北京字节跳动网络技术有限公司 | 基于Thrift和语法树解析的协议转换方法及装置 |
CN110011984A (zh) * | 2019-03-19 | 2019-07-12 | 西安微电子技术研究所 | 一种基于rest和rpc的分布式集群系统及方法 |
CN110177118A (zh) * | 2019-06-13 | 2019-08-27 | 上海海事大学 | 一种基于rdma的rpc通信方法 |
CN110399233A (zh) * | 2019-06-28 | 2019-11-01 | 口碑(上海)信息技术有限公司 | 远程过程调用的处理方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9699249B2 (en) * | 2014-12-05 | 2017-07-04 | Vmware, Inc. | Runtime generation of application programming interfaces for remote procedure call services |
-
2020
- 2020-03-18 CN CN202010191665.0A patent/CN111414261B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101609415A (zh) * | 2009-07-17 | 2009-12-23 | 武汉大学 | 基于中间件的通用服务调用系统及方法 |
CN103002047A (zh) * | 2012-12-19 | 2013-03-27 | 上海斐讯数据通信技术有限公司 | 一种rpc式web服务架构方法 |
CN106572051A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 分布式系统中分布式锁服务实现方法以及装置 |
CN106998343A (zh) * | 2016-01-26 | 2017-08-01 | 阿里巴巴集团控股有限公司 | 一种远程过程调用处理方法、装置及系统 |
CN109714332A (zh) * | 2018-12-26 | 2019-05-03 | 北京字节跳动网络技术有限公司 | 基于Thrift和语法树解析的协议转换方法及装置 |
CN110011984A (zh) * | 2019-03-19 | 2019-07-12 | 西安微电子技术研究所 | 一种基于rest和rpc的分布式集群系统及方法 |
CN110177118A (zh) * | 2019-06-13 | 2019-08-27 | 上海海事大学 | 一种基于rdma的rpc通信方法 |
CN110399233A (zh) * | 2019-06-28 | 2019-11-01 | 口碑(上海)信息技术有限公司 | 远程过程调用的处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111414261A (zh) | 2020-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109246251B (zh) | 一种微服务调用方法、装置、系统、设备及可读存储介质 | |
CN111414261B (zh) | 一种分布式系统的跨网络调用方法、装置及相关组件 | |
US7571208B2 (en) | Creating proxies from service description metadata at runtime | |
KR100470851B1 (ko) | 컴퓨터 네트워크에서 서버로부터 디지탈 데이타를클라이언트 컴퓨터로 다운로드 하는 방법 | |
CN102413022B (zh) | 一种应用调试方法和系统 | |
CA2603236C (en) | System and method of device-to-server registration | |
US20040176968A1 (en) | Systems and methods for dynamically configuring business processes | |
EP2106647B1 (en) | Web services and telecom network management unification | |
US9323587B2 (en) | Method and system for automatic detecting and resolving APIs | |
CN100566311C (zh) | 供应组件应用程序的系统和方法 | |
CN112463211A (zh) | 一种兼容多种开发架构的系统架构改造方法及系统架构 | |
CN109104368B (zh) | 一种请求连接方法、装置、服务器及计算机可读存储介质 | |
CN100505711C (zh) | 管理组件应用程序的通信的系统和方法 | |
US8340652B2 (en) | System and method of waste management | |
JPWO2002078385A1 (ja) | 機器の設定更新システム | |
CN112688794A (zh) | Yang模型的管理方法、装置、系统、设备及存储介质 | |
CN112637126B (zh) | 一种服务注册方法及Pod | |
EP1872207A1 (en) | System and method of presenting entities of standard device applications in wireless devices | |
Filippone et al. | Synthesis of context‐aware business‐to‐business processes for location‐based services through choreographies | |
CN112905273A (zh) | 一种服务调用方法和装置 | |
US6678742B1 (en) | Object-oriented computer system and computer-readable storage medium which stores program | |
CN113760481A (zh) | 一种分布式定时任务调度系统和方法 | |
CN110071945B (zh) | 一种用户数据的订阅方法、装置及计算机可读存储介质 | |
WO2006040991A1 (ja) | 端末装置、サーバ装置、及びWebサービス提供システム | |
CN110995798B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |