簡單對比 RPC 和 Restful API


RESTful API 架構

REST ***的幾個特點為:資源、統一接口、URI 和無狀態。

①資源

所謂"資源",就是網絡上的一個實體,或者說是網絡上的一個具體信息。它可以是一段文本、一張圖片、一首歌曲、一種服務,就是一個具體的實在。

②統一接口

RESTful 架構風格規定,數據的元操作,即 CRUD(Create,Read,Update 和 Delete,即數據的增刪查改)操作,分別對應於 HTTP 方法:GET 用來獲取資源,POST 用來新建資源(也可以用於更新資源),PUT 用來更新資源,DELETE 用來刪除資源,這樣就統一了數據操作的接口,僅通過 HTTP 方法,就可以完成對數據的所有增刪查改工作。

③URL

可以用一個 URI(統一資源定位符)指向資源,即每個 URI 都對應一個特定的資源。

要獲取這個資源,訪問它的 URI 就可以,因此 URI 就成了每一個資源的地址或識別符。

④無狀態

所謂無狀態的,即所有的資源,都可以通過 URI 定位,而且這個定位與其他資源無關,也不會因為其他資源的變化而改變。有狀態和無狀態的區別,舉個簡單的例子說明一下。

如查詢員工的工資,如果查詢工資是需要登錄系統,進入查詢工資的頁面,執行相關操作后,獲取工資的多少,則這種情況是有狀態的。

因為查詢工資的每一步操作都依賴於前一步操作,只要前置操作不成功,后續操作就無法執行。

如果輸入一個 URI 即可得到指定員工的工資,則這種情況是無狀態的,因為獲取工資不依賴於其他資源或狀態。

且這種情況下,員工工資是一個資源,由一個 URI 與之對應,可以通過 HTTP 中的 GET 方法得到資源,這是典型的 RESTful 風格。

RPC 和 Restful API 對比

面對對象不同:

  • RPC 更側重於動作。
  • REST 的主體是資源。

RESTful 是面向資源的設計架構,但在系統中有很多對象不能抽象成資源,比如登錄,修改密碼等而 RPC 可以通過動作去操作資源。所以在操作的全面性上 RPC 大於 RESTful。

傳輸效率:

  • RPC 效率更高。RPC,使用自定義的 TCP 協議,可以讓請求報文體積更小,或者使用 HTTP2 協議,也可以很好的減少報文的體積,提高傳輸效率。

復雜度:

  • RPC 實現復雜,流程繁瑣。
  • REST 調用及測試都很方便。

RPC 實現(參見***節)需要實現編碼,序列化,網絡傳輸等。而 RESTful 不要關注這些,RESTful 實現更簡單。

靈活性:

  • HTTP 相對更規范,更標准,更通用,無論哪種語言都支持 HTTP 協議。
  • RPC 可以實現跨語言調用,但整體靈活性不如 RESTful。

總結

RPC 主要用於公司內部的服務調用,性能消耗低,傳輸效率高,實現復雜。

HTTP 主要用於對外的異構環境,瀏覽器接口調用,App 接口調用,第三方接口調用等。

RPC 使用場景(大型的網站,內部子系統較多、接口非常多的情況下適合使用 RPC):

  • 長鏈接。不必每次通信都要像 HTTP 一樣去 3 次握手,減少了網絡開銷。
  • 注冊發布機制。RPC 框架一般都有注冊中心,有豐富的監控管理;發布、下線接口、動態擴展等,對調用方來說是無感知、統一化的操作。
  • 安全性,沒有暴露資源操作。
  • 微服務支持。就是最近流行的服務化架構、服務化治理,RPC 框架是一個強力的支撐。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM