一、序列化协议
Thrift可以让你选择客户端与服务端之间传输通信协议的类别,在传输协议上总体上划分为文本(text)和二进制(binary)传输协议, 为节约带宽,提供传输效率,一般情况下使用二进制类型的传输协议为多数,但有时会还是会使用基于文本类型的协议,这需要根据项目/产品中的实际需求(例如:调试的时候)。
序列化协议类型:
TBinaryProtocol:二进制编码格式进行数据传输。
TCompactProtocol:高效密集型的二进制序列化协议,使用Variable-Length Quantity (VLQ) 编码对数据进行压缩。
TJSONProtocol:使用JSON的数据编码协议进行数据传输。
TSimpleJSONProtocol:这种节约只提供JSON只写的协议,适用于通过脚本语言解析。
TTupleProtocol(继承自TCompactProtocol)
TDebugProtocol:在开发的过程中帮助开发人员调试用的,以文本的形式展现方便阅读。
RPC框架中一般使用 TCompactProtocol。
二、传输层
Thrift中所有的传输层协议的基类是TTransport。另外,需要说明的一点是,thrift是基于TCP协议的。
传输协议类型:
TSocket:使用堵塞式I/O进行传输,也是最常见的模式。
TFramedTransport:使用非阻塞方式,以frame为单位进行传输,类似于Java中的NIO。
TFileTransport:以文件形式进行传输,虽然