Thrift 源碼學習一——源碼結構

Thrift 客戶端與服務端的交互圖

thrift.jpg 

源碼結構

  1. 傳輸層 TTransport:api

    1. TTransport:客戶端傳輸層抽象基礎類,read、write、flush、close 等方法數組

    2. TSocket 與 TNonBlockingSocket:分別是基於 BIO 和 NIO 客戶端傳輸類異步

    3. TServerSocket 與 TNonBlockingServerSocket:分別是基於 BIO 和 NIO 服務端傳輸類編碼

    4. TZlibTransport:spa

    5. TSaslClientTransport 與 TSaslServerTransport:提供 SSL 校驗線程

  2. 協議層 Protocol:server

    1. TBinaryProtocol:二進制流傳輸協議類,把各種型轉換成 byte 數組,交給 TTransport 傳輸對象

    2. TCompactProtocol:使用 Variable-Length Quantity(VLQ)編碼對數據進行壓縮(壓縮方法二進制協議類,將 Integer 按 ZigZag 壓縮)blog

    3. TTupleProtocol:繼承自 TCompactProtocol,Struct 使用時更省空間繼承

    4. TJSONProtocol:JSON 格式協議類,將數據封裝成 JSON 格式,再轉成 byte 數組交給傳輸層

    5. TSimpleJSONProtocol:JSON 格式協議類,但只支持寫的功能

  3. 處理層 Processor:

    1. TProcessor:基礎接口,process(TProtocol in, TProtocol out)

    2. TBaseProcessor:基礎抽象類,持有 processMap 對象,key 爲方法名,value 爲方法

    3. Processor:由聲明的 IDL 生成,實現 TProcessor 接口並繼承了 TBaseProcessor 類

    4. TAsyncProcessor:異步處理接口

    5. TBaseAsyncProcessor:異步處理抽象類

    6. AsyncProcessor:由聲明的 IDL 生成,實現 TAsyncProcessor 接口並繼承 TAsyncProcessor 類

  4. 服務層 Server:

    1. TServer:基礎抽象類,相似一個容器,持有 TProcessor、TTransport、TProtocol 的工廠對象,提供 server() 方法,用於啓動服務,stop() 用於中止服務

    2. TSimpleServer:單線程阻塞式服務

    3. TNonblockingServer:支持非阻塞單線程服務模型,基於 NIO 的 select 實現

    4. TThreadPoolServer:專門的線程接受請求並交給線程池處理,阻塞式線程池模型

相關文章
相關標籤/搜索