1. 程式人生 > >阿裏首席架構師科普RPC框架是什麽

阿裏首席架構師科普RPC框架是什麽

ket color web 場景 proto 編程語言 微軟 pro p s

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

消息中間件

RPC框架的視頻已經錄制好,分享群619881427中免費下載學習,希望能夠幫助有需要的程序員們。

阿裏首席架構師科普RPC框架是什麽