目錄前言
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主要是用在中小型企業裡面,業務線沒那麼繁多的情況下。...