加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Golang通过Thrift框架完美实现跨语言调用

发布时间:2021-11-20 19:18:02 所属栏目:教程 来源:互联网
导读:一、开发前准备 1、安装golang的Thrift包: 2、产生协议库: 3、生成开发库 二、go语言实现 1、服务器端 2、客户端程序 三、Java版实现 1、Java服务器版 2、Java客户端版 每种语言都有自己最擅长的领域,Golang 最适合的领域就是服务器端程序。 做为服务器端
一、开发前准备
1、安装golang的Thrift包:
2、产生协议库:
3、生成开发库
 
二、go语言实现
1、服务器端
2、客户端程序
 
三、Java版实现
1、Java服务器版
2、Java客户端版
 
  每种语言都有自己最擅长的领域,Golang 最适合的领域就是服务器端程序。
 
  做为服务器端程序,需要考虑性能同时也要考虑与各种语言之间方便的通讯。采用http协议简单,但性能不高。采用TCP通讯,则需要考虑封包、解包、粘包等等很多因素,而且想写个高效的TCP服务,也很难。
 
  其实,对于此类需求,采用RPC(Remote Procedure Call Protocol)编程最靠谱。使用 RPC 编程被认为是在分布式环境中运行的客户机和服务器应用程序之间进行可靠通信的最强大、最高效的方法之一。
 
  Golang内置了对RPC支持,但只能适用于go语言程序之间调用。如果go语言能使用Thrift开发,那么就如虎添翼了。可惜,thrift虽然很早就提供了golang的代码,但一直都存在各种问题无法正确执行……直到0.9.1版本的发布!
 
  最近,Apache Thrift 0.9.1正式发布了。新版的Thrift终于对Golang提供了完美的支持。经过实验,服务器端、客户端已经完美支持跨语言调用,且性能、尤其是内存占用上,编译型语言的特点展现出来,比java版的实现强了很多。
 
  下面,我们采用golang实现一个Thrift的Server端和Client端程序。
 
一、开发前准备
 
1、安装golang的Thrift包:
 
go get git.apache.org/thrift.git/lib/go/thrift
 
2、产生协议库:
 
  这是我定义的测试用IDL,为检验兼容性,采用了多种数据结构:
 
RpcService.thrift
 
namespace go demo.rpc
namespace java demo.rpc
 
// 测试服务
service RpcService {
 
 // 发起远程调用
 list<string> funCall(1:i64 callTime, 2:string funCode, 3:map<string, string> paramMap),
 
}
 
3、生成开发库
 
  下载开发库编译器 http://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.1/thrift-0.9.1.exe
 
  thrift  -gen go RpcService.thrift
 
  自动生成出的源码结构如下:
 
 
 
其中 constants.go、rpc_service.go、ttypes.go 是协议库,编写程序需要用到。rpc_service-remote.go 是自动生成的例程,可以不用。


(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读