1. RPC 是什麼
-
remote procedure call(RPC):遠程過程調用。
-
過程:過程就是業務處理、計算任務,更直白理解,就是程序。(像調用本地方法一樣調用遠程的過程。)
-
RPC 採用 Client-Server 結構,通過 request-response 消息模式實現。
-
RPC 和 RMI 有什麼區別?
- RMI(remote method invocation)遠程方法調用是 oop 領域中 RPC 的一種具體實現。
-
我們熟悉的 webservice、restful 接口調用是 RPC 嗎?
- 都是 RPC,僅消息的組織方式及消息協議不同。
-
遠程過程調用較本地調用有何不同?
- 速度相對慢。
- 可靠性較弱。
2. RPC 流程
- 客戶端處理過程中調用 Client stub(就像調用本地方法一樣),傳遞參數;
- Client stub 將參數編組爲消息,然後通過系統調用向服務端發送消息;
- 客戶端本地操作系統將消息從客戶端機器發送到服務端機器;
- 服務端操作系統將收到的數據包傳遞給 Server stub;
- Server stub 解組消息爲參數。
- Server stub 再調用服務端的過程,過程執行結果以反方向的相同步驟響應給客戶端。
RPC 流程中需要處理的問題
- Client stub、Server stub 的開發;
- 參數如何編組爲消息,以及解組消息;
- 消息如何發送;
- 過程結果如何表示、異常情況如何處理;
- 如何實現安全的訪問控制。
3. RPC 協議是什麼?
- RPC 調用過程中需要將參數編組爲消息進行發送,接收方需要解組消息爲參數,過程處理結果同樣需要經編組、解組。消息由哪些部分構成及消息的表現形式就構成了消息協議。
- RPC 調用過程中採用的消息協議稱爲 RPC 協議。
RPC 協議規定請求、響應消息的格式。
在 TCP(網絡傳輸控制協議)上可選用或自定義消息協議來完成 RPC 消息交互。
我們可以選用通用的標準協議(如:http、https),也可根據自身的需要定義自己的消息協議。
4. 常見的 RPC 協議
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(解組)。
- 一個網絡服務由一個或多個遠程程序集構成。
- 一個遠程程序實現一個或多個遠程過程。
- 過程、過程的參數、結果在程序協議說明書中定義說明。
- 爲兼容程序協議變更,一個服務端可能支持多個版本的遠程程序。