框架|Thrift 探秘
Posted 是非经过不知难
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了框架|Thrift 探秘相关的知识,希望对你有一定的参考价值。
1
首先 RPC的全称是:Remote Procedure Call,翻译之后就是“远程过程调用”。
顾名思义,远程,即非本地,也就是调用发起方与响应方并不在一起;过程,可以理解为功能执行,这一过程不仅包括功能的实现,也包括序列化、解码、IO等等,凡是能想到的需要的都可以包括在内;调用,即找到对方并完成整个过程。Thrift本身作为一个框架,对于解决RPC中遇到的问题提供了一种方案。
2
环境:JDK 1.8.0_251
Mac16pro 10.15.4 (19E287)
安装:
无脑 brew install thrift 注意过程可能比较耗时,下载可能失败,重试就OK了
thrift --gen java testThrift.thrift,会在当前目录下生成gen-java目录,你要的那些代码就在这个目录里面
除此之外,还需要编写ClientServer的代码,类似于Socket通信,但无需自己进行监听和处理请求。
Server端:
Client端:
启动Server、Client:
观察到通信结果如下:
3
可以看到生成的HelloWorld里主要有以下几个类:
Client的异步实现AsyncClient的内容如下:
4
整个通信过程类似于网络的七层协议中的拆包与装包过程,所以双方必须保证各个层的协议一致才能正确通信,其中协议类主要为TProtocol的子类,传输层为TTransport的子类最终所有的数据都会被封装成TMessage的方式进行传输,TMessage由三部分组成:名称、类型、序列号。
整个通信过程如下图所示:
以上是关于框架|Thrift 探秘的主要内容,如果未能解决你的问题,请参考以下文章