【Java架構】Thrift簡介

啓示錄

對於異構系統的思考
Thrift,二進制,基於Http協議高性能,但只是解決通信問題
異構:如果理解成不同語音不同框架
那整合就不能只考慮通信,還要思考負載均衡、熔斷器、服務發現

淺談Thrift

1.概述

Apache Thrift是一個多語言並存的異構系統之間的RPC調用方案,當然也可以作爲同構系統之間的RPC方案。

2.優勢

對比XML-RPC/JSON-RPC/SOAP與WSDL協議棧實現的RPC方案,有着非常明顯的性能優勢,原因在於,Thrift是採用二進制編碼協議,使用TCP/IP傳輸協議的一種RPC實現,而XML-RPC/JSON-RPC/SOAP與WSDL協議棧採用文本協議,WSDL的實現WebService採用HTTP作爲傳輸協議,對於網絡數據傳輸,TCP/IP協議的性能要高於HTTP協議,不僅因爲HTTP協議是應用層協議,HTTP協議傳輸內容除了應用數據本身之外,還有響應狀態碼、Header信息等。

3.執行流程

在這裏插入圖片描述

Transport:數據傳輸層
1.TSocket與TIOStreamTransport基於阻塞I/O模型實現,每次請求獨佔一個連接,效率比較低

2.TnonblockingTransort、TNonblockingSocket這兩個類對應着非阻塞I/O實現。

3.TMemoryInputTransport封裝了一個字節數組byte[]來做輸入流的封裝,TMemoryBuffer使用字節數組輸出流ByteArrayOutputStream做輸出流的封裝

4.TFramedTransport則封裝了TMemoryInputTransport做輸入流,封裝TByteArrayOutPutStream做輸出流,作爲內存讀寫緩存區的一個封裝

5.TFastFramedTransport是內存利用率更高的一個內存讀寫緩存區,它使用自動增長的byte,而不是每次都新建一個byte[],提高了內存使用率

Protocol:數據傳輸協議
1.TbinaryProtocol:二進制格式傳輸協議

2.TCompactProtocol:壓縮二進制格式傳輸協議

3.TJSONProtocol:JSON格式傳輸協議

4.TSimpleJSONProtocol:簡單的JSON格式數據傳輸協議

5.TDebugProtocol:調試時使用的文本傳輸協議

Processor:處理器
Thrift通過使用編寫的Thrift IDL描述文件來自動生成Processor,它從負責從輸入的Protocol讀取數據,將其傳遞給處理程序,並將結果發送到負責輸出的Protocol

其他

PHP用Sidecar模式可以添加註冊中心,解決負載調用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章