一 点睛
Thrift 是一歀基于 CS 架构的 RPC 框架,最初由 Facebook 研发,2008 年转入 Apache 组织。开发人员可以使用 Thrift 提供的 IDL(接口定义语言)来定义数据结构、异常和接口。IDL 的功能类似 Protobuf 的 message,但 message 只能用于定义数据结构,因此 IDL 比 message 功能更加强大。编写完 IDL 后,就可以通过 Thrift 提供的工具生成各种语言的数据结构(比如 Java 中的类,C 语言中的结构体等)、异常和接口文件。
Thrift 与 Protobuf 相比,除了 IDL 比 messge 更加丰富外,Thrift 还有另外一个巨大的优势,Protobuf 本身只用于消息(message)的编码和解码。也就是说,Protobuf 只能存储 RPC 中的数据,但不能传输数据(必须借助于 Netty、Socket 等通信技术才能传输);而 Thrift 不仅能存储数据,还能直接对数据进行网络传输。
二 Thrift 工作模式
服务端的工作模式 | 简介 |
TSimpleServer | 单线程服务模式,通常在测试时使用 |
TThreadPoolServer | 1 阻塞式I/O 2 多线程服务模式 |
TNonblockingServer | 1 非阻塞式I/O 2 多线程服务模式 3 需要结合使用 TFramedThransport 传输方式 |
三 Thrift 传输方式
传输方式 | 简介 |
TSocket | 使用阻塞式 socket 传输数据 |
TFramedThransport | 1 使用阻塞式工作模式 2 以 frame 为单位传输数据 |
TFileTransport | 以文件形式进行传输数据 |
TMemoryThransport | 使用内存I/O 形式传输 |
TZlibThransport | 1 使用 zlib 压缩数据 2 需要与其他传输方式联合使用 3 不支持 Java |
四 Thrift 传输协议
传输协议 | 简介 |
TBinaryProtocol | 二进制格式 |
TCompactProtocol | 压缩格式 |
TJSONNProtocol | JSON 格式 |
TSimpleJSONProtocol | 1 JSON 格式 2 提供 JSON 只写协议,适用于通过脚本语言解析 |
TDebugProtocol | 使用易读的文本格式,便于 debug |
五 Thrift 下载
1 下载地址
http://archive.apache.org/dist/thrift
2 下载版本
windows 下的 0.11.0
3 将下载的文件配置到环境变量的 PATH 下
4 查看版本,验证是否配置成功
C:\Users\>thrift -version
Thrift version 0.11.0