RPC基礎

分佈式的技術越來越成熟,而RPC在其中扮演着不可或缺的角色,我們平時直接或者隱式的用RPC但是很多人並不一定清楚的理解什麼事RPC

 

RPC 是什麼?

RPC 的全稱是 Remote Procedure Call 是一種進程間通信方式。它允許程序調用另一個地址空間(通常是共享網絡的另一臺機器上)的過程或函數,而不用程序員顯式編碼這個遠程調用的細節。即程序員無論是調用本地的還是遠程的,本質上編寫的調用代碼基本相同。

 

RPC 特點

簡單:RPC概念的語義十分清晰和簡單,這樣建立分佈式計算就更容易。

高效:過程調用看起來十分簡單而且高效。

通用:在單機計算中過程往往是不同算法部分間最重要的通信機制。

通俗一點說,就是一般程序員對於本地的過程調用很熟悉,那麼我們把 RPC作成和本地調用完全類似,那麼就更容易被接受,使用起來毫無障礙。

 

RPC 結構

User,User-stub,RPCRuntime,Server-stub,Server

這裏 user 就是 client 端,當 user 想發起一個遠程調用時,它實際是通過本地調用 user-stub。user-stub 負責將調用的接口、方法和參數通過約定的協議規範進行編碼並通過本地的 RPCRuntime 實例傳輸到遠端的實例。 遠端RPCRuntime 實例收到請求後交給 server-stub 進行解碼後發起本地端調用,調用結果再返回給 user 端。

 

RPC 功能

RPC的主要功能目標是讓構建分佈式計算(應用)更容易,在提供強大的遠程調用能力時不損失本地調用的語義簡潔性。 爲實現該目標,RPC 框架需提供一種透明調用機制讓使用者不必顯式的區分本地調用和遠程調用, 基於 stub 的結構來實現。 下面我們將具體細化 stub 結構的實現。

 

RPC 調用分類

RPC 調用分以下兩種:

  1. 同步調用
    客戶方等待調用執行完成並返回結果。
  2. 異步調用
    客戶方調用後不用等待執行結果返回,但依然可以通過回調通知等方式獲取返回結果。 若客戶方不關心調用返回結果,則變成單向異步調用,單向調用不用返回結果。

異步和同步的區分在於是否等待服務端執行完成並返回結果。

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