什么是RPC?

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

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