Apache Thrift 介绍

x33g5p2x  于2022-06-06 转载在 其他  
字(1.9k)|赞(0)|评价(0)|浏览(223)

一 点睛

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 工作模式

| <br>服务端的工作模式<br> | <br>简介<br> |
| <br>TSimpleServer<br> | <br>单线程服务模式,通常在测试时使用<br> |
| <br>TThreadPoolServer<br> | <br>1 阻塞式I/O<br><br>2 多线程服务模式<br> |
| <br>TNonblockingServer<br> | <br>1 非阻塞式I/O<br><br>2 多线程服务模式<br><br>3 需要结合使用 TFramedThransport 传输方式<br> |

三 Thrift 传输方式

| <br>传输方式<br> | <br>简介<br> |
| <br>TSocket<br> | <br>使用阻塞式 socket 传输数据<br> |
| <br>TFramedThransport <br> | <br>1 使用阻塞式工作模式<br><br>2 以 frame 为单位传输数据<br> |
| <br>TFileTransport<br> | <br>以文件形式进行传输数据<br> |
| <br>TMemoryThransport<br> | <br>使用内存I/O 形式传输<br> |
| <br>TZlibThransport<br> | <br>1 使用 zlib 压缩数据<br><br>2 需要与其他传输方式联合使用<br><br>3 不支持 Java<br> |

四 Thrift 传输协议

| <br>传输协议<br> | <br>简介<br> |
| <br>TBinaryProtocol<br> | <br>二进制格式<br> |
| <br>TCompactProtocol<br> | <br>压缩格式<br> |
| <br>TJSONNProtocol<br> | <br>JSON 格式<br> |
| <br>TSimpleJSONProtocol<br> | <br>1 JSON 格式<br><br>2 提供 JSON 只写协议,适用于通过脚本语言解析<br> |
| <br>TDebugProtocol<br> | <br>使用易读的文本格式,便于 debug<br> |

五 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

相关文章