HTTP和RPC的優缺點

JouyPub發表於2018-08-04

  在HTTP和RPC的選擇上,可能有些人是迷惑的,主要是因為,有些RPC框架配置複雜,如果走HTTP也能完成同樣的功能,那麼為什麼要選擇RPC,而不是更容易上手的HTTP來實現了。
本文主要來闡述HTTP和RPC的異同,讓大家更容易根據自己的實際情況選擇更適合的方案。

  • 傳輸協議
    • RPC,可以基於TCP協議,也可以基於HTTP協議
    • HTTP,基於HTTP協議
  • 傳輸效率

    • RPC,使用自定義的TCP協議,可以讓請求報文體積更小,或者使用HTTP2協議,也可以很好的減少報文的體積,提高傳輸效率
    • HTTP,如果是基於HTTP1.1的協議,請求中會包含很多無用的內容,如果是基於HTTP2.0,那麼簡單的封裝以下是可以作為一個RPC來使用的,這時標準RPC框架更多的是服務治理
  • 效能消耗,主要在於序列化和反序列化的耗時

    • RPC,可以基於thrift實現高效的二進位制傳輸
    • HTTP,大部分是通過json來實現的,位元組大小和序列化耗時都比thrift要更消耗效能
  • 負載均衡

    • RPC,基本都自帶了負載均衡策略
    • HTTP,需要配置Nginx,HAProxy來實現
  • 服務治理(下游服務新增,重啟,下線時如何不影響上游呼叫者)

    • RPC,能做到自動通知,不影響上游
    • HTTP,需要事先通知,修改Nginx/HAProxy配置

總結:
  RPC主要用於公司內部的服務呼叫,效能消耗低,傳輸效率高,服務治理方便。HTTP主要用於對外的異構環境,瀏覽器介面呼叫,APP介面呼叫,第三方介面呼叫等。


相關文章