回覆列表
  • 1 # 使用者3377597152281

    RPC(remote procedure call protocal)遠端過程呼叫協議。

    簡介

    1.透過RPC協議向遠端伺服器請求服務,不需要知道底層網路技術。其他協議也一樣,比如http,也不需要知道底層的網路技術。

    2.在OSI網路通訊模型中,RPC跨越了傳輸層和應用層。表示層和會話層歸併到應用層。意思是RPC實現了應用層和傳輸層的,再明確的說我們使用RPC協議寫的程式碼,既包含了應用層的邏輯又包含了傳送接收網路資料的介面。編寫程式碼時只要按此開發呼叫對應介面就可以和服務端通訊了。並非需要像socket通訊一樣,寫了上業務層程式碼還需要底層搭建TCP傳輸層通訊環境,再把需要傳送的包丟進去才能傳送。省去了一些列的麻煩。

    開源的程式碼有JsonCpp(C++)是實現了JsonRPC開源包。下載地址:JsonRpc-Cpp - OpenSource JSON-RPC implementation for C++。

    3.RPC使得開發包括網路分散式多程式在內的應用程式更加容易。舉個例子,多臺客戶機執行不同的處理服務(有些處理資料庫,有些處理音影片)這些分散式的機器在向服務端請求,服務端按類別區分就行了。同樣服務端給客戶端發命令,按配置的IP、埠就可完成分散式的部署。相比自定義基於TCP協議,方便很多。

    解決問題

    顧名思義,遠端過程呼叫是為了解決一臺網路主機上的應用向另外一套主機呼叫函式的問題。

    那麼RPC是如何呼叫,它的運作機制是怎麼樣的?

    先看下下面的示意圖

    1.Func1呼叫Func2,首先要呼叫RPC框架程式,如前面所說的C++是JsonCpp。然後JsonCpp呼叫TCP協議傳送資料。當然前提是應用程式事先要指定主機B的地址,埠等。

    2.主機B收到請求後,反方向解析,呼叫傳遞過來的函式。

    參考高手寫的RPC理解:

    深入淺出 RPC - 淺出篇 - 瞬息之間 - 部落格頻道 - CSDN.NET

    深入淺出 RPC - 深入篇 - 瞬息之間 - 部落格頻道 - CSDN.NET

    RPC框架是怎麼實現RPC協議?

    參考:

    RPC框架實現 - 通訊協議篇 - bangerlee - 部落格園

    幾個關鍵字概念:

    endpoints:結束點,意思是RPC服務端終點,接收客戶透過RPC傳送過來資料。

  • 中秋節和大豐收的關聯?
  • 休閒式的西服裡面穿什麼好?