netty系列文章:
01-netty基礎-socket |
02-netty基礎-java四種IO模型 |
03-netty基礎-多路復用select、poll、epoll |
04-netty基礎-Reactor三種模型 |
05-netty基礎-ByteBuf數據結構 |
06-netty基礎-編碼解碼 |
07-netty基礎-自定義編解碼器 |
08-netty基礎-自定義序列化和反序列化 |
09-netty基礎-手寫rpc-原理-01 |
10-netty基礎-手寫rpc-定義協議頭-02 |
11-netty基礎-手寫rpc-支持多序列化協議-03 |
12-netty基礎-手寫rpc-編解碼-04 |
13-netty基礎-手寫rpc-消費方生成代理-05 |
14-netty基礎-手寫rpc-提供方(服務端)-06 |
1 涉及到的知識點
- netty自定義編解碼(自定義消息頭、傳輸對象)
- ?支撐多序列化實現
- 服務消費方使用spring生成代理對象并放入到spring容器中
- 使用netty實現客戶端和服務端通信代碼
- 使用EnvironmentAware實現用yml中讀取配置
- ......
2 代碼以及分支說明
地址:https://gitee.com/huyanqiu6666/netty-rpc-protocol.git
分支說明:
分支名 | 描述 |
master | 搭建多模塊的項目 |
20250805-01-base-provider | 服務端協議api |
20250805-02-protocol | 自定義協議相關的類 |
20250805-03-serializer | 序列化相關的類 |
20250805-04-encoder-decoder | 編解碼 |
20250805-05-spring-bean | 增加spring為客戶端增加代理類、依賴注入等 |
20250806-06-netty-server-client | 增加客戶端連接服務端 |
20250806-07-consumer-config | 增加客戶端配置,ip、端口號等 |
20250806-08-provider-config | ?服務端編寫以及配置 |
3 項目結構
4 rpc流程
1、自定義服務提供方和消費方注解 BonnieRemoteReference(消費方)、BonnieRemoteService(提供方)
2、自定義協議頭(包含序列化方式)、協議體
3、支撐多種序列化方式,比如java、json
4、自定義編解碼
5、客戶端啟動的時候在spring容器加載bean定義文件之后,初始化之前,為添加了BonnieRemoteReference的類屬性生成Bean的代理對象放入到spring容器中
6、服務端啟動的時候,在spring的對象初始化完成之后,識別出被BonnieRemoteService修飾的類,將這種類下的所有方法都緩存到Map中,以供后續處理客戶端的請求反射調用
后面的文章會詳細介紹涉及到的實現rpc的重點知識