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