RPC框架Thrift架構描述

一、Thritf API的CS架構


Thrift包含創建CS架構程序的完整技術棧。最上層是從IDL生成的代碼,你只需要自己實現服務器端的業務代碼部分就可以。業務規則的實現類指需要實現生成的Iface接口就可以。Thrif有內建的數據類型,創建的數據結構作爲發送、接收的結果。protocol和translate layer是Thrift運行時的一部分,Thrift包括將protocol和translates綁定到一起的基礎部件。


二、thrift支持的協議

  • TBinaryProtocol – 一個簡單的二進制格式,簡單但沒有進行空間優化。比text協議要快但是難於調試。
  • TCompactProtocol – 一個壓縮的二進制格式,通常處理起來也很高效。
  • TDebugProtocol – 一個便於人閱讀的文本格式,用來幫助調試。
  • TDenseProtocol – 類似於TCompactProtocol, 但傳輸的內容不包括元數據。
  • TJSONProtocol – 使用JSON來編碼數據。
  • TSimpleJSONProtocol – 一個剝離了元數據的JSON格式,只寫協議且不能有Thritft自己進行解釋。適合於腳本語言。

三、thrift支持的傳輸協議

  • TFileTransport – 寫入文件
  • TFramedTransport – 使用非阻塞服務時,需要這個傳輸協議。它以貞的形式發送數據,且每一幀的前面包含長度信息。
  • TMemoryTransport – 使用內存作爲I/O。
  • TSocket – 使用阻塞的套接字I/O。
  • TZlibTransport – 用zlib進行壓縮,與其他傳輸工具配合使用。

四、thrift支持的服務

  • TNonblockingServer – 使用非阻塞I/O的多線程服務(java是使用NIO實現)。這個服務必須使用TFramedTransport
  • TSimpleServer – 使用阻塞I/O的單線程服務,測試的時候特別有用。
  • TThreadPoolServer – 使用阻塞I/O多線程服務。

五、使用Thrift的典型工作流程


1、設計你的系統和服務,是接收數據、發送數據還是遠程執行一些操作。

2、使用IDL編寫接口描述文檔,以.thrift爲擴展名。服務描述關於函數、參數及返回值、是否拋出異常等信息,這一個文件裏面可以提供多個服務的描述。

3、使用thrift命令來生成各種語言的庫。

4、實現服務器端和客戶端。第一步是實現服務幷包裝在服務代碼中,這些代碼依賴於Thrift庫和生成的代碼,你需要選擇合適的processor,transport,和protocol,並且增加實現具體功能的代碼。第二步是實現客戶端,主要是擇合適的processor,transport,和protocol並且實例化由編譯器生成的服務類。

5、運行服務和客戶端。





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