RPC調用和HTTP調用的區別


RPC調用和HTTP調用的區別

標簽(空格分隔): 分布式


1. OSI七層網絡模型

在說RPC和HTTP的區別之前,需要了解一下計網基礎的OSI七層網絡結構模型。

  1. 應用層:定義了用戶在網絡中進行通信和傳輸數據的接口,一般情況下應用都是直接和應用層進行交互的。
  2. 表示層:定義不同系統中數據的傳輸格式,編碼和解碼規范等,用於多系統下的傳輸。
  3. 會話層:管理者用戶的會話,控制用戶間的邏輯連接的建立和中斷;
  4. 傳輸層:管理者網絡中設備間如何傳數據。
  5. 網絡層:定義網絡設備間如何傳輸數據
  6. 鏈路層:將上面的網絡層的數據封裝成幀,便於物理層進行傳輸。
  7. 物理層:這一層主要就是傳輸這些二進制數據。

在實際的應用過程中是沒有表示層和會話層的,應該說他們已經和應用層合並了,我們應該將重點放在應用層和傳輸層這兩個層面。因為HTTP是應用協議,而TCP是傳輸協議。HTTP是基於應用層的,RPC是基於傳輸層的。

2. 優缺點

主要闡述HTTP和RPC的異同,在何種情況下應該選擇何種方案。

2.1 傳輸協議

  • RPC:可以基於TCP協議,也可以基於HTTP協議。
  • HTTP:基於HTTP協議

2.2 傳輸效率

  • RPC:使用自定的TCP協議,可以讓請求報文的體積更小,提高傳輸效率。
  • HTTP: 基於HTTP1.1的協議,請求中會包含很多無用信息。如果基於HTTP2.0,那么可以簡單的封裝一下,作為RPC使用。

2.3 性能消耗

  • RPC:基於thrift實現高效的二進制傳輸。
  • HTTP:大部分通過Json字符串實現,字節大小和序列化的耗時都比thrift更加消耗性能。

2.4 負載均衡

  • RPC:基本都自帶了負載均衡策略。
  • HTTP:需要Nginx,HAProxy來實現。(要使用代理去訪問)

2.5 服務治理

  • RPC: 能做到自動通知,不影響上游。(參考資料:Zookeeper的服務治理

  • HTTP: 需要事先通知,修改Nginx/HAProxy。(負載均衡不考慮已下線服務器,或者增加上線服務器)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM