RPC服務治理

RPC服務治理

什麼是RPC?

RPC全稱爲Remote Procedure Call,翻譯過來爲“遠程過程調用”。目前,主流的平臺中都支持各種遠程調用技術,以滿足分佈式系統架構中不同的系統之間的遠程通信和相互調用。遠程調用的應用場景極其廣泛,實現的方式也各式各樣。

過程是什麼?

過程是業務處理、計算任務;更直接的理解:一段程序代碼。

有什麼重要特徵?

像調用本地方法一樣調用遠程的過程。

遠程調用原理

比如 A (client) 調用 B (server) 提供的 remoteAdd方法:

首先A與B之間建立一個TCP連接;

  1. A把需要調用的方法名(這裏是remoteAdd)以及方法參數(10, 20)序列化成字節流發送出去;

  2. B接受A發送過來的字節流,然後反序列化得到目標方法名,方法參數,接着執行相應的方法調用(可能是localAdd)並把結果30返回;

  3. A接受遠程調用結果,輸出30。

RPC框架是什麼?

封裝好了參數組、消息編解碼、底層網絡通信的遠程過程調用的程序框架,可以直接在其基礎上只需專注於我們的過程代碼編寫。

  • 傳統的webService框架:Apache CXF、Apache Axis2、java自帶的JAX-WS等等。webService框架大多基於標準的SOAP協議。
  • 新興的微服務框架:Dubbo、Spring Cloud、Apache Thrift等等

通信協議

基於HTTP協議的,如:基於文本SOAP(XML), JSON, 二進制Hessian。

基於TCP協議,通常會借用Netty等高性能網絡框架。

序列化/反序列化

只有二進制數據才能在網絡中傳輸,將對象轉換成二進制流的過程叫做序列化,將二進制流轉換成對象的過程叫做反序列化。

RPC與REST有什麼區別?

通過了解RPC後,我們知道是RPC是client/server模式的,調用遠程的方法,REST也是我們熟悉的一套API調用協議方法,它也是基於client/server模式的,調用遠程的方法的,那他倆又有啥區別呢?

REST 和 RPC 都是在 Server端, 把一個個函數封裝成接口暴露出去,以供 Client端 調用,不過 REST 是基於HTTP協議的,REST致力於通過HTTP協議中的POST/GET等方法和一個可讀性強的URL來提供一個HTTP請求。而 RPC 可以不基於 HTTP協議 ,因此用 RPC 可以獲得更好的性能(省去了 HTTP header等一系列東西),應該也更容易配置。

 

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