Skip to content

0oHo0/Duu-Rpc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spring Boot Java Etcd Zookeeper Hutool Maven Vert.x

一款轻量级自定义协议RPC框架

项目介绍

基于 Java + Etcd + Vert.x + 自定义协议实现,开发者只需引入 Spring Boot Starter,就能通过注解和配置的方式快速使用框架,实现像调用本地方法一样轻松调用远程服务。

项目功能

  • 基于Vert.x的TCP协议实现长连接通信,包括心跳检测、解决粘包半包等
  • 基于Etcd实现分布式服务注册与发现,服务支持自动续期与下线注销
  • 实现了轮询、随机、加权随机等负载均衡算法
  • 支持fastJsonhessiankryojdk的序列化方式
  • 支持多种远程调用请求重试与容错机制

项目亮点

  • 使用SPI机制方便支持开发者自行扩展注册中心、负载均衡器、重试策略、容错策略

  • 通过修改配置文件更换序列化方式、注册中心

  • 消费者本地缓存注册中心服务信息,并通过Etcd Watch机制更新缓存。

  • 支持注解驱动,降低开发者使用成本

  • 自定义紧凑型消息结构RPC协议,解决TCP半包粘包,提升网络传输性能

  • 使用本地对象维护已获取到的服务提供者节点缓存,减轻注册中心压力。

项目说明

传统RPC流程

image-20240329173629919

项目架构

image-20240523164554996

  • config 配置层:相关的配置

  • proxy 服务代理层:负责对底层调用细节的封装,调用远程方法像调用本地的方法一样;

  • registry 注册中心层:封装服务地址的注册与发现,以及一些权重,配置动态调整等功能;

  • cluster 路由层:负责封装多个提供者的路由及负载均衡,并桥接注册中心;

  • protocol 协议层:负责请求数据的转码封装等作用;

  • serialize 数据序列化层:对需要在网络传输的数据进行序列化;

  • tolerant 容错层:当服务调用出现失败之后需要有容错层的兜底辅助;

项目框图

image-20240329205625040

自定义协议结构

img

项目结构

目录

About

基于 Java + Etcd + Vert.x实现的一款轻量级自定义协议RPC框架

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages