本发明涉及跨语言调用领域,具体涉及一种基于golang反射技术的rpc跨语言调用服务治理方法。
背景技术:
在微服务日益成熟的今天,服务进程间的通信管理愈发重要。目前主流的进程间通信的方法主要有两种,分别是http协议和rpc远程函数调用协议。目前主流的编程语言都支持该语言不同进程间的rpc调用通信。
然而在微服务系统架构中,各组件可能使用不同的编程语言进行开发,使用http协议可以解决跨语言间的服务通信问题,但是http协议是基于文本的网络协议,性能较差,网络开销大,不适用于内网服务间的通信,适用于对外网提供服务;rpc基于二进制协议的通信,性能好,网络开销小,非常适用于企业内网的服务间通信。跨语言的rpc调用主要依赖于grpc与thrift两个工具,然而grpc与thrift并无对rpc通信进行服务治理操作,这使得跨语言的服务调用鲁棒性差。
技术实现要素:
本发明的目的在于克服现有技术问题,提出一种基于golang反射技术的rpc跨语言调用服务治理方法。
为达成上述目的,本发明采用如下技术方案:
一种基于golang反射技术的rpc跨语言调用服务治理方法,包括如下:
(1)定义进程间的通信协议:
使用grpc或thrift工具定义进程间的通信协议,即接口描述文件;
(2)生成基础代码:
使用grpc或thrift工具生成生产者服务器端的基础代码,使用grpc或thrift工具生成消费者客户端的基础代码;
(3)服务器端的本地ip与端口注册到服务注册中心:
服务器端基础代码对接口描述文件的接口函数进行实现,启动服务器后,将服务器端的本地ip与使用端口信息注册到服务注册中心;
(4)客户端将负载均衡到不同的服务器端服务上:
客户端基础代码接口描述文件的接口函数进行调用,启动客户端后,从服务注册中心发现服务器端机器集群,将通信请求负载均衡到不同的服务器端服务上。
进一步的,所述rpc跨语言调用服务治理方法还包括,
客户端通过golang语言的反射机制,将rpc通信接口转换成http通信接口;将客户端对接到api网关上,对外网提供http接口服务。
进一步的,所述生产者服务器端的基础代码grpc或thrift支持的任意编程语言。
进一步的,所述消费者客户端的基础代码为golang编程语言。
进一步的,所述服务注册中心通过zookeeper、etcd、consul中的任意一种或者两种及其以上的分布式协调服务工具实现服务。
通过本发明的基于golang反射技术的rpc跨语言调用服务治理方法,与现有技术,可以达到以下的有益效果:
(1)在微服务内部的服务治理中,支持跨语言的rpc调用;
(2)提升服务进程间通信的效率和性能;
(3)提升微服务系统架构的鲁棒性;
(4)同时通过golang反射技术,连接api网关,对外提供统一的http接口服务。
附图说明
此处所说明的附图用来提供对发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明基于golang反射技术的rpc跨语言调用服务治理方法的原理示意图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明实施例提供了一种基于golang反射技术的rpc跨语言调用服务治理方法,图1为本发明基于golang反射技术的rpc跨语言调用服务治理方法的原理示意图,系统包括服务注册中心、api网关、客户端1、客户端2、服务器集群1、服务器集群2。
所述的rpc跨语言调用服务治理方法包括如下:
(1)定义进程间的通信协议:
使用grpc或thrift工具定义进程间的通信协议,即接口描述文件;
(2)生成基础代码:
使用grpc或thrift工具生成生产者服务器端的基础代码,使用grpc或thrift工具生成消费者客户端的基础代码;
(3)服务器端的本地ip与端口注册到服务注册中心:
服务器端基础代码对接口描述文件的接口函数进行实现,启动服务器后,将服务器端的本地ip与使用端口信息注册到服务注册中心;
(4)客户端将负载均衡到不同的服务器端服务上:
客户端基础代码接口描述文件的接口函数进行调用,启动客户端后,从服务注册中心发现服务器端机器集群,将通信请求负载均衡到不同的服务器端服务上。
进一步的,所述rpc跨语言调用服务治理方法还包括,
客户端通过golang语言的反射机制,将rpc通信接口转换成http通信接口;将客户端对接到api网关上,对外网提供http接口服务。
进一步的,所述生产者服务器端的基础代码grpc或thrift支持的任意编程语言。
进一步的,所述消费者客户端的基础代码为golang编程语言。
进一步的,所述服务注册中心通过zookeeper、etcd、consul中的任意一种或者两种及其以上的分布式协调服务工具实现服务。
上述说明描述了本发明的优选实施例,但应当理解本发明并非局限于上述实施例,且不应看作对其他实施例的排除。通过本发明的启示,本领域技术人员结合公知或现有技术、知识所进行的改动也应视为在本发明的保护范围内。
技术特征:
技术总结
本发明公开了基于golang反射技术的rpc跨语言调用服务治理方法,包括使用gRPC或thrift工具定义进程间的通信协议;使用gRPC或thrift工具生成生产者服务器端的基础代码和消费者客户端的基础代码;服务器端代码对接口描述文件的接口函数进行实现,启动服务器后,将本地IP与端口注册到服务注册中心;客户端代码对接口描述文件的接口函数进行调用,启动客户端后,从服务注册中心发现服务器端机器集群,将通信请求负载均衡到不同的服务器端服务上。客户端通过golang语言的反射机制,将rpc通信接口转换成http通信接口;将客户端对接到api网关上,对外网提供http接口服务。本发明方法支持跨语言的rpc调用;提升服务进程间通信的效率和性能以及微服务系统架构的鲁棒性。
技术研发人员:刘翔鹏;肖龙源;李稀敏;蔡振华;刘晓葳;朱敬华;谭玉坤
受保护的技术使用者:厦门快商通信息技术有限公司
技术研发日:2018.02.08
技术公布日:2018.09.07