Skip to content

CRPC(轻量级的RPC框架🎄)是一款专为简化分布式系统中的远程过程调用(RPC)而设计的高性能框架。实践网络请求➕序列化+Vert.x➕Etcd➕反射➕动态代理,提升架构设计能力。

License

Notifications You must be signed in to change notification settings

lhccong/cong-rpc

Repository files navigation

CONG-RPC一款轻量级的RPC框架🎄

项目介绍🌸

一款基于Vert.x+Etcd实现的轻量级Java RPC框架。提供服务注册,发现,负载均衡。是一个学习RPC工作原理的良好示例。

通过这个简易项目的学习,可以让你从零开始实现一个类似 Dubbo 服务框架 mini 版RPC,学到 RPC 的底层原理以及各种 Java 编码实践的运用。下面看一下RPC的调用流程:

功能&设计🚀

目录结构

cong-rpc框架
├─cong-rpc-core	--rpc核心实现类
├─example-common	--示例代码的公共依赖,包括接口、Model 等
├─example-consumer	--[示例]服务消费者
└─example-provider	--[示例]服务提供者

核心模块结构


├── registry                       -> 注册中心相关功能
├── model                          -> 模型数据存放
├── server                         -> 服务启动配置
└── serialize                      -> 序列化与反序列化

功能:

  • 简单易学的代码和框架,在代码中含有大量注解
  • 基于Vert.x实现长连接通信,包括心跳检测、解决粘包半包等
  • 基于Etcd实现分布式服务注册与发现
  • 实现了轮询、随机、加权随机等负载均衡算法
  • 实现了同步调用、异步调用多种调用方式
  • 支持jdk的动态代理方式
  • 支持fastJsonhessiankryojdk的序列化方式
  • 支持简易扩展点,泛化调用等功能

设计:

crpc框架调用流程:

  • 代理层:负责对底层调用细节的封装;
  • 链路层:负责执行一些自定义的过滤链路,可以供后期二次扩展;
  • 路由层:负责在集群目标服务中的调用筛选策略;
  • 协议层:负责请求数据的转码封装等作用;
  • 注册中心:关注服务的上下线,以及一些权重,配置动态调整等功能;
  • 容错层:当服务调用出现失败之后需要有容错层的兜底辅助;

About

CRPC(轻量级的RPC框架🎄)是一款专为简化分布式系统中的远程过程调用(RPC)而设计的高性能框架。实践网络请求➕序列化+Vert.x➕Etcd➕反射➕动态代理,提升架构设计能力。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages