Netty實作RPC
RPC基本介紹
- RPC(Remote Procedure Call)遠端過程調用,就是一個計算機A上有一個程式,一個計算機B上也有一個程式,A應用程式可以調用B應用程式的方法,調用方式很簡單就好像調用自己的本地方法那樣
- 常用的RPC架構有:阿裡的Dubbo、Google的gRPC、Spring的SpringCloud等
RPC調用流程
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNCM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP310dRpWTwkFROBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2cDN3ITN0QTM5ITMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
- 服務消費者(Client)以本地調用方式調用服務
- ClientStub接收到調用後負責将方法、參數等封裝成能夠進行網絡傳輸的消息體
- ClientStub将消息進行編碼并且發送到服務端
- ServerStub接收到消息進行解碼
- ServerStub根據解碼結果調用本地的服務
- 本地服務執行并将結果傳回給ServerStub
- ServerStub将傳回導入結果進行編碼并發送給消費方
- ClientStub接收到消息并進行解碼
- 服務消費方(Client)得到結果
自己實作dubbo RPC(基于Netty)
- dubbo底層使用了netty作為網絡通訊架構,要求用Netty實作一個簡單的EPC架構
- 模闆dubbo,消費者和提供者約定接口和協定,消費者遠端調用提供者的服務,提供者傳回一個字元串,消費者列印提供者傳回的資料。底層網絡通訊協定使用Netty 4.x
共同接口
需定義一個服務提供方與服務消費方都需要的共同接口