1 协议
Thrift 可以让用户选择客户端与服务端之间传输通信的消息协议类别,如我们前面所讲总体划分为文本 (text) 和二进制 (binary) ,为节约带宽,提高传输效率,一般情况下使用二进制类型的为多数,有时还会使用基于文本类型的协议,这需要根据项目 / 产品中的实际需求。常用协议有以下几种:
thrift.protocol.TBinaryProtocol
二进制编码格式进行数据传输
客户端构建方式:
protocol = TBinaryProtocol.TBinaryProtocol(transport)
服务端构建方式:
pfactory = TBinaryProtocol.TBinaryProtocolFactory() thrift.protocol.TCompactProtocol
高效率的、密集的二进制编码格式进行数据传输,推荐使用
客户端构建方式:
protocol = TCompactProtocol.TCompactProtocol(transport)
服务端构建方式:
pfactory = TCompactProtocol.TCompactProtocolFactory() thrift.protocol.TJSONProtocol
使用 JSON 的数据编码协议进行数据传输
客户端构建方式:
protocol = TJSONProtocol.TJSONProtocol(transport)
服务端构建方式:
pfactory = TJSONProtocol.TJSONProtocolFactory()
2 传输
常用的传输层有以下几种:
thrift.transport.TSocket
使用阻塞式 I/O 进行传输,是最常见的模式
客户端构建方式:
transport = TSocket.TSocket('127.0.0.1', 8888)
服务端构建方式:
transport = TSocket.TServerSocket('127.0.0.1', 8888) thrift.transport.TTransport.TBufferedTransport
原始的socket方式效率不高,Thrift提供了封装的加了缓存的传输控制,推荐方式
客户端构建方式:
transport = TSocket.TSocket('127.0.0.1', 8888) transport = TTransport.TBufferedTransport(transport)
服务端构建方式:
transport = TSocket.TServerSocket('127.0.0.1', 8888) tfactory = TTransport.TBufferedTransportFactory()