thrift源碼分析-架構設計

前言

thrift是一個輕量級、跨語言、提供代碼生成機制的rpc框架,提供了數據傳輸、序列化、應用層處理的清晰抽象。thrift自身已經很是成熟,支持超過二十種語言,一些基礎項目如hadoop也將thrift集成到本身的多語言sdk內,若是你的公司正在進行多語言微服務技術選型,thrift會是一個不錯的選擇。本系列文章會從總體架構、模塊源碼層面進行剖析,力求呈現出一個更具體的thrift框架。apache

架構圖

模塊劃分

拋開語言層面,thrift可分爲如下幾個組件,其中傳輸層被細分爲低級傳輸層和複寫傳輸層。json

  • 代碼生成器

根據thrift idl文件生成各個語言代碼,位於compiler目錄內。網絡

  • 低級傳輸層

靠近網絡層、做爲rpc框架接收報文的入口,提供各類底層實現如socket建立、讀寫、接收鏈接等。架構

  • 複寫傳輸層

基於低級傳輸層,實現各類複寫傳輸層包括http、framed、buffered、壓縮傳輸層等,複寫傳輸層能夠被協議層直接使用,用戶也能夠經過重寫低級傳輸層和複寫傳輸層實現本身的傳輸層。框架

  • 協議層

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

  • 處理層

由代碼生成器生成,根據獲取到的具體信息如method name,進行具體的接口處理,處理層構造函數的入口包含一個handler,handler由業務方進行具體的實現,而後在處理層內被調用,並應答處理結果。函數

  • 服務層

融合低級傳輸層、複寫傳輸層、協議層、處理層,自身包含各類不一樣類型的服務模型,如非阻塞單進程服務、one request per fork、one request per thread、thread pool等模型。微服務

總結

以上爲thrift的總體模塊劃分,在接下來的文章中會針對每個模塊,作單獨的解析。oop

參考資料

thrift官網cdn

thrift白皮書

相關文章
相關標籤/搜索