“Http協議和RPC協議有什麼區別?” 最近很多人問我這個問題,他們都不知道怎麼回答。 今天我們就來瞭解一下這個問題的高手回答。 另外,我把文字版本的內容整理到了一個15W字的面試文檔里了。 大家可以看文章尾端領取。 下麵看看高手的回答 高手: 這個問題我想從三個層面來回答。 從功能特性來說。 h ...
“Http協議和RPC協議有什麼區別?”
最近很多人問我這個問題,他們都不知道怎麼回答。
今天我們就來瞭解一下這個問題的高手回答。
另外,我把文字版本的內容整理到了一個15W字的面試文檔里了。
大家可以看文章尾端領取。
下麵看看高手的回答
高手:
這個問題我想從三個層面來回答。
從功能特性來說。
-
http是一個屬於應用層的超文本傳輸協議,是萬維網數據通信的基礎,主要服務在網頁端和服務端的數據傳輸上。
-
RPC是一個遠程過程調用協議,它的定位是實現不同電腦應用之間的數據通信, 屏蔽通信底層的複雜性,讓開發者就像調用本地服務一樣完成遠程服務的調用。
因此,這兩個協議在定位層面就完全不同。
其次,從實現原理來說。
-
http協議是一個已經實現並且成熟的應用層協議,它定義了通信的報文格式Request Body和Request Header, 以及Response Body和Response Header。
也就是說,符合這樣一個協議特征的通信協議,才是http協議。
-
RPC只是一種協議的規範,它並沒有具體實現,只有按照RPC通信協議規範實現的通信框架,
也就是RPC框架,才是協議的具體實現,比如Dubbo、gRPC等。
因此,我們可以在實現RPC框架的時候,自定義報文通信的協議規範、自定義序列化方式、自定義網路通信協議的類型等等
因此,從這個層面來說,http是成熟的應用協議,而RPC只是定義了不同服務之間的通信規範。
最後,應用層面來說。
-
http協議和實現了RPC協議的框架都能夠實現跨網路節點的服務之間通信。
並且他們底層都是使用TCP協議作為通信基礎。
但是,由於RPC只是一種標準協議,只要符合RPC協議的框架都屬於RPC框架。
因此,RPC的網路通信層也可以使用HTTP協議來實現,比如gRPC、OpenFeign底層都採用了http協議。
總結
這個問題考察頻率還挺高的。
網上很多人對這兩個協議的理解也是一知半解,說了半天沒說明白。
其實只要理解這兩個協議本身的特性和背景,就能很輕鬆的回答出來。
如果喜歡我的作品,記得點贊、收藏、加關註!!!
版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自
Mic帶你學架構
!
如果本篇文章對您有幫助,還請幫忙點個關註和贊,您的堅持是我不斷創作的動力。歡迎關註「跟著Mic學架構」公眾號公眾號獲取更多技術乾貨!