什么是RPC?

一、RPC簡(jiǎn)介
1、RFC
RFC(Request For Comments) 是由互聯(lián)網(wǎng)工程任務(wù)組(IETF)發(fā)布的文件集。文件集中每個(gè)文件都有自己唯一編號(hào),例如:rfc1831。目前RFC文件由互聯(lián)網(wǎng)協(xié)會(huì)(Internet Society,ISOC)贊助發(fā)行。
RPC就收集到了rfc 1831中。
2、RPC
RPC(Remote Procedure Call) 遠(yuǎn)程過(guò)程調(diào)用協(xié)議。
RPC協(xié)議規(guī)定允許互聯(lián)網(wǎng)中一臺(tái)主機(jī)程序調(diào)用另一臺(tái)主機(jī)程序,而程序員無(wú)需對(duì)這個(gè)交互過(guò)程進(jìn)行編程。在RPC協(xié)議中強(qiáng)調(diào)當(dāng)A程序調(diào)用B程序中功能或方法時(shí),A是不知道B中方法具體實(shí)現(xiàn)的。
RPC是上層協(xié)議,底層可以基于TCP協(xié)議,也可以基于HTTP協(xié)議。一般我們說(shuō)RPC都是基于RPC的具體實(shí)現(xiàn),如:Dubbo框架。從廣義上講只要是滿足網(wǎng)絡(luò)中進(jìn)行通訊調(diào)用都統(tǒng)稱為RPC,甚至HTTP協(xié)議都可以說(shuō)是RPC的具體實(shí)現(xiàn),但是具體分析看來(lái)RPC協(xié)議要比HTTP協(xié)議更加高效,基于RPC的框架功能更多。
RPC協(xié)議是基于分布式架構(gòu)而出現(xiàn)的,所以RPC在分布式項(xiàng)目中有著得天獨(dú)厚的優(yōu)勢(shì)。

二、RPC和HTTP對(duì)比
1、具體實(shí)現(xiàn)
RPC:可以基于TCP協(xié)議,也可以基于HTTP協(xié)議。
HTTP:基于HTTP協(xié)議。
2、效率
RPC:自定義具體實(shí)現(xiàn)可以減少很多無(wú)用的報(bào)文內(nèi)容,使得報(bào)文體積更小。
HTTP:如果是HTTP 1.1 報(bào)文中很多內(nèi)容都是無(wú)用的。如果是HTTP2.0以后和RPC相差不大,比RPC少的可能就是一些服務(wù)治理等功能。
3、連接方式
RPC:支持長(zhǎng)連接。
HTTP:每次連接都是3次握手。(斷開(kāi)鏈接為4次揮手)
4、性能
RPC可以基于很多序列化方式。如:thrift
HTTP 主要是通過(guò)JSON,序列化和反序列效率更低。
5、注冊(cè)中心
RPC :一般RPC框架都帶有注冊(cè)中心。
HTTP:都是直連。
6、負(fù)載均衡
RPC:絕大多數(shù)RPC框架都帶有負(fù)載均衡測(cè)量。
HTTP:一般都需要借助第三方工具。如:nginx
7、綜合結(jié)論
RPC框架一般都帶有豐富的服務(wù)治理等功能,更適合企業(yè)內(nèi)部接口調(diào)用。而HTTP更適合多平臺(tái)之間相互調(diào)用。
