什麼是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],既可以免費獲取;
閱讀更多 JAVA技術刀 的文章