thrift原始碼分析-架構設計

cx3ptr發表於2018-12-20

前言

thrift是一個輕量級、跨語言、提供程式碼生成機制的rpc框架,提供了資料傳輸、序列化、應用層處理的清晰抽象。thrift自身已經非常成熟,支援超過二十種語言,一些基礎專案如hadoop也將thrift整合到自己的多語言sdk內,如果你的公司正在進行多語言微服務技術選型,thrift會是一個不錯的選擇。本系列文章會從整體架構、模組原始碼層面進行剖析,力求呈現出一個更具體的thrift框架。

架構圖

thrift原始碼分析-架構設計

模組劃分

拋開語言層面,thrift可分為以下幾個元件,其中傳輸層被細分為低階傳輸層和複寫傳輸層。

  • 程式碼生成器

根據thrift idl檔案生成各個語言程式碼,位於compiler目錄內。

  • 低階傳輸層

靠近網路層、作為rpc框架接收報文的入口,提供各種底層實現如socket建立、讀寫、接收連線等。

  • 複寫傳輸層

基於低階傳輸層,實現各種複寫傳輸層包括http、framed、buffered、壓縮傳輸層等,複寫傳輸層可以被協議層直接使用,使用者也可以通過重寫低階傳輸層和複寫傳輸層實現自己的傳輸層。

  • 協議層

協議層主要負責解析請求、應答報文為具體的結構體、類例項,供處理層直接使用,目前的協議包括Binary(最為常用)、json、多路混合協議等。

  • 處理層

由程式碼生成器生成,根據獲取到的具體資訊如method name,進行具體的介面處理,處理層建構函式的入口包含一個handler,handler由業務方進行具體的實現,然後在處理層內被呼叫,並應答處理結果。

  • 服務層

融合低階傳輸層、複寫傳輸層、協議層、處理層,自身包含各種不同型別的服務模型,如非阻塞單程式服務、one request per fork、one request per thread、thread pool等模型。

總結

以上為thrift的整體模組劃分,在接下來的文章中會針對每一個模組,做單獨的解析。

參考資料

thrift官網

thrift白皮書

相關文章