CN112788003A - 一种基于微服务架构的rpc通信方法及设备 - Google Patents
一种基于微服务架构的rpc通信方法及设备 Download PDFInfo
- Publication number
- CN112788003A CN112788003A CN202011585961.5A CN202011585961A CN112788003A CN 112788003 A CN112788003 A CN 112788003A CN 202011585961 A CN202011585961 A CN 202011585961A CN 112788003 A CN112788003 A CN 112788003A
- Authority
- CN
- China
- Prior art keywords
- rpc
- service
- communication
- micro
- implementation class
- 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
-
- 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/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于微服务架构的RPC通信方法及设备,该方案包括:采用HTTP协议进行所述RPC通信,兼容处理微服务单元间的差异;通过识别所述RPC的服务端接口时指定的参数序列化方式,对调用所述RPC服务时传入的参数采用不同的方式进行序列化;反序列化处理所述RPC通信层的返回值;通过动态代理的机制,基于所述识别RPC的服务端接口,自动生成所述RPC的代理实现类,实现所述RPC的通信。
Description
技术领域
本说明书实施例涉及微服务架构技术领域,尤其涉及一种基于微服务架构的远程过程调用(Remote Procedure Call,RPC)通信方法及设备。
背景技术
目前,微服务的概念越来越人性化,有很多微服务应用正在逐步落地。随着微服务架构越来越流行,微服务已成为一大趋势,而通信层作为微服务架构的核心模块,支持微服务架构间的RPC通信成为本领域技术人员关心的重点。
现有技术中,在实际微服务落地过程中,通信层主要存在两方面的问题:一是客户端调用时需要开发通信层代码,其开发过程琐碎;二是不同技术栈、不同部署模式的微服务单元有不同的通信类型接口,造成的通信差异难以兼容。
基于此,如何提供一种快速高效的基于微服务架构的RPC通信方法及设备成为亟需解决的技术问题。
发明内容
本说明书实施例提供一种基于微服务架构的RPC通信方法及设备,用以解决现有技术中的如下技术问题:
客户端调用时需要开发通信层代码,其开发过程琐碎,而且不同技术栈、不同部署模式的微服务单元有不同的通信类型接口,造成的通信差异难以兼容。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供一种基于微服务架构的RPC通信方法,包括:
采用HTTP协议进行所述RPC通信,兼容处理微服务单元间的差异;
通过识别所述RPC的服务端接口时指定的参数序列化方式,对调用所述RPC服务时传入的参数采用不同的方式进行序列化;
反序列化处理所述RPC通信层的返回值;
通过动态代理的机制,基于所述识别RPC的服务端接口,自动生成所述RPC的代理实现类,实现所述RPC的通信。
可选地,所述反序列化处理所述RPC通信层的返回值,具体包括:
获取泛型类型的参数,遍历所述泛型类型的参数;
若所述泛型类型为动态类型,则传入构造函数进行替换,得到对应的新的泛型实体,实现反序列化。
可选地,所述方法还包括:若所述序列化的方式为自定义的序列化方式,则调用自定义的序列化器进行所述序列化。
可选地,所述自动生成所述RPC的代理实现类,具体包括:调用获取所述RPC的代理实现类的方法,自动生成所述RPC的代理实现类。
可选地,在自动生成所述RPC的代理实现类之前,所述方法还包括:
发送所述RPC的请求,调用所述RPC的服务端。
一种基于微服务架构的RPC通信设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
采用HTTP协议进行所述RPC通信,兼容处理微服务单元间的差异;
通过识别所述RPC的服务端接口时指定的参数序列化方式,对调用所述RPC服务时传入的参数采用不同的方式进行序列化;
反序列化处理所述RPC通信层的返回值;
通过动态代理的机制,基于所述识别RPC的服务端接口,自动生成所述RPC的代理实现类,实现所述RPC的通信。
本说明书实施例采用上述至少一个技术方案能够达到以下有益效果:简化开发过程,提高开发效率,快速高效的基于微服务架构进行RPC通信。
附图说明
此处所说明的附图用来提供对本说明书实施例的进一步理解,构成本说明书实施例的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对申请的不当限定。在附图中:
图1为本申请实施例提供的一种基于微服务架构的RPC通信方法的流程示意图;
图2为本申请实施例提供的一种基于微服务架构的RPC通信设备的结构示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本申请技术方案进行清楚、完整的描述。显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的实施例提供了种基于微服务架构的RPC通信方法,下面进行具体说明:
图1为本申请实施例提供的种基于微服务架构的RPC通信方法的流程示意图,图1中的流程包括以下步骤:
S101:采用HTTP协议进行所述RPC通信,兼容处理微服务单元间的差异;
S102:通过识别所述RPC的服务端接口时指定的参数序列化方式,对调用所述RPC服务时传入的参数采用不同的方式进行序列化;
S103:反序列化处理所述RPC通信层的返回值;
S104:通过动态代理的机制,基于所述识别RPC的服务端接口,自动生成所述RPC的代理实现类,实现所述RPC的通信。
微服务架构下,不同的微服务单元可能采用不同的技术栈,比如Net core、Java或者其他编程语言,但通信层都会选择HTTP或TCP协议,所以本发明采用HTTP协议进行RPC通信,兼容处理微服务单元间的差异,在Java代码中一样可以调用Net Core发布的RPC。
通过识别RPC的服务端接口时指定的参数序列化方式,对调用RPC服务时传入的参数采用不同的方式进行序列化。
考虑到序列化方式可能会是自定义的序列化方式,为了支持进行自定义序列化,本申请提出:若序列化的方式为自定义的序列化方式,则调用自定义的序列化器进行序列化。
基于此,本申请实施例除了支持主流的Json、ProtoBuf等序列化方式,还支持进行自定义序列化,保证特殊类型参数也可以进行通信。
为了支持泛型类型的返回值,需要反序列化处理RPC通信层的返回值。但是,泛型类型的的值无法直接反序列化。为了处理这种返回值,本申请实施例提出:获取泛型类型的参数,并且遍历泛型类型的参数;若泛型类型为动态类型,则传入构造函数进行替换,得到对应的新的泛型实体,由此实现反序列化。
通过动态代理的机制,基于识别RPC的服务端接口,自动生成RPC的代理实现类,实现RPC的通信。
其中,自动生成RPC的代理实现类,具体包括:调用获取RPC的代理实现类的方法,自动生成RPC的代理实现类。
在自动生成RPC的代理实现类之前,还包括:发送RPC的请求,调用RPC的服务端。
例如:通过动态代理的机制,在客户端通过识别RPC的服务端接口Interface,自动生成实现RPCInterface的代理实现类RPC Client。部分示例性代码如下所示:
Proxy.newProxyInstance(rpcInterface.getClassLoader(),new Class[]{rpcInterface},new DynamicInvocationHandler());
在代理实现类RPC Client的具体实现逻辑中,去发送RPC请求,调用RPC的服务端。
这样服务调用者无需关心RPC通信层的开发,只需调用获取代理类的方法,便可将分布式的服务当作本地服务调用。调用方开发人员不需要知晓服务的地址,也不用直接引用实现类,便可实现对服务的调用。
本申请还提供了一种基于微服务架构的RPC通信设备的结构示意图,如图2所示。一种基于微服务架构的RPC通信设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
采用HTTP协议进行所述RPC通信,兼容处理微服务单元间的差异;
通过识别所述RPC的服务端接口时指定的参数序列化方式,对调用所述RPC服务时传入的参数采用不同的方式进行序列化;
反序列化处理所述RPC通信层的返回值;
通过动态代理的机制,基于所述识别RPC的服务端接口,自动生成所述RPC的代理实现类,实现所述RPC的通信。
处理器与存储器之间可以通过总线通信,设备还可以包括与其他设备通信的输入/输出接口。
基于同样的思路,本说明书一个或多个实施例还提供了对应于上述方法的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
采用HTTP协议进行所述RPC通信,兼容处理微服务单元间的差异;
通过识别所述RPC的服务端接口时指定的参数序列化方式,对调用所述RPC服务时传入的参数采用不同的方式进行序列化;
反序列化处理所述RPC通信层的返回值;
通过动态代理的机制,基于所述识别RPC的服务端接口,自动生成所述RPC的代理实现类,实现所述RPC的通信。
综上所述,本发明实现了在微服务架构中各服务单元之间的RPC通信代理类生成。通过动态代理的方式,在客户端自动生成RPC服务的代理类,不仅能够进行多种的参数序列化,并且支持不同技术栈、不同部署模式下的微服务单元之间的通信,克服了通信兼容性的问题,从而实现快速、高效的RPC通信,为微服务架构提供了RPC通信基础,并且简化了开发过程,提高了开发效率。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的要求范围之内。
Claims (6)
1.一种基于微服务架构的远程过程调用RPC通信方法,其特征在于,所述方法包括:
采用HTTP协议进行所述RPC通信,兼容处理微服务单元间的差异;
通过识别所述RPC的服务端接口时指定的参数序列化方式,对调用所述RPC服务时传入的参数采用不同的方式进行序列化;
反序列化处理所述RPC通信层的返回值;
通过动态代理的机制,基于所述识别RPC的服务端接口,自动生成所述RPC的代理实现类,实现所述RPC的通信。
2.根据权利要求1所述的方法,其特征在于,所述反序列化处理所述RPC通信层的返回值,具体包括:
获取泛型类型的参数,遍历所述泛型类型的参数;
若所述泛型类型为动态类型,则传入构造函数进行替换,得到对应的新的泛型实体,实现反序列化。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述序列化的方式为自定义的序列化方式,则调用自定义的序列化器进行所述序列化。
4.根据权利要求1所述的方法,其特征在于,所述自动生成所述RPC的代理实现类,具体包括:
调用获取所述RPC的代理实现类的方法,自动生成所述RPC的代理实现类。
5.根据权利要求1所述的方法,其特征在于,在自动生成所述RPC的代理实现类之前,所述方法还包括:
发送所述RPC的请求,调用所述RPC的服务端。
6.一种基于微服务架构的RPC通信设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
采用HTTP协议进行所述RPC通信,兼容处理微服务单元间的差异;
通过识别所述RPC的服务端接口时指定的参数序列化方式,对调用所述RPC服务时传入的参数采用不同的方式进行序列化;
反序列化处理所述RPC通信层的返回值;
通过动态代理的机制,基于所述识别RPC的服务端接口,自动生成所述RPC的代理实现类,实现所述RPC的通信。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011585961.5A CN112788003A (zh) | 2020-12-28 | 2020-12-28 | 一种基于微服务架构的rpc通信方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011585961.5A CN112788003A (zh) | 2020-12-28 | 2020-12-28 | 一种基于微服务架构的rpc通信方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112788003A true CN112788003A (zh) | 2021-05-11 |
Family
ID=75753024
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011585961.5A Pending CN112788003A (zh) | 2020-12-28 | 2020-12-28 | 一种基于微服务架构的rpc通信方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112788003A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102209076A (zh) * | 2011-06-03 | 2011-10-05 | 用友软件股份有限公司 | 服务端与客户端之间的交互方法和交互系统 |
CN106506519A (zh) * | 2016-11-21 | 2017-03-15 | 辽宁科技大学 | WCF框架net.tcp协议跨平台通信的系统及方法 |
WO2019100819A1 (zh) * | 2017-11-24 | 2019-05-31 | 中兴通讯股份有限公司 | 一种实现远程过程调用的方法及装置 |
CN109933443A (zh) * | 2019-03-07 | 2019-06-25 | 腾讯科技(深圳)有限公司 | 进程间通信方法、装置、计算机设备及可读存储介质 |
CN110399233A (zh) * | 2019-06-28 | 2019-11-01 | 口碑(上海)信息技术有限公司 | 远程过程调用的处理方法及装置 |
CN111427557A (zh) * | 2020-04-06 | 2020-07-17 | 中信银行股份有限公司 | 应用微服务化方法、装置、电子设备及可读存储介质 |
-
2020
- 2020-12-28 CN CN202011585961.5A patent/CN112788003A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102209076A (zh) * | 2011-06-03 | 2011-10-05 | 用友软件股份有限公司 | 服务端与客户端之间的交互方法和交互系统 |
CN106506519A (zh) * | 2016-11-21 | 2017-03-15 | 辽宁科技大学 | WCF框架net.tcp协议跨平台通信的系统及方法 |
WO2019100819A1 (zh) * | 2017-11-24 | 2019-05-31 | 中兴通讯股份有限公司 | 一种实现远程过程调用的方法及装置 |
CN109933443A (zh) * | 2019-03-07 | 2019-06-25 | 腾讯科技(深圳)有限公司 | 进程间通信方法、装置、计算机设备及可读存储介质 |
CN110399233A (zh) * | 2019-06-28 | 2019-11-01 | 口碑(上海)信息技术有限公司 | 远程过程调用的处理方法及装置 |
CN111427557A (zh) * | 2020-04-06 | 2020-07-17 | 中信银行股份有限公司 | 应用微服务化方法、装置、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112114979B (zh) | 远程过程调用方法和装置 | |
CN108881111B (zh) | 一种实现多租户系统的方法及装置 | |
CN113596171B (zh) | 云计算数据交互方法、系统、电子设备及存储介质 | |
CN102810069A (zh) | 一种java对象的请求和响应方法、装置、系统和终端 | |
CN111258723B (zh) | 分布式系统的事务处理方法、装置、系统、介质及设备 | |
CN111240858A (zh) | 事件调度方法及组件 | |
CN114979295B (zh) | 一种网关管理的方法和装置 | |
CN111200606A (zh) | 深度学习模型任务处理方法、系统、服务器及存储介质 | |
CN112565439A (zh) | 物联网通信方法与系统 | |
US20030145089A1 (en) | System and method for enabling arbitrary components to transfer data between each other | |
CN106357654B (zh) | 远程过程调用方法、装置及通信系统 | |
CN108810000B (zh) | 一种生成序列化和反序列化api的方法及装置 | |
CN111787097B (zh) | 接口报文转换配置方法、接口报文转换方法及设备 | |
CN112788003A (zh) | 一种基于微服务架构的rpc通信方法及设备 | |
CN102137079B (zh) | 一种远程过程调用的业务开发方法及装置 | |
EP3009931A1 (en) | Electronic device for internet protocol communications | |
CN114398035A (zh) | 利用组件提供服务的方法、装置、设备和计算机可读介质 | |
CN111651146B (zh) | 一种函数生成方法、装置、设备和介质 | |
CN114356774A (zh) | 目标服务的测试方法、装置、设备及存储介质 | |
CN112905273A (zh) | 一种服务调用方法和装置 | |
CN109669793B (zh) | 中间件进程内对象调用方法 | |
CN110008032B (zh) | 一种通信方式的实现方法及电子设备 | |
US8775638B2 (en) | Method, computer readable medium and system for scaling medical applications in a public cloud data center | |
CN113722115A (zh) | 调用接口的方法、装置、设备和计算机可读介质 | |
CN112995333B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210511 |
|
RJ01 | Rejection of invention patent application after publication |