手写RPC-01-父工程搭建和基本模块关系
参考资源:
仅为学习记录和思考,完整相关知识请查阅权威资料
一、创建父工程y_rpc
- 删除src
- dependencyManagement统一管理版本
二、模块依赖关系和介绍
1.provider-api
- 以接口的方式提供服务标准
- 调用者需要依赖这个模块,才能选择自己需要的服务调用
- 提供者也要依赖,定义各种服务标准的实现
2.consumer
- rpc调用者
- 使用自定义注解RpcAutowired注入要调用的远程服务
- 可以自定义负载均衡策略
- 依赖rpc-client发起rpc调用
3.provider
- rpc服务提供者
- 使用自定义注解RpcService注入要调用的远程服务
- 依赖rpc-server提供rpc服务
4.rpc-core
- 提供rpc核心功能
- 注册中心——基于zookeeper
- 消息协议——自定义消息格式和服务格式
- 序列化和反序列化——hessian搭配jdk字节输入输出流实现
- rpc调用异常定义
5.rpc-client
- rpc客户端,定义为一个starter方便集成
- 自定义注解RpcAutowired
- 配置
- 服务发现策略
- 代理处理——封装请求生成代理对象,发起网络通信
- 请求映射响应结果的缓存
- 负载均衡配置
- 网络传输——netty实现
- bean后置处理器
- 获取所有的bean,通过动态代理修改被RpcAutowired的修饰字段的值为代理对象,invoke调用时通过rpc发起
- 数据响应处理
- 声明为一个starter(自动装配原理)
5.rpc-server
- rpc客户端,定义为一个starter方便集成
- 自定义注解RpcService
- 配置
- 服务的注册发现处理配置
- rpc服务端——netty进行处理
- 代理处理——封装请求生成代理对象,发起网络通信
- 请求映射响应结果的缓存
- 负载均衡配置
- 数据响应处理
- bean后置处理器
- 获取所有的bean,通过动态代理修改被RpcAutowired的修饰字段的值为代理对象,invoke调用时通过rpc发起
- RpcServerProvider
- 注册到注册中心,以及从注册中心清除
- 开启Netty处理
- rpc启动
- 本地服务缓存 将暴露的服务缓存,处理请求时可以拿到服务直接调用,减少反射实例化服务的开销
- 声明为一个starter(自动装配原理)