遠端呼叫RPC與Rest區別

2021-09-28 12:39:00 字數 1612 閱讀 8987

一、rest與rpc概念

什麼是rest

rest是一種架構風格,指的是一組架構約束條件和原則。滿足這些約束條件和原則的應用程式或設計就是 restful。rest規範把所有內容都視為資源,網路上一切皆資源。

rest並沒有創造新的技術,元件或服務,只是使用web的現有特徵和能力。 可以完全通過http協議實現,使用 http 協議處理資料通訊。rest架構對資源的操作包括獲取、建立、修改和刪除資源的操作正好對應http協議提供的get、post、put和delete方法。

http動詞與rest風格crud對應關係:

什麼是rpc

遠端方法呼叫,就是像呼叫本地方法一樣呼叫遠端方法。常見rpc框架結構圖:

二、rpc框架要做到的最基本的三件事:

1、服務端如何確定客戶端要呼叫的函式;

在遠端呼叫中,客戶端和服務端分別維護乙個【id->函式】的對應表, id在所有程序中都是唯一確定的。客戶端在做遠端過程呼叫時,附上這個id,服務端通過查表,來確定客戶端需要呼叫的函式,然後執行相應函式的**。

2、如何進行序列化和反序列化;

客戶端和服務端互動時將引數或結果轉化為位元組流在網路中傳輸,那麼資料轉化為位元組流的或者將位元組流轉換成能讀取的固定格式時就需要進行序列化和反序列化,序列化和反序列化的速度也會影響遠端呼叫的效率。

3、如何進行網路傳輸(選擇何種網路協議);

多數rpc框架選擇tcp作為傳輸協議,也有部分選擇http。如grpc使用http2。不同的協議各有利弊。tcp更加高效,而http在實際應用中更加的靈活。

三、rest與rpc比較

tcp的支援保持連線,當呼叫服務的時候不需要每次都進行三次握手才實現。從效能和網路消耗來說rpc都具備了很好的優勢。

restful api 基於http的,也就是說每次呼叫服務都需要進行三次握手建立起通訊才可以實現呼叫,當我們的併發量高的時候這就會浪費很多頻寬資源

服務對外的話採用restful api會比rpc更具備優勢,因此看自己團隊的服務是對內還是對外

都是網路互動的協議規範。通常用於多個微服務之間的通訊協議。

高與低是對實現兩種規範框架的相對比較,但也不是絕對的,需要根據實際情況而定。

四、rest與rpc應用場景

rest和rpc都常用於微服務架構中。

1、http相對更規範,更標準,更通用,無論哪種語言都支援http協議。如果你是對外開放api,例如開放平台,外部的程式語言多種多樣,你無法拒絕對每種語言的支援,現在開源中介軟體,基本最先支援的幾個協議都包含restful。

2、 rpc 框架作為架構微服務化的基礎元件,它能大大降低架構微服務化的成本,提高呼叫方與服務提供方的研發效率,遮蔽跨程序呼叫函式(服務)的各類複雜細節。讓呼叫方感覺就像呼叫本地函式一樣呼叫遠端函式、讓服務提供方感覺就像實現乙個本地函式一樣來實現服務。

最後建議

rest呼叫及測試都很方便,rpc就顯得有點繁瑣,但是rpc的效率是毋庸置疑的,所以建議在多系統之間的內部呼叫採用rpc。對外提供的服務,rest更加合適。

RPC與REST的區別

一 rpc rpc 即遠端過程呼叫,很簡單的概念,像呼叫本地服務 方法 一樣呼叫伺服器的服務 方法 通常的實現有 xml rpc json rpc 通訊方式基本相同,所不同的只是傳輸資料的格式.如果你已經習慣於xml繁重的尖括號,你不妨可以嘗試下更加輕型,高效,傳輸效率高的 json.乙個簡單的通訊...

REST 與 RPC 的區別

為什麼寫這篇文章,前段時間一位同學問到這個問題,介紹了個大致,回頭後又去網上自我補充了哈,但是總是感覺不是那麼完美,於是此篇文章便產生了,如果有不到之處歡迎指正。一 rpc 簡介 rpc remote procedure call,rpc 遠端過程呼叫,它是一種通過網路從遠端電腦程式上請求服務,而不...

RPC與REST的區別

rpc是以動詞為中心的,rest是以名詞為中心的,此處的 動詞指的是一些方法,名詞是指資源.你會發現,以動詞為中心,意味著,當你要需要加入新功能時,你必須要新增更多的動詞,這時候伺服器端需要實現 相應的動詞 方法 客戶端需要知道這個新的動詞並進行呼叫.至於其它的區別,如對實現語言的依賴,耦合性等,這...