手写RPC02:rpc-core模块

一、模块整体功能

提供rpc功能的核心逻辑实现,以及一些工具类的提供

  • 定义消息传输协议: messageProtrol是传输的消息体

  • 负载均衡策略

  • 序列化和反序列化

  • 编码器和解码器

  • RPC异常定义

二、目录层级和功能

  • balancer:负载均衡
    • 随机选择策略
    • 轮询策略

根据策略从服务信息列表中选取一个返回

  • 编码解码
    • 继承netty的ByteToMessage编码解码,实现字节流和消息体的转换
    • 编码过程:根据消息体组成,按顺序进行组装,产生消息体
  • 传输格式
    • MessageProtocol
      • 消息头messageHeader
        • 魔数
        • 报文类型
        • 请求ID
        • 数据长度
        • 协议版本号
        • 序列化算法
      • T data 传输数据
    • ProtocolConstans定义消息格式用到的常量
      • 头部总长:42
      • 魔数:0x00
      • 请求长度:0x32
      • 版本号:0x01
  • common包
    • RpcRequest
      • RPC服务名称
      • 调用方法名称
      • 参数的class对象数组
      • 参数对象数组
    • RpcResponse
      • 调用返回结果
      • 调用返回提示信息
    • ServiceInfo 服务信息封装
      • 服务名称
      • 任务名称
      • 服务调用地址名称
      • 服务地址
      • 端口号 -ServiceUtil:调ServiceKey产生一个服务名前缀
  • Serialization包
    • Json序列化方式
      • 静态转化器ObjectMapper
        • static代码块中创建,传JSONINCLUDE.ALWAYS,对象都会被序列化
        • 序列化方法:调用mapper的writeValueAsString.getBytes获取字节数组
        • 反序列化方法:调用mapper的readValue(Arrays.toString(data),clazz)返回一个反序列化对象
    • Hessian序列化方式
      • HessianSerializerOutput
      • HessianSerializerInput
全部评论
你好,请问这个项目是在哪里学习的呢
点赞 回复 分享
发布于 2022-06-02 01:06

相关推荐

Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
11-09 01:22
已编辑
东南大学 Java
高级特工穿山甲:羡慕,我秋招有家企业在茶馆组织线下面试,约我过去“喝茶详谈”😢结果我去了发现原来是人家喝茶我看着
点赞 评论 收藏
分享
11-15 18:39
已编辑
西安交通大学 Java
全村最靓的仔仔:卧槽,佬啥bg呢,本也是西交么
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务