淺談rpc與restful


RPC

RPC(Remote Procedure Call)—遠程過程調用,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通信程序之間攜帶信息數據。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層,RPC使得開發包括網絡分布式多程序在內的應用程序更加容易。

簡而言之就是 在A (client) 調用 B (server) 提供的A方法.

例如在某龐大商場系統中,你可以把整個商場拆分為N個微服務(理解為N個獨立的小模塊也行),例如:訂單系統 ,用戶管理系統

此時在訂單系統要調用用戶系統的方法,則為遠程調用

而調用過程實現的通訊協議可以有很多,可以是http協議或者tcp協議

在一個完整的Rpc中,包含了:

1:服務端,提供Rpc服務接口的服務端,可以有多個

2:客戶端,請求Rpc服務端,可以有多個,客戶端也可以是服務端,服務端也可以是客戶端,互相調用不同的服務

3:如何進行序列化和反序列化.

4:如何進行網絡傳輸(選擇何種網絡協議)多數RPC框架選擇TCP作為傳輸協議,也有部分選擇HTTP。如gRPC使用HTTP2。不同的協議各有利弊

這就有點像我們傳統使用的restful接口

RESTFUL

RESTful是一種軟件架構風格、設計風格,而不是標准,只是提供了一組設計原則和約束條件。它主要用於客戶端和服務器交互類的軟件。通過http協議中的POST/GET/PUT/DELETE等方法和一個可讀性強的URL來提供一個http請求。而rpc則不一定通過http,更常用的是使用TCP來實現

RESTFUL 與RPC的區別

1.restfull和rpc都是client/server模式的,都是在 Server端 把一個個函數封裝成接口暴露出去

2.restful使用http協議實現,而rpc則不一定使用http,一般比較常用的是tcp, RPC 可以獲得更好的性能(省去了 HTTP 報頭等一系列東西),TCP更加高效,而HTTP在實際應用中更加的靈活。

3.從使用上來說:Http接口只關注服務提供方(服務端),對於客戶端怎么調用,調用方式怎樣並不關心;而RPC服務則需要客戶端接口與服務端保持一致,服務端提供一個方法,客戶端通過接口直接發起調用。


免責聲明!

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



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