HTTP和RPC的相同點(diǎn):底層通訊都是基于socket,都可以實(shí)現(xiàn)遠(yuǎn)程調(diào)用,都可以實(shí)現(xiàn)服務(wù)調(diào)用服務(wù)。
HTTP和RPC的不同點(diǎn):
RPC:框架有:dubbo、cxf、(RMI遠(yuǎn)程方法調(diào)用)Hessian
當(dāng)使用RPC框架實(shí)現(xiàn)服務(wù)間調(diào)用的時(shí)候,要求服務(wù)提供方和服務(wù)消費(fèi)方 都必須使用統(tǒng)一的RPC框架,要么都dubbo,要么都cxf
跨操作系統(tǒng)在同一編程語言內(nèi)使用
優(yōu)勢:調(diào)用快、處理快
http:框架有:httpClient
當(dāng)使用http進(jìn)行服務(wù)間調(diào)用的時(shí)候,無需關(guān)注服務(wù)提供方使用的編程語言,也無需關(guān)注服務(wù)消費(fèi)方使用的編程語言,服務(wù)提供方只需要提供restful風(fēng)格的接口,服務(wù)消費(fèi)方,按照restful的原則,請求服務(wù),即可
跨系統(tǒng)跨編程語言的遠(yuǎn)程調(diào)用框架
優(yōu)勢:通用性強(qiáng)
服務(wù)發(fā)現(xiàn)
首先要向某個(gè)服務(wù)器發(fā)起請求,你得先建立連接,而建立連接的前提是,你得知道IP地址和端口。這個(gè)找到服務(wù)對應(yīng)的IP端口的過程,其實(shí)就是服務(wù)發(fā)現(xiàn)。
在HTTP中,你知道服務(wù)的域名,就可以通過DNS服務(wù)去解析得到它背后的IP地址,默認(rèn)80端口。
而RPC的話,就有些區(qū)別,一般會(huì)有專門的中間服務(wù)去保存服務(wù)名和IP信息,比如consul或者etcd,甚至是redis。想要訪問某個(gè)服務(wù),就去這些中間服務(wù)去獲得IP和端口信息。由于dns也是服務(wù)發(fā)現(xiàn)的一種,所以也有基于dns去做服務(wù)發(fā)現(xiàn)的組件,比如CoreDNS。
可以看出服務(wù)發(fā)現(xiàn)這一塊,兩者是有些區(qū)別,但不太能分高低。
底層連接形式
以主流的HTTP1.1協(xié)議為例,其默認(rèn)在建立底層TCP連接之后會(huì)一直保持這個(gè)連接(keep alive),之后的請求和響應(yīng)都會(huì)復(fù)用這條連接,而RPC協(xié)議,也跟HTTP類似,也是通過建立TCP長鏈接進(jìn)行數(shù)據(jù)交互,但不同的地方在于,RPC協(xié)議一般還會(huì)再建個(gè)連接池,在請求量大的時(shí)候,建立多條連接放在池內(nèi),要發(fā)數(shù)據(jù)的時(shí)候就從池里取一條連接出來,用完放回去,下次再復(fù)用,可以說非常環(huán)保。

審核編輯:湯梓紅
-
HTTP
+關(guān)注
關(guān)注
0文章
538瀏覽量
35526 -
RPC
+關(guān)注
關(guān)注
0文章
114瀏覽量
12284
發(fā)布評論請先 登錄
碼神之路Netty-從零實(shí)現(xiàn)RPC框架課分享
如何基于CANoe實(shí)現(xiàn)HTTP通信
工業(yè)領(lǐng)域?yàn)槭裁磿?huì)用到HTTP協(xié)議
HTTP物聯(lián)網(wǎng)網(wǎng)關(guān)是什么?有什么功能?
C語言與C++的區(qū)別及聯(lián)系
HTTP通信網(wǎng)關(guān)是什么?有什么功能?
使用HTTP實(shí)現(xiàn)IAP的方法
電壓、電位、電勢和電平的區(qū)別與關(guān)系
BLDC與PMSM電機(jī)控制算法的聯(lián)系與區(qū)別
IoT模組與IoT網(wǎng)關(guān)有什么區(qū)別和聯(lián)系
數(shù)字化與信息化有什么區(qū)別和聯(lián)系
知識(shí)分享 | 功能安全vsSOTIF:區(qū)別與聯(lián)系
HTTP協(xié)議在工業(yè)領(lǐng)域會(huì)用到嗎
基于RK3576開發(fā)板的http/https通訊
HTTP和RPC的區(qū)別與聯(lián)系
評論