HTTP和RPC的區別是什么?
HTTP協議(Hyper Text Transfer Protocol),又叫做超文本傳輸協議。是一種用于在Web瀏覽器和Web服務器之間交換數據的應用層協議。通過HTTP,Web瀏覽器可以向Web服務器發送請求并獲取響應,從而實現Web頁面的訪問和傳輸。HTTP使用TCP作為傳輸層協議,并采用請求-響應模型來進行通信。
RPC(Remote Procedure Call),又叫做遠程過程調用,它允許客戶端在不知道調用細節的情況下,調用存在于遠程計算機上的某個對象,就像調用本地應用程序中的對象一樣。RPC的調用協議通常包含傳輸協議和序列化協議。
RPC并不是一個具體的協議,而是一種調用方式,它并沒有具體實現,只要按照 RPC 通信協議規范實現的框架,都屬于RPC,比如 Dubbo、gRPC 等。
整體上看,HTTP和RPC的主要區別5點:
1.基于的通信協議不同,HTTP只能基于HTTP協議,而RPC可以基于HTTP、TCP和UDP協議。
2、調用方式不同,HTTP 接口通過 URL 進行調用,RPC 接口通過函數調用進行調用。
3、使用場景上不同,HTTP主要用于 B/S 架構,是萬維網數據通信的基礎,服務在網頁端和服務端的數據傳輸上 。而 RPC 更多用于 C/S 架構,多用于分布式系統內部集群里,例如云計算、微服務架構、分布式數據庫等,它可以在不同的服務之間進行遠程調用,從而實現分布式系統的協作。
4、傳輸效率上,RPC使用自定義的TCP協議,請求報文體積更小,可以很好地減少報文體積,提高傳輸效率。而HTTP請求中會包含很多無用的內容。
5、性能上,RPC協議通常使用二進制編碼來傳輸數據,相對于HTTP協議的文本傳輸,RPC具有更高的性能和效率。RPC協議通常采用高效的序列化和反序列化技術,減少了數據傳輸的大小和開銷,提高了通信的速度和響應時間。