既有 HTTP ,为啥用 RPC 进行服务调用?
RPC 只是一種設計而已
????????RPC 只是一種概念、一種設計,就是為了解決 不同服務之間的調用問題, 它一般會包含有 傳輸協議 和 序列化協議 這兩個。
????????但是,HTTP 是一種協議,RPC框架可以使用 HTTP協議作為傳輸協議或者直接使用TCP作為傳輸協議,使用不同的協議一般也是為了適應不同的場景。
HTTP 和 TCP
可能現在很多對計算機網絡不太熟悉的朋友已經被搞蒙了,要想真正搞懂,還需要來簡單復習一下計算機網絡基礎知識:
我們通常談計算機網絡的五層協議的體系結構是指:應用層、傳輸層、網絡層、數據鏈路層、物理層。
應用層(application-layer)的任務是通過應用進程間的交互來完成特定網絡應用。HTTP 屬于應用層協議,它會基于TCP/IP通信協議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。HTTP協議工作于客戶端-服務端架構為上。瀏覽器作為HTTP客戶端通過 URL 向HTTP服務端即WEB服務器發送所有請求。Web服務器根據接收到的請求后,向客戶端發送響應信息。HTTP協議建立在 TCP 協議之上。
運輸層(transport layer)的主要任務就是負責向兩臺主機進程之間的通信提供通用的數據傳輸服務。TCP是傳輸層協議,主要解決數據如何在網絡中傳輸。相比于UDP,TCP 提供的是面向連接的,可靠的數據傳輸服務。
RPC框架功能更齊全
成熟的 RPC框架還提供好了“服務自動注冊與發現”、"智能負載均衡"、“可視化的服務治理和運維”、“運行期流量調度”等等功能,這些也算是選擇 RPC 進行服務注冊和發現的一方面原因吧!
相關閱讀:
-
http://www.ruanyifeng.com/blog/2016/08/http.html (HTTP 協議入門- 阮一峰)
一個常見的錯誤觀點
很多文章中還會提到說 HTTP 協議相較于自定義 TCP 報文協議,增加的開銷在于連接的建立與斷開,但是這個觀點已經被否認,下面截取自知乎中一個回答,原回答地址:https://www.zhihu.com/question/41609070/answer/191965937。
????????首先要否認一點 HTTP 協議相較于自定義 TCP 報文協議,增加的開銷在于連接的建立與斷開。HTTP 協議是支持連接池復用的,也就是建立一定數量的連接不斷開,并不會頻繁的創建和銷毀連接。二一要說的是 HTTP 也可以使用 Protobuf 這種二進制編碼協議對內容進行編碼,因此二者最大的區別還是在傳輸協議上。
總結
以上是生活随笔為你收集整理的既有 HTTP ,为啥用 RPC 进行服务调用?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 9008线刷_小米红米手机新机9008模
- 下一篇: 什么叫做罗列式_极简罗列法怎么写作文