輕量級、跨語言的RPC框架數組
功能特色:服務器
在介紹Thrift架構前,先了解下通常RPC框架的組成結構網絡
包括服務器端發佈和調用處理組件,網絡IO組件,協議編解碼組件,客戶端調用組件,客戶端代理組件等等架構
各部分解釋可看圖中英文,釋義補充:
一、用戶自定義類型序列化方式將在經過IDL生成的代碼中實現,實際也是根據struct中的各個field調用TProtocol的基礎類型序列化實現
二、RPC stub中已經提供了Service Client,其做用是構造Thrift調用參數,發起調用,解析結果;而白色部分需用戶本身寫的Client是實例化TProtocol、TTransport組件,設置業務參數,經過調用Service Client發起請求框架
TProtocol 協議和編解碼組件
TTransport IO傳輸組件
TProcessor 服務調用處理組件
TServer,服務器網絡IO
IDL 服務描述組件,負責生產跨平臺客戶端異步
namespace 定義包名
struct 定義服務接口的參數,返回值使用到的類結構。若是接口的參數都是基本類型,則不須要定義struct
service 定義接口性能
bool 布爾型 byte 8位整數 i16 16位整數 i32 32位整數 i64 64位整數 double 雙精度浮點數 string 字符串 binary 字節數組 list<i16> List集合,必須指明泛型 map<string, string> Map類型,必須指明泛型 set<i32> Set集合,必須指明泛型
生成的類包括5部分spa
接口類型,默認名稱都是Iface。這個接口類型被服務器和客戶端共同使用。服務器端使用它來作頂層接口,編寫實現類。客戶端代碼使用它做爲生成代理的服務接口。會自動生成同步調用和異步調用的兩個接口。
客戶端類型,一個同步調用的客戶端Client,一個異步調用的客戶端AsyncClient
Processor,用來支持方法調用,每一個服務的實現類都要使用Processor來註冊,這樣最後服務器端調用接口實現時能定位到具體的實現類。
方法參數的封裝類,以"方法名_args"命名
方法返回值的封裝類,以"方法名_result"命名.net