spring cloud 與 rpc框架 的區別與聯繫

想要知道 spring cloud 與 rpc框架 的區別與聯繫,那我們首先要知道什麼是rpc調用 ?


rpc

Remote Procdeure Call ,即遠程過程調用,它是一種通過網絡計算機程序請求,服務,而不需要了解底層網絡實現的技術。

落實到開發:我們調用的接口雖然不在我們本地,但是我們調用起來就和在本地一樣。我們常見的Httpclient 就是它的一個具體實現。

RPC 的主要功能目標是讓構建分佈式計算(應用)更容易,在提供強大的遠程調用能力時不損失本地調用的語義簡潔性。爲實現該目標,RPC 框架需提供一種透明調用機制讓使用者不必顯式的區分本地調用和遠程調用。

簡述實現原理:

實現思路:網絡通信(常用框架:netty) + 反射

  1. 客戶端通過網絡通信將需要調用的接口信息(接口名,方法名,參數類型,參數)發送給服務端
  2. 服務端通過網絡通信接受到信息之後,通過反射進行方法調用,將結果通過網絡通信返回給客戶端

常見的典型 rpc 框架有:阿里的 dubbo,還有Thrift、Hessian等等都是採用的rpc架構。


spring cloud

spring cloud 想必大家都很清楚,它是基於 spring boot 的微服務全家桶框架,使用Spring Cloud的開發者可以快速的啓動服務或構建應用。

其中主要組件有(第一代):

  1. 註冊中心 —— eureka
  2. 配置中心 —— config
  3. 網關 —— zuul
  4. 服務調用客戶端 —— feign
  5. 熔斷器 —— hystrix
  6. 負載均衡器 —— ribbon
  7. 集羣監控 —— turbine

它的特點也是非常的突出:

  1. 約定優於配置
  2. 開箱即用,快速啓動
  3. 適用於各種環境
  4. 輕量化組件
  5. 組件的支持很豐富,功能很齊全
  6. 選型中立

區別與聯繫

通過以上介紹,我們可以非常清晰的感覺到,spring cloud 中 feign 的遠程調用 和rpc調用非常契合,但是,spring cloud 龐大的家族和突出的特點又讓 rpc框架 略顯羞澀。

所以,我感覺,你可以說 spring cloud 是 rpc 框架,但是不夠全面具體 (如下圖), 貌似微服務更適合它。
在這裏插入圖片描述


備註

瞭解什麼是rpc:如何給老婆解釋什麼是RPC
瞭解spring cloud:官網較好

不願意去的給出一份官方解釋:

Spring Cloud爲開發人員提供了一些工具來快速構建分佈式系統中的一些常見模式(例如配置管理、服務發現、斷路器、智能路由、微代理、控制總線、一次性令牌、全局鎖、領導層選舉、分佈式會話、羣集狀態)。分佈式系統的協調導致了鍋爐板模式,使用Spring Cloud開發人員可以快速建立實現這些模式的服務和應用程序。它們在任何分佈式環境中都能很好地工作,包括開發人員自己的筆記本電腦、裸機數據中心和雲計算(Cloud Foundry)等託管平臺。


簡答總結,歡迎大家和我交流討論!~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章