RPC調用和HTTP調用的區別

RPC調用和HTTP調用的區別

標籤(空格分隔): 分佈式html


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。(負載均衡不考慮已下線服務器,或者增長上線服務器)
相關文章
相關標籤/搜索