一个高性能、易用的Java RPC框架,支持服务注册与发现、负载均衡、多种序列化方式等特性。
- 🚀 高性能: 基于Netty的异步非阻塞网络通信
- 🔧 易用性: 简洁的API设计,支持注解驱动
- 🔌 可扩展: 插件化架构,支持自定义扩展
- 📦 多序列化: 支持JSON、Kryo、Protobuf等多种序列化方式
- ⚖️ 负载均衡: 支持轮询、随机、加权轮询、一致性哈希等算法
- 🏗️ 注册中心: 支持Zookeeper、Nacos等注册中心
- 🎯 代理机制: 支持JDK动态代理和CGLIB代理
- ✅ 核心架构设计 - 完成
- ✅ 基础接口定义 - 完成
- ✅ 网络通信层 - 完成
- ✅ 序列化模块 - 完成
- ✅ 注册中心 - 完成
- ✅ 负载均衡 - 完成
- ✅ 代理机制 - 完成
- 🚧 Spring集成 - 开发中
- 🚧 测试用例 - 开发中
- 🚧 性能优化 - 待开始
- 🚧 文档完善 - 进行中
# 克隆项目
git clone https://github.com/tanzhilangnw/lightning-rpc.git
cd lightning-rpc
# 安装到本地Maven仓库
mvn clean install<dependency>
<groupId>com.lightning</groupId>
<artifactId>rpc-spring</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>服务提供者:
@RpcService(version = "1.0.0", group = "default")
@Service
public class UserServiceImpl implements UserService {
@Override
public User getUserById(Long id) {
// 业务逻辑
return userRepository.findById(id);
}
}服务消费者:
@Service
public class UserController {
@RpcReference(version = "1.0.0", group = "default")
private UserService userService;
public User getUser(Long id) {
return userService.getUserById(id);
}
}配置文件:
lightning:
rpc:
application:
name: my-application
server:
host: 127.0.0.1
port: 8080
serialization:
type: json
registry:
type: zookeeper
address: 127.0.0.1:2181
load-balancer:
type: roundRobinlightning-rpc/
├── rpc-core/ # 核心框架
├── rpc-protocol/ # 网络通信协议
├── rpc-serialization/ # 序列化模块
├── rpc-registry/ # 注册中心
├── rpc-loadbalance/ # 负载均衡
├── rpc-spring/ # Spring集成
└── rpc-example/ # 使用示例
- RpcRequest/RpcResponse: RPC请求和响应对象
- Invoker: 调用器接口,定义RPC调用方法
- Registry: 注册中心接口,支持服务注册与发现
- LoadBalancer: 负载均衡器接口,支持多种负载均衡算法
- Serializer: 序列化器接口,支持多种序列化方式
- ProxyFactory: 代理工厂接口,支持多种代理机制
| 配置项 | 说明 | 默认值 |
|---|---|---|
lightning.rpc.application.name |
应用名称 | lightning-rpc |
lightning.rpc.server.host |
服务器地址 | 127.0.0.1 |
lightning.rpc.server.port |
服务器端口 | 8080 |
lightning.rpc.serialization.type |
序列化类型 | json |
| 配置项 | 说明 | 默认值 |
|---|---|---|
lightning.rpc.registry.type |
注册中心类型 | zookeeper |
lightning.rpc.registry.address |
注册中心地址 | 127.0.0.1:2181 |
| 配置项 | 说明 | 默认值 |
|---|---|---|
lightning.rpc.load-balancer.type |
负载均衡算法 | roundRobin |
- 使用Netty的NIO模型
- 支持连接池复用
- 异步非阻塞调用
- 支持多种序列化方式
- 根据场景选择合适的序列化器
- 支持压缩传输
- 支持权重配置
- 支持一致性哈希
- 支持动态权重调整
public class CustomSerializer implements Serializer {
@Override
public byte[] serialize(Object obj) throws Exception {
// 自定义序列化逻辑
}
@Override
public <T> T deserialize(byte[] data, Class<T> clazz) throws Exception {
// 自定义反序列化逻辑
}
@Override
public SerializerType getType() {
return SerializerType.CUSTOM;
}
}public class CustomLoadBalancer implements LoadBalancer {
@Override
public ServiceInfo select(List<ServiceInfo> services) {
// 自定义负载均衡逻辑
}
@Override
public String getName() {
return "custom";
}
}- 保持接口简单,避免复杂对象
- 合理设置超时时间
- 使用版本控制
- 选择合适的序列化方式
- 配置合适的线程池大小
- 使用连接池
- 监控服务调用成功率
- 监控响应时间
- 设置告警阈值
- 完善Spring自动配置
- 添加单元测试和集成测试
- 性能基准测试
- 完善文档和示例
- 支持更多序列化方式
- 添加监控和指标
- 支持服务治理功能
- 性能优化
- 支持多语言客户端
- 云原生支持
- 微服务治理
- 企业级特性
欢迎参与项目开发!
# 克隆项目
git clone https://github.com/tanzhilangnw/lightning-rpc.git
cd lightning-rpc
# 安装依赖
mvn clean install
# 运行测试
mvn test- 使用清晰的提交信息
- 遵循代码规范
- 添加必要的测试
- 更新相关文档
MIT License
- 项目地址: https://github.com/tanzhilangnw/lightning-rpc
- 问题反馈: https://github.com/tanzhilangnw/lightning-rpc/issues
- 作者: tanzhilangnw