前言
這是我們講解Thrift框架的第三篇文章,前兩篇我們講了Thrift作為RPC框架的基本用法以及架構的設計,為了我們更好的使用和理解Thrift框架,接下來,我們將來學習一下Thrift框架提供的名稱空間下的類,
名稱空間
Thrift一共給我們提供了5個名稱空間,看下圖

先講**Transport**名稱空間下的類,這個名稱空間主要是Thrift框架幫我們封裝的一些在不同應用場景下的傳輸層的類,
Transport--傳輸層
我們先看下這個名稱空間下的類,如下圖:

在這些類中,按用途可以分為兩類:
+ 客戶端使用的類-
THttpClient
-
TNamedPipeClientTransport
-
TSocket
-
TTLSSocket
-
TNamedPipeServerTransport
-
TServerSocket
-
TTLSServerSocket
按照傳輸協議可以分為三類:
+ TCP協議-
TSocket
-
TTLSSocket
-
TServerSocket
-
TTLSServerSocket
-
TNamedPipeClientTransport
-
TNamedPipeServerTransport
-
THttpClient
我們可以看到上面一些分類并沒有包含所有的該**Transport**名稱空間下的所有類,那是因為這些類是一種包裝類,它用于包裝上述不同協議、不同用途下的傳輸層的類,它包含一下這些類:
-
TBufferedTransport
-
TFramedTransport
類的繼承關系
分析該名稱空間加下的類,我們可以發現除了一些幫助類外,他們都繼承自一些兩個介面:
- TServerTransport
- TTransport
我們在實際使用程序中,我們可以清晰的通過這兩組介面的子類來區分它們的用途,
協議層 Protocol
so,我們先來看一下大致的類別庫結構:

在協議層中我們經常使用到這些類代表的協議
-
TBinaryProtocol 它是一種二進制格式的傳輸協議,也是框架默認使用的協議
-
TCompactProtocol 它是一種緊湊型的二進制格式傳輸協議
-
TJSONProtocol 它將資料封裝成Json格式進行傳輸,這種格式壓縮率低,我們一般使用上面兩組格式
Thrift提供的傳輸協議一般是夠用的,如果你需要特殊的格式協議,你可以繼承TProtocol抽象類
服務器層 Server
看名稱空間型別結構:

該名稱空間下的型別較少,但它確實撐起Thrift框架的半壁江山,接下來我們來分析一下這個名稱空間僅有的三個非抽象類(還有一個介面,提供服務類處理客戶端訊息前的通知,通過服務器類的set方法進行裝載):
-
TSimpleServer 阻塞式服務器類,即處理一個客戶端請求時,不會再接收其他客戶端的鏈接請求,直到上一個客戶端處理完成
-
TThreadedServer 非阻塞式服務器類,它提供了一個回圈監聽客戶端請求,并將請求客戶端存放到一個客戶端集合中,然后通過另一個執行緒回圈提取請求客戶端,最后利用自定義的執行緒池進行處理請求
-
TThreadPoolServer 非阻塞式服務器類,和上個類一樣,唯一的區別是它利用了. net runtime提供的執行緒池進行處理客戶端請求
總結
Thrift三個重要層面的類別庫簡單說明就到此結束了,接下來,我將說明Thrift在實際應用場景中我們應該注意問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/373642.html
標籤:C#
