從零開始寫分佈式服務架構實戰文檔放這,不要再說不會分佈式服務

什麼是RPC

RPC:Remote Produre Call-遠程過程調用,像調用本地方法一樣調用遠程方法

RPC原理

RPC採用客戶端(服務調用方)/服務端(服務提供方)模式,各自獨自運行。客戶端需要通過引用需要使用的接口,接口的實現和運行都是在服務端。RPC主要的依賴的技術包括序列化、反序列化和數據傳輸協議。

從零開始寫分佈式服務架構實戰文檔放這,不要再說不會分佈式服務

一些基礎概念

  • RMI(Remote Method Invoke,遠程方法調用)代理模式通過代理對象將方法傳遞給實際對象;
  • stub(樁)駐留客戶端,承擔遠程對象實現者的角色;
  • skeleton(骨架)幫助遠程對象與stub連接進行通信。

RPC時序圖

從零開始寫分佈式服務架構實戰文檔放這,不要再說不會分佈式服務

關於時序圖的一些解釋:

  • 1.客戶端(client)通過本地調用的方式調用服務
  • 2.client stub接收到調用方法之後將參數、方法封裝成能夠網絡傳輸的消息體(序列化)
  • 3.client stub找到服務地址,並將消息發送到服務端
  • 4.server stub接收消息並解碼(反序列化)
  • 5.server stub根據解碼結果調用本地服務
  • 6.本地服務將調用結果返回給server stub
  • 7.server stub將返回結果打包成消息(序列化)發送至調用方
  • 8.client stub接收消息並解碼(反序列化)
  • 9.客戶端得到最終結果

常見RPC框架

常見RPC框架方案有RMI(JDK自帶),Hessian,Dubbo,Hprose,Thrift,HTTP等

RMI

RMI調用過程

從零開始寫分佈式服務架構實戰文檔放這,不要再說不會分佈式服務

  • 1.服務端向RMI註冊服務綁定自己的地址
  • 2.客戶端通過RMI註冊服務獲取目標地址
  • 3.客戶端調用本地stub對象上的方法,與調用本地方法一致
  • 4.本地stub對象將調用信息打包(序列化),通過網絡發送給服務端
  • 5.服務端skeleton對象接收到網絡請求,對調用信息進行解包(反序列化)
  • 6.服務端真正服務調用發起調用,並將返回結果打包(序列化)發送給客戶端
  • 7.客戶端解包(反序列化)結果,獲取服務調用結果

想要獲取這份資料的夥伴,幫忙點贊+轉發,然後私信我[RPC],既可以免費獲取;

架構探險目錄

第一章 常用的RPC框架

從零開始寫分佈式服務架構實戰文檔放這,不要再說不會分佈式服務

第二章 分佈式服務框架總體架構與功能

從零開始寫分佈式服務架構實戰文檔放這,不要再說不會分佈式服務

第三章 分佈式服務框架序列化與反序列化實現

從零開始寫分佈式服務架構實戰文檔放這,不要再說不會分佈式服務

第四章 實現分佈式服務框架服務的發佈與引入

從零開始寫分佈式服務架構實戰文檔放這,不要再說不會分佈式服務

第五章 分佈式服務框架註冊中心

從零開始寫分佈式服務架構實戰文檔放這,不要再說不會分佈式服務

第六章 分佈式服務框架底層通信實現

從零開始寫分佈式服務架構實戰文檔放這,不要再說不會分佈式服務

第七章 分佈式服務器框架軟負載實現

從零開始寫分佈式服務架構實戰文檔放這,不要再說不會分佈式服務

第八章 分佈式服務器框架服務治理

從零開始寫分佈式服務架構實戰文檔放這,不要再說不會分佈式服務

從零開始寫分佈式服務架構實戰文檔放這,不要再說不會分佈式服務

由於文章篇幅過長,小編就不一一的展現出來了,想要獲取這份資料的夥伴,幫忙點贊+轉發,然後私信我[RPC],既可以免費獲取;

從零開始寫分佈式服務架構實戰文檔放這,不要再說不會分佈式服務


分享到:


相關文章: