面試:請說一下rpc和http的區(qū)別?

一、區(qū)別:
1、傳輸協(xié)議
RPC,可以基于TCP協(xié)議,也可以基于HTTP協(xié)議
HTTP,基于HTTP協(xié)議
2、傳輸效率
RPC,使?用?自定義的TCP協(xié)議,可以讓請求報?文體積更更?小,或者使?用HTTP2協(xié)議,也可以很好的減少報?文的體積,提?高傳輸效率
HTTP,如果是基于HTTP1.1的協(xié)議,請求中會包含很多?無?用的內(nèi)容,如果是基于HTTP2.0,那么簡單的封裝以下是可以作為?一個RPC來使?用的,這時標(biāo)準(zhǔn)RPC框架更更多的是服務(wù)治理理
3、性能消耗,主要在于序列列化和反序列列化的耗時
RPC,可以基于thrift實現(xiàn)?高效的?二進(jìn)制傳輸
HTTP,?大部分是通過json來實現(xiàn)的,字節(jié)?大?小和序列列化耗時都?比thrift要更更消耗性能
4、負(fù)載均衡
RPC,基本都?自帶了了負(fù)載均衡策略略
HTTP,需要配置Nginx,HAProxy來實現(xiàn)
5、服務(wù)治理(下游服務(wù)新增,重啟,下線時如何不不影響上游調(diào)?用者)
RPC,能做到?自動通知,不不影響上游
HTTP,需要事先通知,修改Nginx/HAProxy配置
二、總結(jié):
RPC主要?用于公司內(nèi)部的服務(wù)調(diào)?用,性能消耗低,傳輸效率?高,服務(wù)治理理?方便便。HTTP主要?用于對外的異構(gòu)環(huán)境,瀏覽器?接?口調(diào)?用,APP接?口調(diào)?用,第三?方接?口調(diào)?用等。
--------------------------
