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 不仅能存储数据,还能直接对数据进行网络传输。
| <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> |
| <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> |
| <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> |
http://archive.apache.org/dist/thrift
windows 下的 0.11.0
C:\Users>thrift -version
Thrift version 0.11.0
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/chengqiuming/article/details/125112451
内容来源于网络,如有侵权,请联系作者删除!