簡述RPC與HTTP對比

2021-09-28 10:32:07 字數 2029 閱讀 8445

目錄前言

rpcrpc簡述

rest

rpc服務框架

rpc與http的對比

如何選擇

何時選用restful

何時使用服務框架

微服務場景

本文針對『專案都會涉及的rpc服務和http服務』進行對比,作為總結沉澱。能力有限,不夠深入和全面,還請指點。

rpc,remote procedure call,遠端程序呼叫,屬於一種架構概念,沒有特定的實現方式,而是體現服務使用者、服務提供者的基本關係。如client端整理報文,傳送給遠端服務;遠端伺服器接收報文並解析,傳給具體服務。rpc具有多種實現方式,可以是古老的基於http的webservice,可以是基於http的restful服務,也可是基於網路框架(如netty)實現的服務框架(如dubbo)。

rest,representational state transfer,表述性狀態傳輸,是一種架構設計風格,沒有明確的標準。

滿足如下rest風格的設計,即可稱為restful。

restful具有輕量級、http直接傳輸資料、無程式語言約束等特性,作為web service的一種實現方式。

基於網路框架實現的服務框架,自研或第三方機構研發的rpc服務中介軟體,具有侵入性,需要依賴第三方lib,且程式語言必須一致。

在網際網路背景下,rpc與http的對比,應該具體為 基於http的restful服務 與 基於網路服務框架實現的服務 的對比。

基於http的restful服務

基於網路服務框架實現的服務

應用層協議

基於http協議

自定義協議

網路與傳輸層協議

tcp和ip協議

tcp和ip協議

使用難度

簡單,快速開發與使用介面

具有一些學習成本,簡單,快速開發與使用介面

依賴特定框架

不需要強制依賴特定框架,

如果選擇基於http的服務框架(netflix),是需要準備環境的

強制依賴特定服務框架,需要額外準備環境,如服務發現

客戶端要求

客戶端無要求,可以通過任何http client呼叫服務

必須按照特定服務框架的服務消費者規範

服務提供者要求

服務提供者無要求,可以通過任意方式暴露restful服務

必須按照特定服務框架的服務提供者規範

傳遞的資料

非物件導向封裝,報文可檢視原始資料;

客戶端按照介面規範和uri-param格式進行組裝,

如結構型json或簡單的kv

物件導向封裝,複雜序列化,報文無法檢視原始資料;

客戶端僅需要傳遞物件資料即可,不需要按照特殊規則進行組裝

報文大小

網路傳輸的報文較大,

http請求和返回均會攜帶除資料外的其他必要資訊,

對效能有一些影響

網路傳輸報文小,可提公升效能

用途可對外對內提供服務

僅對內提供服務

服務版本

不支援服務版本,需要服務提供者自行控制

支援服務版本,服務版本作為服務發現的乙個元素

服務發現

非自動支援服務發現,需要依賴特定框架

自動支援

服務治理

非自動支援,需要依賴特定框架

自動提供

網路模型

restful服務部署在servlet容器中,

如tomcat,servlet容器內部使用多路復用網路模型

依賴的網路框架(如netty)使用多路復用網路模型

程式語言限制

無限制必須與所選服務框架一致

用於前後端分離

可以不可以

供外部使用的服務 或 呼叫者使用任何程式語言均可直接訪問的服務 或 用於前後端分離的服務

供內部使用 且 呼叫者與提供者統一程式語言 且 業務伺服器間互動,不用於前後端分離 且 效能要求高

面對微服務場景,服務提供者對服務進行為微服務化以及服務治理,但是對於服務使用者,希望更簡潔靈活的使用服務,不受語言限制,所以restful服務更適於微服務場景。    

RPC協議簡述

rpc是指遠端過程呼叫,也就是說兩台伺服器,乙個應用部署在其中一台伺服器上,想要呼叫另外一台伺服器上應用提供的函式 方法 由於不在乙個記憶體空間,不能直接呼叫,需要通過網路來表達呼叫的語義和傳達呼叫的資料。rpc 採用客戶機 伺服器模式。請求程式就是乙個客戶機,而服務提供程式就是乙個伺服器。首先,呼...

RPC與HTTP的區別

1.rpc api和restful api 1 rpc面向過程 內部呼叫建議rpc rpc遠端呼叫不一定跨網路,同一臺主機的兩個程序直接也可以是rpc。rest就是一種rpc rpc可以通過http也可以直接走socket。選用http,是由於其更通用。2.rpc與http的不同特點 2.1 傳輸協...

RPC協議是什麼?RPC協議與HTTP協議的區別

rpc是一種api,http是一種無狀態的網路協議。rpc可以基於http協議實現,也可以直接在tcp協議上實現。rpc主要是用在大型 裡面,因為大型 裡面系統繁多,業務線複雜,而且效率優勢非常重要的一塊,這個時候rpc的優勢就比較明顯了。http主要是用在中小型企業裡面,業務線沒那麼繁多的情況下。...