RPC是什麼?科普一下

RPC概念及分類

RPC全稱爲Remote Procedure Call,翻譯過來爲「遠程過程調用」。目前,主流的平臺中都支持各類遠程調用技術,以知足分佈式系統架構中不一樣的系統之間的遠程通訊和相互調用。遠程調用的應用場景極其普遍,實現的方式也各式各樣。spring

 

從通訊協議的層面,大體能夠分爲:數據庫

基於HTTP協議的(例如基於文本的SOAP(XML)、Rest(JSON),基於二進制Hessian(Binary))編程

基於TCP協議的(一般會藉助Mina、Netty等高性能網絡框架)安全

 

從不一樣的開發語言和平臺層面,分爲:網絡

單種語言或平臺特定支持的通訊技術(例如Java平臺的RMI、.NET平臺Remoting)架構

支持跨平臺通訊的技術(例如HTTP Rest、Thrift等)mvc

 

從調用過程來看,分爲:框架

同步通訊調用(同步RPC)異步

異步通訊調用(MQ、異步RPC)編程語言

 

常見的幾種通訊方式

1. 遠程數據共享(例如:共享遠程文件,共享數據庫等實現不一樣系統通訊)

2. 消息隊列

3. RPC(遠程過程調用)

 

序列化/反序列化

只有二進制數據才能在網絡中傳輸,序列化和反序列化的定義是:

將對象轉換成二進制流的過程叫作序列化,

將二進制流轉換成對象的過程叫作反序列化。

 

Java和.NET平臺中常見的通訊技術

Java中支持的包括:

技術

簡介

是否支持跨平臺

Corbra

90年代產物,已被淘汰

不支持

RMI

EJB時代產物,已逐漸被淘汰

不支持

WebService

基於Http SOAP,效率低,逐漸被淘汰

支持

Hessain

基於Http,二進制序列化,效率高,使用普遍

支持

Rest(spring mvc等)

支持Http Rest,普遍應用於無線API,開放平臺等

支持

JMS、開源MQ

Java消息服務(消息中間件),使用普遍

支持

Socket

基於Mina、Netty(NIO、AIO高效通訊)

理論上支持

 

 

 

.NET中包括:

技術

簡介

是否支持跨平臺

WebService

基於Http SOAP,效率低,逐漸被WCF整合淘汰

支持

.NET Remoting

通訊效率尚可,使用複雜,逐漸被WCF整合淘汰

不支持

WCF SOAP

整合了原有的WebService,通訊效率低

支持

WCF NET.TCP

通訊效率高,部分.NET項目內部服務在使用

不支持

WCF Rest

使用較少,已經被Web Api逐漸取代

支持

Web Api

支持Http Rest,普遍應用於無線API,開放平臺等

支持

MSMQ、開源MQ

微軟本身的消息中間件或者其餘開源MQ

支持(MSMQ除外)

Hessain .NET

基於Http,二進制序列化,效率高,使用較少

支持

Socket

經過Socket網絡編程方式實現系統通訊

理論上支持

 

 

互聯網時代常見的RPC技術和框架

應用級的服務框架:

Dubbo/Dubbox

ZeroICE

GRpc

Spring Boot/Spring Cloud

 

基礎通訊框架:

Protocol Buffers

Thrift

 

遠程通訊協議:

RMI

Socket

SOAP(HTTP XML)

REST(HTTP JSON)

RPC的注意事項

性能

影響RPC性能的主要在幾個方面:

1.序列化/反序列化的框架

2.網絡協議,網絡模型,線程模型等

安全

RPC安全的主要在於服務接口的鑑權和訪問控制支持。

 

跨平臺

跨不一樣的操做系統,不一樣的編程語言和平臺。

 

跨平臺RPC技術和常見框架

SOAP WebService

Hessian

HTTP Rest

Thrift

GRpc(Protobuffer)

Zero ICE

消息中間件

相關文章
相關標籤/搜索