Skip to content

kazelise/rpc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

自制RPC框架 (KamaRPC)

一个从零开始构建的高性能Java RPC框架,支持多种序列化协议、负载均衡、服务发现和熔断机制。

🚀 项目特色

  • 多版本演进: 从基础Socket到Netty,逐步完善的RPC实现
  • 多种序列化: 支持JSON、Hessian、Kryo、Protostuff等多种序列化协议
  • 服务治理: 集成ZooKeeper服务发现与注册
  • 负载均衡: 随机、轮询、一致性哈希等多种负载均衡策略
  • 熔断降级: 完善的熔断器机制和限流保护
  • 性能优化: 连接池、线程池、对象复用等全方位优化

📦 版本架构

Version 1 - 基础实现

  • 基于Socket的简单RPC通信
  • 同步阻塞IO模型
  • 基本的请求响应协议

Version 2 - 网络优化

  • 引入Netty异步网络框架
  • NIO非阻塞通信
  • 自定义编解码器

Version 3 - 服务治理

  • ZooKeeper服务注册与发现
  • 客户端服务缓存机制
  • 动态服务列表更新

Version 4 - 高级特性

  • SPI机制支持扩展
  • 多种序列化协议
  • 配置化框架设计

Version 5 - 企业级功能

  • 熔断器模式实现
  • 限流保护机制
  • 负载均衡策略
  • 连接池管理

Version 6 - 生产就绪

  • 全面的监控统计
  • 性能基准测试
  • 异常处理体系
  • 日志追踪系统

🛠 技术栈

  • 网络框架: Netty 4.x
  • 服务发现: ZooKeeper 3.8
  • 序列化: JSON/Hessian/Kryo/Protostuff
  • 构建工具: Maven 3.6+
  • Java版本: JDK 17+
  • 负载均衡: 随机/轮询/一致性哈希

📁 项目结构

rpc/
├── version1/          # 基础Socket版本
├── version2/          # Netty网络优化
├── version3/          # 服务发现版本
├── version4/          # SPI扩展版本
├── version5/          # 企业级功能版本
├── version6/          # 生产就绪版本
├── benchmark/         # 性能测试模块
└── README.md         # 项目说明文档

🚀 快速开始

环境要求

  • JDK 17+
  • Maven 3.6+
  • ZooKeeper 3.8+

启动步骤

  1. 启动ZooKeeper
# 使用Docker快速启动
docker run -d --name zookeeper -p 2181:2181 zookeeper:3.8
  1. 运行服务提供者
cd version6/krpc-provider
mvn exec:java -Dexec.mainClass="com.kama.provider.ProviderTest"
  1. 运行服务消费者
cd version6/krpc-consumer
mvn exec:java -Dexec.mainClass="com.kama.consumer.ConsumerTest"

🧪 功能演示

基本RPC调用

// 服务接口
public interface UserService {
    User getUserById(Long id);
    boolean saveUser(User user);
}

// 客户端调用
UserService userService = ClientProxy.getProxy(UserService.class);
User user = userService.getUserById(1L);

负载均衡示例

// 配置负载均衡策略
@RpcReference(loadBalance = "roundRobin")
private UserService userService;

熔断器使用

// 配置熔断参数
@RpcReference(
    circuitBreaker = true,
    failureThreshold = 5,
    resetTimeout = 30000
)
private UserService userService;

📊 性能基准

项目包含完整的性能测试套件,涵盖:

  • 序列化性能对比
  • 网络吞吐量测试
  • 负载均衡效率
  • 熔断器响应时间
  • 高并发压力测试

运行基准测试:

cd benchmark
mvn clean compile exec:java

🔧 扩展开发

自定义序列化器

public class CustomSerializer implements Serializer {
    @Override
    public byte[] serialize(Object obj) {
        // 自定义序列化逻辑
    }
    
    @Override
    public <T> T deserialize(byte[] bytes, Class<T> clazz) {
        // 自定义反序列化逻辑
    }
}

自定义负载均衡策略

public class CustomLoadBalance implements LoadBalance {
    @Override
    public String select(List<String> serviceUrls) {
        // 自定义选择逻辑
    }
}

🤝 贡献指南

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🙏 致谢

感谢所有为本项目做出贡献的开发者,特别感谢在RPC技术领域的先驱者们为我们奠定了坚实的技术基础。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages