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

亦一銀河發表於2021-01-14

瞭解一下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嗎?

相關文章