restful和rcp,傻傻分不清

先簡單瞭解概念:

什麼是REST

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

解釋一波:

沒什麼新奇的地方,就是rest還是在http協議上面定義一種規則。比如下面我們添加一個用戶,原來我們定義添加用戶是用addUser這個動詞,現在直接對http協議用post來告訴我們,這就是添加用戶,不需要每次都定義一個動詞告訴我們做什麼。

GET /rest/api/addUser --> POST /rest/api/user  #這是區別

下圖:http四個動詞實際上就對應着增刪改查四個操作

v2-3a1cdc2a37ddeb91830b9dd14a8741c4_hd.jpg

什麼是RPC

遠程方法調用,就是像調用本地方法一樣調用遠程方法。

解釋一波:
我們有外網A服務器和內網B服務器,就是我們需要在A服務調用一個方法,這個方法在B服務器上,這時候怎麼辦呢?那RPC就起作用,他就封裝複雜細節,實現調用A服務器調用這個方法,實際上調用是B服務器上面的真正方法。

具體原理:

1、服務端如何確定客戶端要調用的函數;

在遠程調用中,客戶端和服務端分別維護一個【ID->函數】的對應表, ID在所有進程中都是唯一確定的。客戶端在做遠程過程調用時,附上這個ID,服務端通過查表,來確定客戶端需要調用的函數,然後執行相應函數的代碼。

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

客戶端和服務端交互時將參數或結果轉化爲字節流在網絡中傳輸,那麼數據轉化爲字節流的或者將字節流轉換成能讀取的固定格式時就需要進行序列化和反序列化,序列化和反序列化的速度也會影響遠程調用的效率。

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

多數RPC框架選擇TCP作爲傳輸協議,也有部分選擇HTTP。如gRPC使用HTTP2。不同的協議各有利弊。TCP更加高效,而HTTP在實際應用中更加的靈活。

一些補充:

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

參考鏈接:

爲什麼說要搞定微服務架構,先搞定RPC框架?

面試問題:REST與RPC區別?

https://blog.csdn.net/angus_17/article/details/80693165

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