Thrift 的各項傳輸協議和Socket方式及各種Server的特性

 
Thrift 的各項傳輸協議和Socket方式及各種Server的特性
(1).支持的傳輸格式
TBinaryProtocol   二進制格式
TCompactProtocol  壓縮格式
TJSONProtocol     JSON格式
TSimpleJSONProtocol 提供JSON只寫協議,生成的文件很容易通過腳本語言解析
TDebugProtocol     使用易懂的可讀的文本格式以便於debug
(2). 支持的數據傳輸方式
TSocket     阻塞式socket
THttpTransport 採用HTTP傳輸協議進行數據傳輸
TFramedTransport 以frame爲單位傳輸,非阻塞式服務中使用
TFileTransport 以文件形式進行傳輸
TMemoryTransport 將內存用於I/0,
TZlibTransport 使用zlib進行壓縮。
TBufferedTransport 對某個transport對象操作的數據進行buffer,即從buffer中讀取數據進行傳輸,或將數據直接寫入到buffer
(3). 支持的服務模型[主要是服務端類型]
TSimpleServer 簡單的單線程服務模型,常用於測試
TThreadedServer 多線程服務模型使用標準的阻塞式IO,每個請求創建一個線程
TThreadPoolServer 多線程服務模型使用標準的阻塞式IO,預先創建一組線程處理請求
TNonblockingServer 多線程服務模型使用非阻塞IO(需要用TFramedTransport數據傳輸方式 )
ps:什麼叫阻塞與非阻塞?
阻塞IO:socket的阻塞意味着必須要做完IO包括錯誤纔會返回
非阻塞IO:無論操作是否完成都會立刻返回,需要通過其他方式來判斷具體操作是否成功
在網絡阻塞嚴重的時候,網絡層沒有足夠的內存來進行寫操作,這時候就會出現寫不成功的情況,阻塞情況下會儘可能(有可能被中斷)等待到數據全部發送完畢, 對於非阻塞的情況就是一次寫多少算多少,沒有中斷的情況下也還是會出現write 到一部分的情況.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章