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