【架構師】微服務架構--REST與RPC
REST與RPC比較與應用場景
1.1.1 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在實際應用中更加的靈活。
1.1.2 REST與RPC比較
都是網路互動的協議規範。通常用於多個微服務之間的通訊協議。
比較項 規範 |
REST |
RPC |
通訊協議 |
HTTP |
一般使用TCP |
效能 |
低 |
高 |
靈活度 |
高 |
低 |
高與低是對實現兩種規範框架的相對比較,但也不是絕對的,需要根據實際情況而定。
1.1.3 REST與RPC應用場景
REST和RPC都常用於微服務架構中。
1、HTTP相對更規範,更標準,更通用,無論哪種語言都支援http協議。如果你是對外開放API,例如開放平臺,外部的程式語言多種多樣,你無法拒絕對每種語言的支援,現在開源中介軟體,基本最先支援的幾個協議都包含RESTful。
RPC在微服務中的利用
2、 RPC 框架作為架構微服務化的基礎元件,它能大大降低架構微服務化的成本,提高呼叫方與服務提供方的研發效率,遮蔽跨程序呼叫函式(服務)的各類複雜細節。讓呼叫方感覺就像呼叫本地函式一樣呼叫遠端函式、讓服務提供方感覺就像實現一個本地函式一樣來實現服務。
最後建議
REST呼叫及測試都很方便,RPC就顯得有點繁瑣,但是RPC的效率是毋庸置疑的,所以建議在多系統之間的內部呼叫採用RPC。對外提供的服務,Rest更加合適。