一种基于微服务架构的RPC通信方法及设备技术

技术编号:28429621 阅读:29 留言:0更新日期:2021-05-11 18:39
本发明专利技术公开了一种基于微服务架构的RPC通信方法及设备,该方案包括:采用HTTP协议进行所述RPC通信,兼容处理微服务单元间的差异;通过识别所述RPC的服务端接口时指定的参数序列化方式,对调用所述RPC服务时传入的参数采用不同的方式进行序列化;反序列化处理所述RPC通信层的返回值;通过动态代理的机制,基于所述识别RPC的服务端接口,自动生成所述RPC的代理实现类,实现所述RPC的通信。

【技术实现步骤摘要】
一种基于微服务架构的RPC通信方法及设备
本说明书实施例涉及微服务架构
,尤其涉及一种基于微服务架构的远程过程调用(RemoteProcedureCall,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的通信。微服务架构下,不同的微服务单元可能采用不同的技术栈,比如Netcore、Java或者其他编程语言,但通信层都会选择HTTP或TCP协议,所以本专利技术采用HTTP协议进行RPC通信,兼容处理微服务单元间的差异,在Java代码中一样可以调用NetCore发布的RPC。通过识别RPC的服务端接口时指定的参数序列化方式,对调用RPC服务时传入的参数采用不同的方式进行序列化。考虑到序列化方式可能会是自定义的序列化方式,为了支持进行自定义序列化,本申请提出:若序列化的方式为自定义的序列化方式,则调用自定义的序列化器进行序列化。基于此,本申请实施例除了支持主流的Json、ProtoBuf等序列化方式,还支持进行自定义序列化,保证特殊类型参数也可以进行通信。为了支持泛型类型的返回值,需要反序列化处理RPC通信层的返回值。但是,泛型类型的的值无法直接反序列化。为了处理这种返回值,本申请实施例提出:获取泛型类型的参数,并且遍历泛型类型的参数;若泛型类型为动态类型,则传入构造函数进行替换,得到对应的新的泛型实体,由此实现反序列化。通过动态代理的机制,基于识别RPC的服务端接口,自动生成RPC的代理实现类,实现RPC的通信。其中,自动生成RPC的代理实现类,具体包括:调用获取RPC的代理实现类的方法,自动生成RPC的代理实现类。在自动生成RPC的代理实现类之前,还包括:发送RPC的请求,调用RPC的服务端。例如:通过动态代理的机制,在客户端通过识别RPC的服务端接口Interface,自动生成实现RPCInterface的代理实现类RPCClient。部分示例性代码如下所示:Proxy.newProxyInstance(rpcInterface.getClassLoader(),newClass[]{rpcInterface},newDynamicInvocationHandler());在代理实现类RPCClient的具体实现逻辑中,去发送RPC请求,调用RPC的服务端。这样服务调用者无需关心RPC通信层的开发,只需调用获取代理类的方法,便可将分布式的服务当作本地服务调用。调用方开发人员不需要知晓服本文档来自技高网...

【技术保护点】
1.一种基于微服务架构的远程过程调用RPC通信方法,其特征在于,所述方法包括:/n采用HTTP协议进行所述RPC通信,兼容处理微服务单元间的差异;/n通过识别所述RPC的服务端接口时指定的参数序列化方式,对调用所述RPC服务时传入的参数采用不同的方式进行序列化;/n反序列化处理所述RPC通信层的返回值;/n通过动态代理的机制,基于所述识别RPC的服务端接口,自动生成所述RPC的代理实现类,实现所述RPC的通信。/n

【技术特征摘要】
1.一种基于微服务架构的远程过程调用RPC通信方法,其特征在于,所述方法包括:
采用HTTP协议进行所述RPC通信,兼容处理微服务单元间的差异;
通过识别所述RPC的服务端接口时指定的参数序列化方式,对调用所述RPC服务时传入的参数采用不同的方式进行序列化;
反序列化处理所述RPC通信层的返回值;
通过动态代理的机制,基于所述识别RPC的服务端接口,自动生成所述RPC的代理实现类,实现所述RPC的通信。


2.根据权利要求1所述的方法,其特征在于,所述反序列化处理所述RPC通信层的返回值,具体包括:
获取泛型类型的参数,遍历所述泛型类型的参数;
若所述泛型类型为动态类型,则传入构造函数进行替换,得到对应的新的泛型实体,实现反序列化。


3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述序列化的方式为自定义的序列化方式,则调用自定义的序列化器进行所述序列化。


4.根据权利要求1所述的方法,其特征在于,所...

【专利技术属性】
技术研发人员:霍亮
申请(专利权)人:浪潮通用软件有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1