Thrift架構

基本概念

輕量級、跨語言的RPC框架數組

功能特色服務器

  • 基於IDL(接口描述語言)生成跨語言的RPC clients and servers,支持超過20種語言
  • 支持二進制的高性能的編解碼框架
  • 支持NIO的底層通訊
  • 相對簡單的服務調用模型

Thrift架構

在介紹Thrift架構前,先了解下通常RPC框架的組成結構網絡

RPC組成結構

 RPC組成結構
包括服務器端發佈和調用處理組件,網絡IO組件,協議編解碼組件,客戶端調用組件,客戶端代理組件等等架構

Thrift架構

enter description here
enter description here
各部分解釋可看圖中英文,釋義補充:
一、用戶自定義類型序列化方式將在經過IDL生成的代碼中實現,實際也是根據struct中的各個field調用TProtocol的基礎類型序列化實現
二、RPC stub中已經提供了Service Client,其做用是構造Thrift調用參數,發起調用,解析結果;而白色部分需用戶本身寫的Client是實例化TProtocol、TTransport組件,設置業務參數,經過調用Service Client發起請求框架

Thrift組件

TProtocol 協議和編解碼組件
TTransport IO傳輸組件
TProcessor 服務調用處理組件
TServer,服務器網絡IO
IDL 服務描述組件,負責生產跨平臺客戶端異步

IDL 服務描述語言

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

參考

http://blog.csdn.net/iter_zc/...代理

我的博客:https://my.oschina.net/hebaod...

相關文章
相關標籤/搜索