分佈式通信框架-RMI原理

什麼是RPC

RPC (Remote Procedure Call,遠程過程調用),一般用來實現部署在不同機器上的系統之間的方法調用,使得程序能夠像訪問本地系統資源一樣,通過網絡傳輸去訪問遠端系統資源,對於客戶端來說,傳輸層使用什麼協議,系列化、反序列化都是透明的。
在架構演變過程中,隨着網站系統用戶量的增加、業務功能的擴展,由集中式走向分佈式,應用被拆分,在解決個服務之間如何進行遠程通信由此產生了RPC技術。
RPC框架:
RMI(JEMP)
SOAP(webservice/axis/cxf)
thrift
grpc
dubbo

Java RMI

RMI(remote method invocation,遠程方法調用)是一種用於遠程過程調用的應用程序編程接口,是純Java的網絡分佈式應用系統的核心解決方案之一。使用Java遠程消息交換協議JRMP (Java Remote Messageing Protocol)進行通信。

RMI採用代理來負責客戶與遠程對象之間通過Scoket進行通信的細節。RMI爲遠程對象分別生成客戶端(存根、Stub)和服務器端代理(骨架,Skeleton)。
在這裏插入圖片描述
Stub發送給服務器的信息有:

  • 被訪問的遠程對象的名字
  • 被調用的方法的描述
  • 序列化的字節序列

Skeleton對象接收到請求後,執行以下操作:

  • 把參數反序列化
  • 定位要訪問的遠程對象
  • 調用遠程對象的方法
  • 獲取方法的返回值或異常,在進行序列化
  • 將信息返回客戶端

RMI應用的運行過程:
在這裏插入圖片描述




RMI的基本原理通過時序圖很清晰的就能理解,但其具體實現還需要通過分析源碼更加直接的深入瞭解,目前我在用的是Dubbo,基本原理相似,實現更復雜和靈活,適用於不同的應用場景。持續學習吧~

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