RSF 分佈式 RPC 服務框架的分層設計

RSF 是個什麼東西?

    一個高可用、高性能、輕量級的分佈式服務框架。支持容災、負載均衡、集羣。一個典型的應用場景是,將同一個服務部署在多個Server上提供 request、response 消息通知。使用RSF能夠點對點調用,也能夠分佈式調用。部署方式上:能夠搭配註冊中心,也能夠獨立使用。網絡

 

淵源

    RSF 的核心思想參考了淘寶HSF、Dubbo 等優秀框架。功能上大致類似,可是實現邏輯徹底不一樣。所以沒有什麼歷史包袱。總的來講對比淘寶HSF少了歷史包袱,相比Dubbo更加輕量化。並且還支持了虛擬機房,對於多機房部署的產品能夠省下大量帶寬成本,同時也下降了遠程調用時間。架構

    RSF雖然在功能上與兩位前輩出入不大,使用RSF最直觀的感覺就是簡單方便,配置少、依賴少,功能強大。併發

 

特色

    RSF 的最大特色就是在強大的功能支持下,依然能夠保持:最簡單、最輕量。咱們先輕描淡寫的說一下RSF 的特色。負載均衡

    簡單容易(三個一):1 行代碼發佈服務、1 行代碼訂閱服務、1 行代碼使用服務    框架

    體積輕薄:RSF 是基於 Hasor 構建,此外還依賴了 netty 和 groovy。所以包含 RSF 在內引入的JAR包總數只有 5 個,其中 RSF 只有大約 700KB 的體積。分佈式

工做原理

技術分享

    RSF 是專門爲集羣、高可用系統進行設計的分佈式 RPC 服務框架。服務提供者能夠是一個集羣,服務的消費者也能夠是一個集羣,二者混合在一個集羣裏也是ok的。同時爲了加強融災 RSF 的註冊中心也是支持集羣的。ide

    因此基於 RSF 構建的服務系統不會存在任何單點問題。性能

框架分層

    RSF 的架構設計上遵循了自頂而下明確的分層設計,每一層都有專一的工做職責。大致分爲 9 個層次。他們以下所示:,你也能夠理解這是 RSF 的架構設計。技術分享    第一層:是業務系統中的服務,一個服務的狀態能夠是提供者(Provider)、也能夠是消費者(Customer),或者二者共存。總之在這一層,出現的不是服務接口,就是服務的接口的實現spa

    第二層:是一個應用程序到框架的接入層。分爲提供者(Provider)、消費者(Customer)兩個部分。.net

    對於提供者(Provider)來講這一層就是框架的一個交互 API ,負責將服務接口信息提取出來讓 RSF 框架能夠識別到。而對於消費者(Customer)來講,這一層的目的就是將服務接口進行動態代理。經過代理攔截全部遠程方法調用,這一點相似於AOP。

    第三層:這一層中全部來自動態代理的接口調用都會統一轉換成 RsfRequest ,同時方法的返回值也會封裝成爲 RsfResponse。能夠說這一層是專門爲擴展性設計準備的,開發者在這一層中能夠圍繞着 RsfFilter、RsfRequest、RsfResponse 接口進行擴展。

    第四層:這是一個典型的職責鏈,職責鏈的開端是承接調用請求,末端承接着方法的調用。在整個職責鏈中開發者幾乎能夠隨心所欲。你能夠中斷整個 RPC,本身 mock 數據。也能夠偷樑換柱調用其它服務而後返回結果。

    第五層:這一層是也是消費者(Customer)專有的設計,這一層是一個比較重要的地方,它負責維護管理而且提供服務的IP地址。舉個例子:咱們有 1 個服務,這個服務擁有 10 個服務提供者。那麼這 10 個服務提供者的服務地址和端口信息都是在這一層維護的。當執行遠程調用的時候,這一層會提供IP地址出來。

    提供IP地址這個操做,有必要稍微展開說一下。向 QoS流控,跨機房調用、服務路由。這些很是重要的功能都是由這一層來提供支持。這一層用一句話來表示:它就是地址管理器

    第六層:這一層用“調度器”來總結說明是最貼切的。

    對於提供者(Provider)來講,在這一層基於隊列提供了一個 Server 的保護屏障。這個保護屏障能夠保證當遇到 Client 瘋狂的調用請求時,能夠合理的進行回絕以保證 Server 本身不會被沖垮。對於消費者(Customer)來講,在這一層提供了請求管理器,而且提供了一個最大請求併發的控制器。

    這一層能夠說是 RSF 的中樞神經,由於調度器就是 RSF 線程模型的最終實現。有關線程模型在後面會有專門文章介紹一下(http://www.javashuo.com/article/p-nrmdpdhn-mq.html)。

    第七層:是提供序列化功能,開發者想自定義序列化規則。也是由這一層提供的支持。默認 RSF 採用 Hessian 4.0.7 做爲默認序列化庫。同時框架內置了 Java、Json 兩個策略能夠選用。

    若是你請求時候使用的 Hessian,數據響應想要用 JSON 。也是能夠被支持的。

    第八層:這一層是最底層,負責網絡數據的傳輸。所以,在這一層 RSF 內置了一套比較完整的 RSF 數據傳輸協議。文章在這裏:http://www.javashuo.com/article/p-usbjqmho-mr.html

    第九層:就是計算機的 Socket 網絡通訊了。若是你想,這一層能夠是 TCP 也能夠是 UDP。不過 RSF 採用了 TCP 長連接。

相關文章
相關標籤/搜索