天天看點

阿裡架構師談:主流RPC架構詳解,以及與SOA、REST的差別

什麼是RPC

RPC(Remote Procedure Call Protocol)——遠端過程調用協定,它是一種通過網絡從遠端計算機程式上請求服務,而不需要了解底層網絡技術的協定。

簡言之,RPC使得程式能夠像通路本地系統資源一樣,去通路遠端系統資源。

比較關鍵的一些方面包括:

通訊協定

序列化

資源(接口)描述

服務架構

性能

語言支援等。

REST 和 SOAP、RPC

阿裡架構師談:主流RPC架構詳解,以及與SOA、REST的差別

1.REST

可以看着是http協定的一種直接應用,預設基于json作為傳輸格式,使用簡單,學習成本低效率高,但是安全性較低。

2.SOAP

SOAP是一種資料交換協定規範,是一種輕量的、簡單的、基于XML的協定的規範。而SOAP可以看着是一個重量級的協定,基于xml,SOAP在安全方面是通過使用XML-Security和XML-Signature兩個規範組成了WS-Security來實作安全控制的,目前已經得到了各個廠商的支援 。

它有什麼優點?簡單總結為: 易用,靈活,跨語言,跨平台。

3.RPC(遠端過程調用)是什麼?

簡單的說,RPC就是從一台機器(用戶端)上通過參數傳遞的方式調用另一台機器(伺服器)上的一個函數或方法(可以統稱為服務)并得到傳回的結果。

REST 和 SOAP、RPC 有何差別呢?沒什麼太大差別,他們的本質都是提供可支援分布式的基礎服務,最大的差別在于他們各自的的特點所帶來的不同應用場景 。

RPC工作原理

運作時,一次客戶機對伺服器的RPC調用,其内部操作大緻有如下十步:

1.調用用戶端句柄;執行傳送參數

2.調用本地系統核心發送網絡消息

3.消息傳送到遠端主機

4.伺服器句柄得到消息并取得參數

5.執行遠端過程

6.執行的過程将結果傳回伺服器句柄

7.伺服器句柄傳回結果,調用遠端系統核心

8.消息傳回本地主機

9.客戶句柄由核心接收消息

10.客戶接收句柄傳回的資料

主流RPC架構

簡單介紹其中幾種比較典型的:

阿裡架構師談:主流RPC架構詳解,以及與SOA、REST的差別

1.RMI

利用java.rmi包實作,基于Java遠端方法協定(Java Remote Method Protocol) 和java的原生序列化。

2.Hessian

是一個輕量級的remoting onhttp工具,使用簡單的方法提供了RMI的功能。 基于HTTP協定,采用二進制編解碼。

3.protobuf-rpc-pro

是一個Java類庫,提供了基于 Google 的 Protocol Buffers 協定的遠端方法調用的架構。基于 Netty 底層的 NIO 技術。支援 TCP 重用/ keep-alive、SSL加密、RPC 調用取消操作、嵌入式日志等功能。

4.Thrift

是一種可伸縮的跨語言服務的軟體架構。它擁有功能強大的代碼生成引擎,無縫地支援C + +,C#,Java,Python和PHP和Ruby。thrift允許你定義一個描述檔案,描述資料類型和服務接口。依據該檔案,編譯器友善地生成RPC用戶端和伺服器通信代碼。

最初由facebook開發用做系統内個語言之間的RPC通信,2007年由facebook貢獻到apache基金 ,現在是apache下的opensource之一 。支援多種語言之間的RPC方式的通信:php語言client可以構造一個對象,調用相應的服務方法來調用java語言的服務,跨越語言的C/S RPC調用。底層通訊基于SOCKET。

5.Avro

出自Hadoop之父Doug Cutting, 在Thrift已經相當流行的情況下推出Avro的目标不僅是提供一套類似Thrift的通訊中間件,更是要建立一個新的,标準性的雲計算的資料交換和存儲的Protocol。支援HTTP,TCP兩種協定。

6.Dubbo

Dubbo是 阿裡巴巴公司開源的一個高性能優秀的服務架構,使得應用可通過高性能的 RPC 實作服務的輸出和輸入功能,可以和 Spring架構無縫內建。

簡單的使用方法:

1、被遠端調用的接口,需要在zookeeper中進行注冊;

2、需要遠端調用的服務在zookeeper中聲明自己需要的接口;

3、zookeeper将已經注冊的接口通知給需要的服務;

群内提供免費的Java架構學習資料,QQ群:643459718

(裡面有高可用、高并發、高性能及分布式、Jvm性能調優、Spring源碼,

MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)

阿裡架構師談:主流RPC架構詳解,以及與SOA、REST的差別
阿裡架構師談:主流RPC架構詳解,以及與SOA、REST的差別