thrift協(xié)議與傳輸選擇

協(xié)議

  • Thrift 可以讓用戶選擇客戶端與服務(wù)端之間傳輸通信的消息協(xié)議類別,如我們前面所講總體劃分為文本 (text) 和二進(jìn)制 (binary) ,為節(jié)約帶寬,提高傳輸效率,一般情況下使用二進(jìn)制類型的為多數(shù),有時(shí)還會(huì)使用基于文本類型的協(xié)議,這需要根據(jù)項(xiàng)目 / 產(chǎn)品中的實(shí)際需求。常用協(xié)議有以下幾種:

    1. thrift.protocol.TBinaryProtocol
二進(jìn)制編碼格式進(jìn)行數(shù)據(jù)傳輸

客戶端構(gòu)建方式:
protocol = TBinaryProtocol.TBinaryProtocol(transport)
服務(wù)端構(gòu)建方式:
pfactory = TBinaryProtocol.TBinaryProtocolFactory()
    1. thrift.protocol.TCompactProtocol
高效率的、密集的二進(jìn)制編碼格式進(jìn)行數(shù)據(jù)傳輸,推薦使用

客戶端構(gòu)建方式:
protocol = TCompactProtocol.TCompactProtocol(transport)
服務(wù)端構(gòu)建方式:
pfactory = TCompactProtocol.TCompactProtocolFactory()
    1. thrift.protocol.TJSONProtocol
使用 JSON 的數(shù)據(jù)編碼協(xié)議進(jìn)行數(shù)據(jù)傳輸

客戶端構(gòu)建方式:
protocol = TJSONProtocol.TJSONProtocol(transport)
服務(wù)端構(gòu)建方式:
pfactory = TJSONProtocol.TJSONProtocolFactory()

傳輸

常用的傳輸層有以下幾種:

    1. thrift.transport.TSocket
使用阻塞式 I/O 進(jìn)行傳輸,是最常見的模式

客戶端構(gòu)建方式:
transport = TSocket.TSocket('127.0.0.1', 8888)
服務(wù)端構(gòu)建方式:
transport = TSocket.TServerSocket('127.0.0.1', 8888)
    1. 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()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容