RPC是什么?科普一下


RPC概念及分類

RPC全稱為Remote Procedure Call,翻譯過來為“遠程過程調用”。目前,主流的平台中都支持各種遠程調用技術,以滿足分布式系統架構中不同的系統之間的遠程通信和相互調用。遠程調用的應用場景極其廣泛,實現的方式也各式各樣。

 

從通信協議的層面,大致可以分為:

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

基於TCP協議的(通常會借助Mina、Netty等高性能網絡框架)

 

從不同的開發語言和平台層面,分為:

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

支持跨平台通信的技術(例如HTTP Rest、Thrift等)

 

從調用過程來看,分為:

同步通信調用(同步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

消息中間件


免責聲明!

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



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