09-netty基础-手写rpc-原理-01
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的重点知识