Thrift协议与传输选择
1 協(xié)議
Thrift 可以讓用戶選擇客戶端與服務(wù)端之間傳輸通信的消息協(xié)議類別,如我們前面所講總體劃分為文本 (text) 和二進制 (binary) ,為節(jié)約帶寬,提高傳輸效率,一般情況下使用二進制類型的為多數(shù),有時還會使用基于文本類型的協(xié)議,這需要根據(jù)項目 / 產(chǎn)品中的實際需求。常用協(xié)議有以下幾種:
-
thrift.protocol.TBinaryProtocol
二進制編碼格式進行數(shù)據(jù)傳輸
客戶端構(gòu)建方式:
protocol = TBinaryProtocol.TBinaryProtocol(transport)服務(wù)端構(gòu)建方式:
pfactory = TBinaryProtocol.TBinaryProtocolFactory() -
thrift.protocol.TCompactProtocol
高效率的、密集的二進制編碼格式進行數(shù)據(jù)傳輸,推薦使用
客戶端構(gòu)建方式:
protocol = TCompactProtocol.TCompactProtocol(transport)服務(wù)端構(gòu)建方式:
pfactory = TCompactProtocol.TCompactProtocolFactory() -
thrift.protocol.TJSONProtocol
使用 JSON 的數(shù)據(jù)編碼協(xié)議進行數(shù)據(jù)傳輸
客戶端構(gòu)建方式:
protocol = TJSONProtocol.TJSONProtocol(transport)服務(wù)端構(gòu)建方式:
pfactory = TJSONProtocol.TJSONProtocolFactory()
2 傳輸
常用的傳輸層有以下幾種:
-
thrift.transport.TSocket
使用阻塞式 I/O 進行傳輸,是最常見的模式
客戶端構(gòu)建方式:
transport = TSocket.TSocket('127.0.0.1', 8888)服務(wù)端構(gòu)建方式:
transport = TSocket.TServerSocket('127.0.0.1', 8888) -
thrift.transport.TTransport.TBufferedTransport
原始的socket方式效率不高,Thrift提供了封裝的加了緩存的傳輸控制,推薦方式
客戶端構(gòu)建方式:
transport = TSocket.TSocket('127.0.0.1', 8888) transport = TTransport.TBufferedTransport(transport)服務(wù)端構(gòu)建方式:
transport = TSocket.TServerSocket('127.0.0.1', 8888) tfactory = TTransport.TBufferedTransportFactory()
總結(jié)
以上是生活随笔為你收集整理的Thrift协议与传输选择的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Thrift的接口定义语言IDL
- 下一篇: Thrift的服务器和客户端Python