这是一个简易的RPC框架,写这个 RPC 框架主要是为了通过造轮子的方式来学习,检验自己对于RPC 的底层原理以及各种 Java 编码实践的运用。
-
实现了基于 Java 原生 Socket 传输与 Netty 传输两种网络传输方式
-
实现了四种序列化算法,Json 方式、Kryo 算法(默认)、Hessian 算法与 Google Protobuf 方式
-
使用 Nacos 作为注册中心,管理服务提供者
-
消费端如采用 Netty 方式,会复用 Channel 避免多次连接
-
使用 Netty 心跳机制: 保证客户端和服务端的连接不被断掉,避免重连。
-
实现自定义的通信协议
-
服务提供者自动注册服务
-
实现了两种负载均衡算法:随机算法与轮转算法
-
可配置序列化方式、网络传输方式、负载均衡算法等,避免硬编码
-
集成 Spring 通过注解注册服务
-
自定义通信协议:
魔数: 4 个字节。表识一个 MRF 协议包
包类型:标明这是一个调用请求还是调用响应
序列化器编号:标识序列化的方式,比如是使用 Java 自带的序列化,还是 json,kyro 等序列化方式。
消息体长度 : 运行时计算出来
数据:传输的对象,通常是一个
RpcRequest
或RpcClient
对象
- rpc-api-demo —— 通用接口
- rpc-common —— 公用类
- rpc ——————— 框架的核心代码实现
- test-client ——— 用于测试服务消费端
- test-server ——— 用于测试的服务提供端
需要 JDK 8 或者更高版本