遠程調用方法


調用方式介紹

  • 無論是微服務還是SOA,都面臨着服務間的遠程調用。
  • 常見的遠程調用方式有以下幾種:
    • RPC:Remote Produce Call遠程過程調用,類似的還有RMI(Remote Method Invocation,遠程
      方法調用)。自定義數據格式,基於原生TCP通信速度快效率高。早期的webservice,現在熱門的dubbo,都是RPC的典型
    • Http:http其實是一種網絡傳輸協議,基於TCP,規定了數據傳輸的格式。現在客戶端瀏覽器與服
      務端通信基本都是采用Http協議。也可以用來進行遠程服務調用。缺點是消息封裝臃腫。現在熱門
      的Rest風格,就可以通過http協議來實現。

認識RPC

概念解釋

  • RPC,即 Remote Procedure Call(遠程過程調用),是一個計算機通信協議。 該協議允許運行於一台
    計算機的程序調用另一台計算機的子程序,而程序員無需額外地為這個交互作用編程。
    說得通俗一點就是:A計算機提供一個服務,B計算機可以像調用本地服務那樣調用A計算機的服務。

作用

  1. 實現遠程調用其他計算機的服務
  2. 像調用本地服務一樣調用遠程服務

問題總結

要實現遠程調用,肯定是通過網絡傳輸數據。A程序提供服務,B程序通過網絡將請求參數傳遞給A,A程
序接收參數調用本地服務執行后得到結果,再將結果返回給B程序。

  • 采用何種網絡通訊協議?
    • 現在比較流行的RPC框架,都會采用TCP作為底層傳輸協議
  • 數據傳輸的格式怎樣?
    • 兩個程序進行通訊,必須約定好數據傳輸格式。就好比兩個人聊天,要用同一種語言,否則無法溝
      通。所以,必須定義好請求和響應的格式。另外,數據在網路中傳輸需要進行序列化,所以還需要
      約定統一的序列化的方式。
    • 如果僅僅是遠程調用,還不算是RPC,因為RPC強調的是過程調用,調用的過程對用戶而言是應該是透
      明的,用戶不應該關心調用的細節,可以像調用本地服務一樣調用遠程服務。所以RPC一定要對調用的過程進行封裝

認識http

概念解釋

  • Http協議:超文本傳輸協議,是一種應用層協議。規定了網絡傳輸的請求格式、響應格式、資源定位和
    操作的方式等。但是底層采用什么網絡傳輸協議,並沒有規定,不過現在都是采用TCP協議作為底層傳
    輸協議。Http與RPC的遠程調用非常像,都是按照某種規定好的數據格式進行網絡通信,有請求,有響應。兩者非常相似,但是還是有一些細微差別。

http和rpc差別

  • RPC並沒有規定數據傳輸格式,這個格式可以任意指定,不同的RPC協議,數據格式不一定相同。
  • Http中定義了資源定位的路徑,RPC中並不需要
  • RPC需要滿足像調用本地服務一樣調用遠程服務,也就是對調用過程在API層面進
    行封裝。Http協議沒有這樣的要求,因此請求、響應等細節需要自己去實現。
  • 優點:RPC方式更加透明,對用戶更方便。Http方式更靈活,沒有規定API和語言,跨語言、跨平

    缺點:RPC方式需要在API層面進行封裝,限制了開發的語言環境

如何選擇

  • 速度來看,RPC要比http更快,雖然底層都是TCP,但是http協議的信息往往比較臃腫,不過可以采用
    gzip壓縮。
  • 難度來看,RPC實現較為復雜,http相對比較簡單
  • 靈活性來看,http更勝一籌,因為它不關心實現細節,跨平台、跨語言。
  • 使用場景
    • 如果對效率要求更高,並且開發過程使用統一的技術棧,那么用RPC還是不錯的。
    • 如果需要更加靈活,跨語言、跨平台,顯然http更合適
      微服務,更加強調的是獨立、自治、靈活。而RPC方式的限制較多,因此微服務框架中,一般都會采用
      基於Http的Rest風格服務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM