官网:https://thrift.apache.org/
1 概览
我们把他换成自己容易理解的方式:

2 分层解析
2.1 Transport(传输层)
传输层为网络的读写提供了一个简单的抽象。这使得Thrift能够将底层传输与系统的其他部分解耦(例如,序列化/反序列化)。
接口支持的方法:
- open
- close
- read
- write
- flush
可传输的底层协议:
2.2 Protocol(协议层)
协议层抽象定义了一种机制来将内存中的数据结构映射到连线格式。换句话说,协议指定数据类型如何使用底层的Transport对自己进行编码/解码。因此,协议实现控制编码方案并负责(反)序列化。这种意义上的协议的一些例子包括JSON、XML、纯文本、压缩二进制文件等。
接口支持的方法:
写(编码)方法:
- writeMessageBegin(name, type, seq)
- writeMessageEnd()
- writeStructBegin(name)
- writeStructEnd()
- writeFieldBegin(name, type, id)
- writeFieldEnd()
- writeFieldStop()
- writeMapBegin(ktype, vtype, size)
- writeMapEnd()
- writeListBegin(etype, size)
- writeListEnd()
- writeSetBegin(etype, size)
- writeSetEnd()
- writeBool(bool)
- writeByte(byte)
- writeI16(i16)
- writeI32(i32)
- writeI64(i64)
- writeDouble(double)
- writeString(string)
读(解码)方法:
- name, type, seq = readMessageBegin()
readMessageEnd()
- name = readStructBegin()
readStructEnd()
- name, type, id = readFieldBegin()
readFieldEnd()
- k, v, size = readMapBegin()
readMapEnd()
- etype, size = readListBegin()
readListEnd()
- etype, size = readSetBegin()
readSetEnd()
- bool = readBool()
- byte = readByte()
- i16 = readI16()
- i32 = readI32()
- i64 = readI64()
- double = readDouble()
- string = readString()
支持的编码协议:
2.3 Processor(处理器层)
处理器封装了从输入流读取数据和向输出流写入数据的能力。输入和输出流由Protocol对象表示。
接口方法样例:
2.4 Server(应用服务层)
一个服务器集合了上面描述的所有不同的特性:
- 创建一个运输
- 为传输创建输入/输出协议
- 创建基于输入/输出协议的处理器
- 等待传入的连接,并将它们交给处理器
3 thrift安装
下载页:https://thrift.apache.org/download
下载Windows版本:

下载后可以直接使用,或者放在固定文件设置环境变量

4 Go使用thrift
4.1 项目结构和依赖安装
依赖安装:
4.2 编写thrift文件并编译
编译:
4.3 服务端代码
4.4 客户端代码
4.5 验证

5 Java使用thrift
5.1 项目结构和依赖
依赖:
5.2 编写thrift文件并编译
编译:
注意:编译完成之后需要将生成的.java文件放到项目结构中的对应位置。
5.3 服务端代码
5.4 客户端代码
6 使用thrift进行Java和Go的远程通信
例如Java做客户端:
参考文章:
https://thrift.apache.org/docs/concepts.html
https://thrift.apache.org/docs/concepts.html
https://blog.csdn.net/pengpengzhou/article/details/114841347
本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/19596.html。