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