# 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自动配置,简化集成和使用
该框架经过完整测试,可以满足企业级应用的需求。