瞭解一下RPC,為何誕生RPC,和HTTP有什麼不同?
開篇提問
- 什麼是RPC?
- 為什麼需要RPC,用來解決什麼問題?
- RPC與HTTP有什麼不同?
- 你知道幾種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的缺點也很快暴露:
- 有用資訊佔比少,HTTP在OSI的第七層,包含了大量的HTTP頭等資訊
- 效率低,因為第七層的緣故,中間有很多層傳遞
- HTTP協議呼叫遠端方法複雜,需要封裝各種引數名和引數值以及加密通訊等
所以RPC好在哪?
- 都是有用資訊
- 效率高
- 呼叫簡單
- 無需關心網路傳輸或者通訊問題
HTTP和RPC其實有聯絡
http也是rpc實現的一種方式。
RPC和HTTP一句話說不同
RPC就像地區方言,只有內部知道,雙方都需要知道方言,不然沒法溝通
HTTP就是普通話,基本都能懂,也會說
RPC一般用於什麼地方?
在微服務、分散式已經成為日常的今天,服務通常都部署在不同的伺服器,伺服器也在不同地區,這時候就存在跨地域跨伺服器呼叫問題,RPC即用於這樣類似的情況。
RPC適用於公司內部使用,效能消耗低,傳輸效率高,服務治理方便,但是不建議傳輸較大的文字、視訊等。
篇末提問
- 是否讓你理解HTTP和RPC的一些不同了?
- RPC用來幹嘛瞭解了嗎?
- 你有在用RPC嗎?