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