# fuyun-rpc-spring-boot **Repository Path**: zrq1351/fuyun-rpc-spring-boot ## Basic Information - **Project Name**: fuyun-rpc-spring-boot - **Description**: fuyun-rpc springboot版本 FuYuan RPC 是一个高性能、易扩展的远程过程调用框架,旨在简化分布式系统中的服务通信。它支持多种传输协议和序列化方式,适用于各种规模的应用场景。 - **Primary Language**: Unknown - **License**: WTFPL - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-20 - **Last Updated**: 2025-02-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: rpc, SpringBoot, etcd, 分布式 ## README # FuYuan RPC 项目介绍 FuYuan RPC 是一个高性能、易扩展的远程过程调用框架,旨在简化分布式系统中的服务通信。它支持多种传输协议和序列化方式,适用于各种规模的应用场景。 ## 主要特性 - 高性能:采用高效的网络通信机制,确保低延迟和高吞吐量。 - 易扩展:支持插件化扩展,可以根据需求轻松集成新的功能。 - 多种协议支持:支持多种传输协议,如 TCP、HTTP 等。 - 灵活的序列化:支持多种序列化方式,如 JSON、Protobuf 等。 ## 当前版本 - 版本号:1.0-SNAPSHOT ## 主要更新: - 初始版本,包含核心功能和基础架构。 - 添加 全局配置文件 - 支持 消费者使用模拟数据 - 支持 Hessian、Kryo 和 JSON 序列化 - 支持 自定义序列化方案 - 重构 ConfigUtils 类,支持加载 YAML YML 配置文件 优先级 本包>模块>jar properties>yml>yaml - 新增 MockDataUtil 类,用于生成模拟数据 - 更新 MockDataGeneratorProxy,使用新的 MockDataUtil 类 - 支持 服务提供者返回模拟数据 - 支持 注册中心实现服务发现和注册 内置Etcd - 支持 支持自定义注册中心 - 添加 负载均衡基础实现(一致性 Hash, 随机,轮询) - 支持 自定义负载均衡算法 - 添加 重试策略 - 支持 自定义重试策略 - 添加 添加容错策略(快速失败,静默,故障转移) - 支持 自定义容错策略 - springboot 项目化改造 ## 使用方式 ### 服务端(服务提供者) - 引入依赖 ```xml com.fuyun.rpc fuyun-rpc-server-spring-boot-starter 1.0-SNAPSHOT ``` - 在springboot项目启动类上添加注解[@EnableFuyunServerRpc](fuyun-rpc-server-spring-boot-autoconfigure/src/main/java/com/fuyun/rpc/server/annotations/EnableFuyunServerRpc.java) ~~~java @SpringBootApplication @EnableFuyunServerRpc public class ServerSpringApplication { public static void main(String[] args) { SpringApplication.run(ServerSpringApplication.class, args); } } ~~~ - 在服务提供类上加上 [@FuyunRpcService](fuyun-rpc-server-spring-boot-autoconfigure/src/main/java/com/fuyun/rpc/server/annotations/FuyunRpcService.java) ~~~java /** * FuyunRpcService * 不配置serviceVersion与group ,则默认使用配置文件配置的serviceVersion与group */ @FuyunRpcService(value = ClazzService.class,serviceVersion = "1.0") @Service public class ClazzServiceImpl implements ClazzService { @Override public Clazz getClazz(Integer id) { return new Clazz(id, "三年级一班"); } } @FuyunRpcService(value = UserService.class) @Service public class UserServiceImpl implements UserService { @Override public String getUserName(User user) { return user.getName(); } @Override public User getUser() { User user = new User(); user.setName("zrq"); user.setAge(18.0); user.setList(null); user.setMap(null); return user; } } ~~~ ### 客户端(服务消费者) - 引入依赖 ```xml com.fuyun.rpc fuyun-rpc-client-spring-boot-starter 1.0-SNAPSHOT ``` - 在字段上添加注解[@FuyunRpcAutowired](fuyun-rpc-client-spring-boot-autoconfigure/src/main/java/com/fuyun/rpc/client/annotations/FuyunRpcAutowired.java) ,在方法中正常使用即可 ~~~java @SpringBootTest(classes = {FuyunRpcClientAutoConfigure.class}) class FuyunExampleConsumerApplicationTests { /** * FuyunRpcAutowired * 不配置serviceVersion与serviceGroup等,则默认使用配置文件配置的serviceVersion与group * 确保与服务端配置的serviceVersion与group一致 */ @FuyunRpcAutowired(serviceVersion = "1.0") private ClazzService clazzService; @FuyunRpcAutowired(serviceVersion = "2.0") private UserService userService; @Test void testGetClazzNotNull() { Clazz clazz = clazzService.getClazz(1); Assert.notNull(clazz, "获取班级信息失败"); System.out.println(clazz); } @Test void testGetUserNameNotNull() { User user = userService.getUser(); Assert.notNull(user, "获取用户失败"); System.out.println(user); } } ~~~ ### 模拟调用 - 返回是自定义对象时 确保存在无参构造器