阿裏首席架構師科普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框架是什麽