天天看點

Netty-實作RPC架構Netty實作RPC

Netty實作RPC

RPC基本介紹

  1. RPC(Remote Procedure Call)遠端過程調用,就是一個計算機A上有一個程式,一個計算機B上也有一個程式,A應用程式可以調用B應用程式的方法,調用方式很簡單就好像調用自己的本地方法那樣
  2. 常用的RPC架構有:阿裡的Dubbo、Google的gRPC、Spring的SpringCloud等

RPC調用流程

Netty-實作RPC架構Netty實作RPC
  1. 服務消費者(Client)以本地調用方式調用服務
  2. ClientStub接收到調用後負責将方法、參數等封裝成能夠進行網絡傳輸的消息體
  3. ClientStub将消息進行編碼并且發送到服務端
  4. ServerStub接收到消息進行解碼
  5. ServerStub根據解碼結果調用本地的服務
  6. 本地服務執行并将結果傳回給ServerStub
  7. ServerStub将傳回導入結果進行編碼并發送給消費方
  8. ClientStub接收到消息并進行解碼
  9. 服務消費方(Client)得到結果

自己實作dubbo RPC(基于Netty)

  1. dubbo底層使用了netty作為網絡通訊架構,要求用Netty實作一個簡單的EPC架構
  2. 模闆dubbo,消費者和提供者約定接口和協定,消費者遠端調用提供者的服務,提供者傳回一個字元串,消費者列印提供者傳回的資料。底層網絡通訊協定使用Netty 4.x

共同接口

需定義一個服務提供方與服務消費方都需要的共同接口

Netty-實作RPC架構Netty實作RPC

服務提供者

實作HelloService接口

Netty-實作RPC架構Netty實作RPC

編寫netty核心類

Netty-實作RPC架構Netty實作RPC

編寫處理業務的Handler

Netty-實作RPC架構Netty實作RPC

服務消費者

編寫netty核心類

Netty-實作RPC架構Netty實作RPC

編寫處理業務的Handler

Netty-實作RPC架構Netty實作RPC

測試

Netty-實作RPC架構Netty實作RPC
Netty-實作RPC架構Netty實作RPC