# t-rpc **Repository Path**: ttdxg/t-rpc ## Basic Information - **Project Name**: t-rpc - **Description**: 手写 RPC 框架 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-13 - **Last Updated**: 2025-06-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # T-RPC T-RPC 是一个轻量级的远程过程调用框架,支持服务消费者和服务提供者的快速开发与集成。参考鱼皮开源项目:https://gitee.com/liyupi/yu-rpc 该项目基于 Netty 开发,注册中心选择 Redis 实现,旨在个人通过造轮子这个过程进行技术学习与提升,存在诸多不足。 ## 模块说明 - **t-rpc-core**: 框架核心模块,提供 RPC 通信的基础功能,包括请求/响应模型、序列化/反序列化工具、服务注册与发现机制、负载均衡策略、Netty 通信支持等。 - **t-rpc-easy**: 简化版 RPC 实现模块,包含基本的 RPC 请求/响应模型和服务代理机制。 - **example-common**: 提供示例模块中使用的公共类,如用户模型和服务接口。 - **example-provider**: 示例服务提供者模块,展示如何实现并提供 RPC 服务。 - **example-consumer**: 示例服务消费者模块,展示如何调用远程服务。 - **springboot-provider**: Spring Boot 集成服务提供者模块。 - **springboot-consumer**: Spring Boot 集成服务消费者模块。 - **t-rpc-spring-boot-starter**: 提供与 Spring Boot 的集成支持,包括自动配置和注解驱动的 RPC 服务。 ## 特性 - **多序列化支持**: 包括 Hessian、JDK、JSON 和 Kryo 等多种序列化方式。 - **负载均衡**: 提供随机、轮询和一致性哈希等多种负载均衡策略。 - **注册中心支持**: 支持 Redis、Zookeeper 和 Etcd 作为服务注册中心。 - **SPI 机制**: 使用 Service Provider Interface (SPI) 机制实现扩展点的动态加载。 - **Netty 通信**: 基于 Netty 构建高性能的 TCP/HTTP 通信层。 - **Spring Boot 集成**: 提供 Spring Boot Starter,支持通过注解和配置文件快速集成 RPC 功能。 ## 使用示例 ### 服务提供者 1. 实现 `UserService` 接口: ```java public class UserServiceImpl implements UserService { @Override public User getUser(User user) { return user; } } ``` 2. 启动服务提供者: ```java public class ProviderExample { public static void main(String[] args) { // 初始化服务并暴露接口 } } ``` ### 服务消费者 1. 使用 `UserService` 接口: ```java public class ConsumerExample { public static void main(String[] args) { // 调用远程服务 } } ``` 2. 使用 Spring Boot 调用远程服务: ```java @RestController public class UserController { @RpcReference private UserService userService; @RequestMapping("/test") public String getUserName() { User user = new User(); user.setName("Test User"); User result = userService.getUser(user); return result.getName(); } } ``` ## 快速开始 1. 下载项目源码并导入到 IDE 中。 2. 根据需求配置 `application.properties` 文件。 3. 编译并运行 `t-rpc-core` 模块。 4. 启动 `example-provider` 或 `springboot-provider` 以提供服务。 5. 启动 `example-consumer` 或 `springboot-consumer` 调用远程服务。 ## 配置说明 框架支持通过 `application.properties` 文件进行配置,主要配置项包括: - `rpc.name`: 服务名称 - `rpc.version`: 服务版本 - `rpc.serverHost`: 服务监听地址 - `rpc.serverPort`: 服务监听端口 - `rpc.needServer`: 是否需要启动服务端 - `rpc.serializer`: 序列化方式 - `rpc.registry`: 注册中心类型 - `rpc.registry.host`: 注册中心主机地址 - `rpc.registry.port`: 注册中心端口 ## 贡献者指南 欢迎为项目贡献代码和文档。请遵循以下步骤: 1. Fork 项目并创建分支。 2. 实现新功能或修复 Bug。 3. 提交 Pull Request 并说明修改内容。 ## 许可证 本项目采用 [MIT License](LICENSE),允许自由使用和修改。 ## 联系方式 如需反馈或交流,请联系项目维护者。