083. RPC 技術簡介

1. RPC 是什麼


image-20200708141512292

  • remote procedure call(RPC):遠程過程調用。

  • 過程:過程就是業務處理、計算任務,更直白理解,就是程序。(像調用本地方法一樣調用遠程的過程。)

  • RPC 採用 Client-Server 結構,通過 request-response 消息模式實現。

  • RPC 和 RMI 有什麼區別?

    • RMI(remote method invocation)遠程方法調用是 oop 領域中 RPC 的一種具體實現。
  • 我們熟悉的 webservice、restful 接口調用是 RPC 嗎?

    • 都是 RPC,僅消息的組織方式及消息協議不同。
  • 遠程過程調用較本地調用有何不同?

    • 速度相對慢。
    • 可靠性較弱。

2. RPC 流程


image-20200708130857236

  1. 客戶端處理過程中調用 Client stub(就像調用本地方法一樣),傳遞參數;
  2. Client stub 將參數編組爲消息,然後通過系統調用向服務端發送消息;
  3. 客戶端本地操作系統將消息從客戶端機器發送到服務端機器;
  4. 服務端操作系統將收到的數據包傳遞給 Server stub;
  5. Server stub 解組消息爲參數。
  6. Server stub 再調用服務端的過程,過程執行結果以反方向的相同步驟響應給客戶端。

RPC 流程中需要處理的問題

  • Client stub、Server stub 的開發;
  • 參數如何編組爲消息,以及解組消息;
  • 消息如何發送;
  • 過程結果如何表示、異常情況如何處理;
  • 如何實現安全的訪問控制。

3. RPC 協議是什麼?


  • RPC 調用過程中需要將參數編組爲消息進行發送,接收方需要解組消息爲參數,過程處理結果同樣需要經編組、解組。消息由哪些部分構成及消息的表現形式就構成了消息協議。
  • RPC 調用過程中採用的消息協議稱爲 RPC 協議。
RPC 協議規定請求、響應消息的格式。
在 TCP(網絡傳輸控制協議)上可選用或自定義消息協議來完成 RPC 消息交互。
我們可以選用通用的標準協議(如:http、https),也可根據自身的需要定義自己的消息協議。

4. 常見的 RPC 協議


https://en.wikipedia.org/wiki/Remote_procedure_call

image-20200708134504637

5. RPC 框架是什麼?


  • 封裝好參數編組、消息解組、底層網絡通信的 RPC 程序開發框架,帶來的便捷是可以直接在其基礎上只需專注於過程代碼編寫。
  • Java 領域:
    • 傳統的 webservice 框架:Apache CXF、Apache Axis2、java 自帶的 JAX-WS 等等。webservice 框架大多基於標準的 SOAP 協議。
    • 新興的微服務框架:Dubbo、spring cloud、Apache Thrift 等等。

6. 爲什麼要用 RPC?


  • 服務化
  • 可重用
  • 系統間交互調用

7. RPC 核心概念術語


  • Client、Server、calls、replies、service、programs、procedures、version、marshalling(編組)、unmarshalling(解組)。
  • 一個網絡服務由一個或多個遠程程序集構成。
  • 一個遠程程序實現一個或多個遠程過程。
  • 過程、過程的參數、結果在程序協議說明書中定義說明。
  • 爲兼容程序協議變更,一個服務端可能支持多個版本的遠程程序。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章