09-netty基础-手写rpc-原理-01

发布于:2025-08-09 ⋅ 阅读:(17) ⋅ 点赞:(0)

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的重点知识


网站公告

今日签到

点亮在社区的每一天
去签到