http 與 rpc 對比


總結:RPC主要用於公司內部服務調用,傳輸效率高(TCP,報文小),性能消耗低(高效的二進制傳輸、字節小、序列化耗時少),服務治理方便:

1、傳輸協議:

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

  HTTP:基於HTTP協議

從網絡協議來說,Http協議與Rpc同屬於應用層, 他們的底層都是tcp協議。RPC(即Remote Procedure Call,遠程過程調用)和HTTP(HyperText Transfer Protocol,超文本傳輸協議)他們最本質的區別,就是RPC主要工作在TCP協議之上,而HTTP服務主要是工作在HTTP協議之上,我們都知道HTTP協議是在傳輸層協議TCP之上的,所以效率來看的話,RPC當然是要更勝一籌。

2、傳輸效率:

  RPC:使用自定義的TCP協議,可以讓請求報文體積更小,或者使用HTTP2協議,也可以很好的減小報文體積,提高傳輸效率

  HTTP:如果是基於http1.1的協議,請求中會包含很多無用的內容,如果是基於HTTP2.0,那么簡單的封裝下可以作為一個RPC來使用,這時標准的RPC框架更多的是服務治理。

http協議其實是屬於面向桌面瀏覽器的一個通信協議,對於緩存,冪等或者Cookies相關的方面做了很多的事情。但是對於服務器之間直接的交互,Rpc就能夠體現出來他的優勢了。自定義協議,減少數據傳輸:我們大概看一下http協議。請求行,請求頭部,請求數據,空行。很明顯對於遠程調用場景,我們對於請求行的依賴不是特別的強,那么這一部分在我們應用場景下,將會成為負擔,但是http協議又是固定的,我們也不可能隨便修改協議的格式。所以,通過rpc協議我們可以精簡請求的數據,來盡可能少的傳輸我們的數據。當前,rpc也可以通過http協議來進行傳輸。

3、性能消耗:

  RPC:可以基於thrift實現高效的二進制傳輸

  HTTP:大部分是基於json實現的,字節大小和序列化耗時都比thrift要更消耗性能

4、負載均衡:

  RPC:基本自帶了負載均衡策略

  HTTP:需要配置Nginx、HAProxy配置

5、服務治理:(下游服務新增,重啟,下線時如何不影響上游調用者)

  RPC:能做到自動通知,不影響上游

  HTTP:需要事先通知,如修改NGINX配置。

6、連接:

  RPC:長連接

  HTTP:短連接

rpc使用長連接:直接基於socket進行連接,不用每個請求都重新走三次握手的流程


免責聲明!

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



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