手写RPC-01-父工程搭建和基本模块关系

参考资源:

仅为学习记录和思考,完整相关知识请查阅权威资料

一、创建父工程y_rpc

  • 删除src
  • dependencyManagement统一管理版本

二、模块依赖关系和介绍

alt

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(自动装配原理)
全部评论
大佬好牛最近也想做个手写rpc框架的项目
点赞
送花
回复
分享
发布于 2022-09-22 00:16 山东

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务