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)在同一編程語(yǔ)言內(nèi)使用
優(yōu)勢(shì):調(diào)用快、處理快
http:框架有:httpClient
當(dāng)使用http進(jìn)行服務(wù)間調(diào)用的時(shí)候,無(wú)需關(guān)注服務(wù)提供方使用的編程語(yǔ)言,也無(wú)需關(guān)注服務(wù)消費(fèi)方使用的編程語(yǔ)言,服務(wù)提供方只需要提供restful風(fēng)格的接口,服務(wù)消費(fèi)方,按照restful的原則,請(qǐng)求服務(wù),即可
跨系統(tǒng)跨編程語(yǔ)言的遠(yuǎn)程調(diào)用框架
優(yōu)勢(shì):通用性強(qiáng)
服務(wù)發(fā)現(xiàn)
首先要向某個(gè)服務(wù)器發(fā)起請(qǐng)求,你得先建立連接,而建立連接的前提是,你得知道IP地址和端口。這個(gè)找到服務(wù)對(duì)應(yīng)的IP端口的過(guò)程,其實(shí)就是服務(wù)發(fā)現(xiàn)。
在HTTP中,你知道服務(wù)的域名,就可以通過(guò)DNS服務(wù)去解析得到它背后的IP地址,默認(rèn)80端口。
而RPC的話,就有些區(qū)別,一般會(huì)有專門(mén)的中間服務(wù)去保存服務(wù)名和IP信息,比如consul或者etcd,甚至是redis。想要訪問(wèn)某個(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),之后的請(qǐng)求和響應(yīng)都會(huì)復(fù)用這條連接,而RPC協(xié)議,也跟HTTP類似,也是通過(guò)建立TCP長(zhǎng)鏈接進(jìn)行數(shù)據(jù)交互,但不同的地方在于,RPC協(xié)議一般還會(huì)再建個(gè)連接池,在請(qǐng)求量大的時(shí)候,建立多條連接放在池內(nèi),要發(fā)數(shù)據(jù)的時(shí)候就從池里取一條連接出來(lái),用完放回去,下次再?gòu)?fù)用,可以說(shuō)非常環(huán)保。
審核編輯:湯梓紅
-
HTTP
+關(guān)注
關(guān)注
0文章
525瀏覽量
33525 -
RPC
+關(guān)注
關(guān)注
0文章
111瀏覽量
11885
發(fā)布評(píng)論請(qǐng)先 登錄
HTTP和HTTPS的關(guān)鍵區(qū)別

云計(jì)算和人工智能有什么區(qū)別和聯(lián)系
SMO與SMP的區(qū)別與聯(lián)系
HTTP 1.1 和 HTTP 2.0 的區(qū)別
HTTP 和 HTTPS 的區(qū)別
云服務(wù)器與容器的區(qū)別和聯(lián)系
晶圓/晶粒/芯片之間的區(qū)別和聯(lián)系
RPC的基本原理和主要特點(diǎn)

socket與WebSocket的區(qū)別與聯(lián)系
冗余電源和雙電源的區(qū)別和聯(lián)系
Dubbo源碼淺析(一)—RPC框架與Dubbo

socket和http區(qū)別是什么
如何手搓一個(gè)自定義的RPC 遠(yuǎn)程過(guò)程調(diào)用框架

柔性機(jī)器人與剛性機(jī)器人區(qū)別與聯(lián)系


評(píng)論