了解一下RPC,為何誕生RPC,和HTTP有什么不同?


了解一下RPC,為何誕生RPC,和HTTP有什么不同?

開篇提問

  1. 什么是RPC?
  2. 為什么需要RPC,用來解決什么問題?
  3. RPC與HTTP有什么不同?
  4. 你知道幾種RPC?

認識RPC

RPC:Remote Procedure Call,遠程過程調用。是指計算機程序使過程在不同的地址空間(通常在共享網絡的另一台計算機上)執行時,其編碼方式就像是正常的(本地)過程調用,而無需程序員明確為遠程交互編碼細節。

RPC是一種服務器-客戶端(Client/Server)模式,經典實現是一個通過發送請求-接受回應進行信息交互的系統。

RPC是進程間通信(IPC)的一種形式,因為不同的進程具有不同的地址空間:如果在同一主機上,即使物理地址空間相同,它們也具有不同的虛擬地址空間;如果它們位於不同的主機上,則物理地址空間是不同的。許多不同的(通常是不兼容的)技術已被用來實現這一概念。

【簡單理解】:兩台不同計算機(程序),計算機A有一個約定協議計算機B想調用計算機A需要通過約定協議來進行通訊調用。

RPC的誕生

其實早在1982年左右RPC就被人用來做分布式系統的通信,最早發明『遠程過程調用』這個詞語的人是『布魯斯·傑伊·尼爾森 (Bruce Jay Nelson)』大約是在1981年。

我們所熟知的Java在1.1版本提供了Java版本的RPC框架(RMI),此時在1990年后,基本上RPC被廣泛用於系統之間的調用。但是只在后端方向熟知,對於大眾更多的還是接觸HTTP等協議,也因此RPC更晚讓大眾了解認知。

RPC與HTTP

先講講HTTP

HTTP:Hypertext Transfer Protocol即超文本傳輸協議。

HTTP協議在1990年才開始作為主流協議出現;之所以被我們所熟知,是因為通常HTTP用於web端,也就是web瀏覽器和web服務器交互。當ajax和json在前端大行其道的時候,json也開始發揮其自身能力,簡潔易用的特性讓json成為前后端數據傳輸主流選擇。HTTP協議中以Restful規范為代表,其優勢很大。它可讀性好,且可以得到防火牆的支持、跨語言的支持

HTTP的缺點也很快暴露:

  1. 有用信息占比少,HTTP在OSI的第七層,包含了大量的HTTP頭等信息
  2. 效率低,因為第七層的緣故,中間有很多層傳遞
  3. HTTP協議調用遠程方法復雜,需要封裝各種參數名和參數值以及加密通訊等

所以RPC好在哪?

  1. 都是有用信息
  2. 效率高
  3. 調用簡單
  4. 無需關心網絡傳輸或者通訊問題

HTTP和RPC其實有聯系

http也是rpc實現的一種方式。

RPC和HTTP一句話說不同

RPC就像地區方言,只有內部知道,雙方都需要知道方言,不然沒法溝通

HTTP就是普通話,基本都能懂,也會說

RPC一般用於什么地方?

微服務、分布式已經成為日常的今天,服務通常都部署在不同的服務器,服務器也在不同地區,這時候就存在跨地域跨服務器調用問題,RPC即用於這樣類似的情況

RPC適用於公司內部使用,性能消耗低,傳輸效率高,服務治理方便,但是不建議傳輸較大的文本、視頻等。

篇末提問

  1. 是否讓你理解HTTP和RPC的一些不同了?
  2. RPC用來干嘛了解了嗎?
  3. 你有在用RPC嗎?


免責聲明!

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



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