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)用的時候,要求服務(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)用的時候,無需關(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)
首先要向某個服務(wù)器發(fā)起請求,你得先建立連接,而建立連接的前提是,你得知道IP地址和端口。這個找到服務(wù)對應(yīng)的IP端口的過程,其實(shí)就是服務(wù)發(fā)現(xiàn)。
在HTTP中,你知道服務(wù)的域名,就可以通過DNS服務(wù)去解析得到它背后的IP地址,默認(rèn)80端口。
而RPC的話,就有些區(qū)別,一般會有專門的中間服務(wù)去保存服務(wù)名和IP信息,比如consul或者etcd,甚至是redis。想要訪問某個服務(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連接之后會一直保持這個連接(keep alive),之后的請求和響應(yīng)都會復(fù)用這條連接,而RPC協(xié)議,也跟HTTP類似,也是通過建立TCP長鏈接進(jìn)行數(shù)據(jù)交互,但不同的地方在于,RPC協(xié)議一般還會再建個連接池,在請求量大的時候,建立多條連接放在池內(nèi),要發(fā)數(shù)據(jù)的時候就從池里取一條連接出來,用完放回去,下次再復(fù)用,可以說非常環(huán)保。
審核編輯:湯梓紅
-
HTTP
+關(guān)注
關(guān)注
0文章
505瀏覽量
31222 -
RPC
+關(guān)注
關(guān)注
0文章
111瀏覽量
11534
發(fā)布評論請先 登錄
相關(guān)推薦
評論