http是指從客戶端到服務器端的請求消息,rpc是遠程過程調(diào)用協(xié)議,它們之間有什么區(qū)別呢,下面是小編整理的相關(guān)內(nèi)容,希望對大家有所幫助!
rpc和http的存在重大不同的是:http請求是使用具有標準語義的通用的接口定向到資源的,這些語義能夠被中間組件和提供服務的來源機器進行解釋。結(jié)果是使得一個應用支持分層的轉(zhuǎn)換(layers of transformation)和間接層(indirection),并且獨立于消息的來源,這對于一個Internet規(guī)模、多個組織、無法控制的可伸縮性的信息系統(tǒng)來說,是非常有用的。與之相比較,rpc的機制是根據(jù)語言的API(language API)來定義的,而不是根據(jù)基于網(wǎng)絡的應用來定義的。
HTTP和RPC的優(yōu)缺點主要來闡述HTTP和RPC的異同,讓大家更容易根據(jù)自己的實際情況選擇更適合的方案。
傳輸協(xié)議
RPC:可以基于TCP協(xié)議,也可以基于HTTP協(xié)議
HTTP:基于HTTP協(xié)議
傳輸效率
RPC:使用自定義的TCP協(xié)議,可以讓請求報文體積更小,或者使用HTTP2協(xié)議,也可以很好的減少報文的體積,提高傳輸效率
HTTP:如果是基于HTTP1.1的協(xié)議,請求中會包含很多無用的內(nèi)容,如果是基于HTTP2.0,那么簡單的封裝以下是可以作為一個RPC來使用的,這時標準RPC框架更多的是服務治理
性能消耗
RPC:可以基于thrift實現(xiàn)高效的二進制傳輸
HTTP:大部分是通過json來實現(xiàn)的,字節(jié)大小和序列化耗時都比thrift要更消耗性能
負載均衡
RPC:基本都自帶了負載均衡策略
HTTP:需要配置Nginx,HAProxy來實現(xiàn)
服務治理
RPC:能做到自動通知,不影響上游
HTTP:需要事先通知,修改Nginx/HAProxy配置
總結(jié)
RPC主要用于公司內(nèi)部的服務調(diào)用,性能消耗低,傳輸效率高,服務治理方便。HTTP主要用于對外的異構(gòu)環(huán)境,瀏覽器接口調(diào)用,APP接口調(diào)用,第三方接口調(diào)用等。