# 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**: 2 - **Forks**: 0 - **Created**: 2025-02-20 - **Last Updated**: 2025-12-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: rpc, SpringBoot, etcd, 分布式 ## README # FuYuan RPC 项目介绍 FuYuan RPC 是一个高性能、易扩展的远程过程调用框架,旨在简化分布式系统中的服务通信。它支持多种传输协议和序列化方式,适用于各种规模的应用场景。 ## 主要特性 - 高性能:采用高效的网络通信机制,确保低延迟和高吞吐量。 - 易扩展:支持插件化扩展,可以根据需求轻松集成新的功能。 - 多种协议支持:支持多种传输协议,如 TCP、HTTP 等。 - 灵活的序列化:支持多种序列化方式,如 JSON、Protobuf 等。 - 安全认证:支持基于HMAC的对称密钥认证机制,保障服务调用安全。 - 链路追踪:内置分布式链路追踪功能,便于监控服务调用关系。 - 管理控制台:提供Web管理界面,方便监控和管理RPC服务。 - 负载均衡:支持多种负载均衡策略,包括一致性Hash、随机、轮询等。 - 容错机制:提供多种容错策略,如快速失败、静默、故障转移等。 ## 当前版本 - 版本号:1.0-SNAPSHOT ## 主要更新: - 初始版本,包含核心功能和基础架构。 - 添加 全局配置文件 - 支持 消费者使用模拟数据 - 支持 Hessian、Kryo 和 JSON 序列化 - 支持 自定义序列化方案 - 重构 ConfigUtils 类,支持加载 YAML YML 配置文件 优先级 本包>模块>jar properties>yml>yaml - 新增 MockDataUtil 类,用于生成模拟数据 - 更新 MockDataGeneratorProxy,使用新的 MockDataUtil 类 - 支持 服务提供者返回模拟数据 - 支持 注册中心实现服务发现和注册 内置Etcd - 支持 支持自定义注册中心 - 添加 负载均衡基础实现(一致性 Hash, 随机,轮询) - 支持 自定义负载均衡算法 - 添加 重试策略 - 支持 自定义重试策略 - 添加 添加容错策略(快速失败,静默,故障转移) - 支持 自定义容错策略 - springboot 项目化改造 - 添加 完整的安全认证体系,支持基于HMAC的对称密钥认证 - 添加 分布式链路追踪功能,支持服务调用链路跟踪 - 添加 管理控制台,提供服务监控和管理界面 ## 使用方式 ### 服务端(服务提供者) - 引入依赖 ```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); } } ~~~ ### 模拟调用 - 返回是自定义对象时 确保存在无参构造器 ## 安全认证 FuYuan RPC框架支持基于HMAC的对称密钥认证机制,确保服务调用的安全性。 ### 启用安全认证 在配置文件中启用安全认证: ```yaml fuyun: rpc: # 启用认证 enableAuth: true # 认证实现类 authenticator: com.fuyun.rpc.common.security.SymmetricAuthenticator # 客户端凭证 clientCredentials: clientId: your-client-id clientSecret: your-client-secret ``` ## 链路追踪 框架内置了分布式链路追踪功能,可以跟踪服务间的调用关系和性能表现。 ### 启用链路追踪 链路追踪功能默认启用,可通过以下配置进行调整: ```yaml fuyun: rpc: # 启用链路追踪 enableTracing: true ``` ## 管理控制台 FuYuan RPC提供了Web管理控制台,用于监控和管理RPC服务。 ### 启动管理控制台 ```bash cd fuyun-rpc-admin-console mvn spring-boot:run ``` 访问地址:http://localhost:8088 ### 功能特性 - 服务监控仪表板 - 服务列表查看 - 服务详情查询 - 实时状态监控 ## 总结 FuYuan RPC是一个功能完善的生产级RPC框架,具有以下优势: 1. **高性能**:基于Netty和Vert.x构建,提供高并发处理能力 2. **安全性**:内置HMAC认证机制,保护服务间通信安全 3. **可观测性**:集成链路追踪和管理控制台,便于监控和调试 4. **灵活性**:支持多种序列化方式、负载均衡策略和容错机制 5. **易用性**:采用Spring Boot自动配置,简化集成和使用 该框架经过完整测试,可以满足企业级应用的需求。