thrift协议与传输选择

协议

  • Thrift 可以让用户选择客户端与服务端之间传输通信的消息协议类别,如我们前面所讲总体划分为文本 (text) 和二进制 (binary) ,为节约带宽,提高传输效率,一般情况下使用二进制类型的为多数,有时还会使用基于文本类型的协议,这需要根据项目 / 产品中的实际需求。常用协议有以下几种:

    1. thrift.protocol.TBinaryProtocol
二进制编码格式进行数据传输

客户端构建方式:
protocol = TBinaryProtocol.TBinaryProtocol(transport)
服务端构建方式:
pfactory = TBinaryProtocol.TBinaryProtocolFactory()
    1. thrift.protocol.TCompactProtocol
高效率的、密集的二进制编码格式进行数据传输,推荐使用

客户端构建方式:
protocol = TCompactProtocol.TCompactProtocol(transport)
服务端构建方式:
pfactory = TCompactProtocol.TCompactProtocolFactory()
    1. thrift.protocol.TJSONProtocol
使用 JSON 的数据编码协议进行数据传输

客户端构建方式:
protocol = TJSONProtocol.TJSONProtocol(transport)
服务端构建方式:
pfactory = TJSONProtocol.TJSONProtocolFactory()

传输

常用的传输层有以下几种:

    1. thrift.transport.TSocket
使用阻塞式 I/O 进行传输,是最常见的模式

客户端构建方式:
transport = TSocket.TSocket('127.0.0.1', 8888)
服务端构建方式:
transport = TSocket.TServerSocket('127.0.0.1', 8888)
    1. 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()

你可能感兴趣的:(thrift协议与传输选择)