Skip to content

Mack189/my-rpc-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

my-rpc-framework

前言

这是一个简易的RPC框架,写这个 RPC 框架主要是为了通过造轮子的方式来学习,检验自己对于RPC 的底层原理以及各种 Java 编码实践的运用。

项目基本功能

  • 实现了基于 Java 原生 Socket 传输与 Netty 传输两种网络传输方式

  • 实现了四种序列化算法,Json 方式、Kryo 算法(默认)、Hessian 算法与 Google Protobuf 方式

  • 使用 Nacos 作为注册中心,管理服务提供者

  • 消费端如采用 Netty 方式,会复用 Channel 避免多次连接

  • 使用 Netty 心跳机制: 保证客户端和服务端的连接不被断掉,避免重连。

  • 实现自定义的通信协议

  • 服务提供者自动注册服务

  • 实现了两种负载均衡算法:随机算法与轮转算法

  • 可配置序列化方式、网络传输方式、负载均衡算法等,避免硬编码

  • 集成 Spring 通过注解注册服务

  • 自定义通信协议:

    ​ 魔数: 4 个字节。表识一个 MRF 协议包

    ​ 包类型:标明这是一个调用请求还是调用响应

    ​ 序列化器编号:标识序列化的方式,比如是使用 Java 自带的序列化,还是 json,kyro 等序列化方式。

    ​ 消息体长度 : 运行时计算出来

    ​ 数据:传输的对象,通常是一个RpcRequestRpcClient对象

项目各模块作用

  • rpc-api-demo —— 通用接口
  • rpc-common —— 公用类
  • rpc ——————— 框架的核心代码实现
  • test-client ——— 用于测试服务消费端
  • test-server ——— 用于测试的服务提供端

环境要求

需要 JDK 8 或者更高版本

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages