一、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、運行服務和客戶端。