遠程調用方式RPC和HTTP

遠程調用方式

無論是微服務還是面向服務的架構(SOA),都面臨着遠程調用的問題。

常見的遠程調用方式:

RPC:自定義數據格式基於原生TCP通信,速度快,效率高。早期的webservice,現在的dubbo都是RPC的典型。

HTTP:HTTP其實是一種網絡傳輸協議,基於TCP,規定了數據傳輸格式。現在瀏覽器與服務端的通信基本都是採用HTTP,也可以遠程調用,缺點就是消息封裝臃腫。

什麼是RPC?
是一個計算機通信協議。該協議允許一個計算機調用另一臺計算機的服務。
兩個程序之間通信,必須約定好數據傳輸格式。不然無法溝通,也就是需要約定好請求和響應的格式。數據再網絡傳輸的過程中需要進行序列化,所以還需要約定統一的序列化方式。
PRC強調的是過程調用,用戶不關心調用細節,就像調用本地服務一樣調用遠程服務。所以RPC要對過程調用進行封裝。
在這裏插入圖片描述
什麼是HTTP?
HTTP協議:超文本傳輸協議,是一種應用層協議。規定了網絡傳輸的請求格式、響應格式、資源定位和操作的方式等。但是底層採用什麼網絡傳輸協議,並沒有規定,不過現在都是採用TCP協議作爲底層傳輸協議。

RPC和HTTP的區別
首先,兩者十分相似,有請求有響應。
不同:
RPC需要滿足像調用本地服務一樣調用遠程服務,也就是對調用過程在API層面進行封裝。
Http協議沒有這樣的要求,因此請求、響應等細節需要我們自己去實現。

優點
RPC更加透明,對用戶方便。
HTTP方式更加靈活,沒有規定API和語言,跨語言,跨平臺。

缺點
RPC需要在API層面進行封裝,限制了開發的語言環境。

選擇
速度方面:RPC速度比HTTP快,底層都是TCP,HTTP消息往往比較臃腫,但是可以採用gzip壓縮。
難度方面:RPC實現有點兒複雜,HTTP相對比較簡單。
靈活性方面:HTTP更靈活,不需要關係實現的細節,可以跨平臺,跨語言。

未來發展方向
微服務,強調獨立,自治,靈活。RPC限制較多,因此微服務框架中,一般都會採用基於HTTP的rest風格服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章