“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學架構」公眾號公眾號獲取更多技術干貨!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/503080.html
標籤:其他
上一篇:這些并發容器的坑,你要謹記!
下一篇:Rust極簡教程
