{"id":34765736,"url":"https://github.com/liyupi/yu-rpc","last_synced_at":"2025-12-25T07:11:42.350Z","repository":{"id":227011902,"uuid":"759623321","full_name":"liyupi/yu-rpc","owner":"liyupi","description":"从 0 到 1，带你开发自己的 RPC 框架","archived":false,"fork":false,"pushed_at":"2024-07-31T03:49:50.000Z","size":915,"stargazers_count":357,"open_issues_count":0,"forks_count":95,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-07-31T05:56:02.704Z","etag":null,"topics":["backend","etcd","java","springboot"],"latest_commit_sha":null,"homepage":"https://yuyuanweb.feishu.cn/wiki/EweIwSYsXiEvCDkzS8BcTiAonyc","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/liyupi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-19T02:32:35.000Z","updated_at":"2024-07-31T03:49:54.000Z","dependencies_parsed_at":"2024-07-31T05:45:55.586Z","dependency_job_id":"f32e1dee-0948-47fc-963d-30b3019775c7","html_url":"https://github.com/liyupi/yu-rpc","commit_stats":null,"previous_names":["liyupi/yu-rpc"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/liyupi/yu-rpc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liyupi%2Fyu-rpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liyupi%2Fyu-rpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liyupi%2Fyu-rpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liyupi%2Fyu-rpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/liyupi","download_url":"https://codeload.github.com/liyupi/yu-rpc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/liyupi%2Fyu-rpc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28022941,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-25T02:00:05.988Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","etcd","java","springboot"],"created_at":"2025-12-25T07:11:41.974Z","updated_at":"2025-12-25T07:11:42.338Z","avatar_url":"https://github.com/liyupi.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 鱼皮 RPC 框架\n\n\u003e 从 0 到 1，带你开发自己的 RPC 框架\n\u003e\n\u003e 鱼皮原创项目教程系列：[https://www.codefather.cn/post/1797431216467001345](https://www.codefather.cn/post/1797431216467001345)\n\n\n\n## 项目介绍\n\n基于 Java + Etcd + Vert.x 的高性能 RPC 框架，用新颖的技术栈从 0 到 1 带大家开发轮子。教程由浅入深，可以学习并实践基于 Vert.x 的网络服务器、序列化器、基于 Etcd 和 ZooKeeper 的注册中心、反射、动态代理、自定义网络协议、多种设计模式（单例 / 工厂 / 装饰者等）、负载均衡器设计、重试和容错机制、Spring Boot Starter 注解驱动开发等，大幅提升架构设计能力。\n\n项目分为基础版和扩展版：\n\n- 基础版只需学几个小时，就能写在简历上的小项目~\n- 扩展版将是充满亮点的技术类项目，搭配一个业务项目，让简历更有竞争力。\n\n\u003e 开始学习或了解详情：[手写 RPC 框架](https://www.codefather.cn/course/1768543954720022530)\n\u003e\n\u003e 开源地址：https://github.com/liyupi/yu-rpc\n\u003e\n\u003e [教程第一章可免费学习](https://www.codefather.cn/course/1768543954720022530/section/1768545847093518337)\n\u003e\n\u003e [导学视频 - RPC 讲解](https://www.bilibili.com/video/BV1AJ4m1H7XL)\n\n\n\n## 项目展示\n\n目录结构：\n\n![](./docs/tutorial.jpg)\n\n\n详细的保姆级文字教程：\n\n![](./docs/structure.jpg)\n\n\n\n## 技术选型\n\n### 后端\n\n后端技术以 Java 为主，但所有的思想和设计都是可以复用到其他语言的，代码不同罢了。\n\n- ⭐️ Vert.x 框架\n- ⭐️ Etcd 云原生存储中间件（jetcd 客户端）\n- ZooKeeper 分布式协调工具（curator 客户端）\n- ⭐️ SPI 机制\n- ⭐️ 多种序列化器\n  - JSON 序列化\n  - Kryo 序列化\n  - Hessian 序列化\n- ⭐️ 多种设计模式\n  - 双检锁单例模式\n  - 工厂模式\n  - 代理模式\n  - 装饰者模式\n- ⭐️ Spring Boot Starter 开发\n- 反射和注解驱动\n- Guava Retrying 重试库\n- JUnit 单元测试\n- Logback 日志库\n- Hutool、Lombok 工具库\n\n\n\n## 源码目录\n\n- yu-rpc-core：鱼皮 RPC 框架核心代码\n- yu-rpc-easy：鱼皮 RPC 框架简易版（适合新手入门）\n- example-common：示例代码公用模块\n- example-consumer：示例服务消费者\n- example-provider：示例服务提供者\n- example-springboot-consumer：示例服务消费者（Spring Boot 框架）\n- example-springboot-provider：示例服务提供者（Spring Boot 框架）\n- yu-rpc-spring-boot-starter：注解驱动的 RPC 框架，可在 Spring Boot 项目中快速使用\n\n\n\n## 项目教程大纲\n\n这个项目内容非常多，大家可以看看有没有自己想学的知识点。\n\n\n\n### 第一章：RPC 框架简易版\n\n1. RPC 基本概念和作用\n2. RPC 框架实现思路 | 基本设计\n3. RPC 框架实现思路 | 扩展设计\n4. 简易版 RPC 开发 | 项目初始化\n5. 简易版 RPC 开发 | web 服务器\n6. 简易版 RPC 开发 | 本地服务注册器\n7. 简易版 RPC 开发 | 序列化器\n8. 简易版 RPC 开发 | 请求处理器\n9. 简易版 RPC 开发 | 消费者代理\n10. 简易版 RPC 开发 | 测试验证\n\n\n\n### 第二章：RPC 框架扩展版\n\n1. 全局配置加载 | 扩展版项目初始化\n2. 全局配置加载 | 配置加载实现\n3. 全局配置加载 | 维护全局配置对象\n4. 接口 Mock 设计实现\n5. 序列化器 | 主流序列化器对比\n6. 序列化器 | 多种序列化器实现\n7. 序列化器 | SPI 机制\n8. 序列化器 | 可扩展序列化器实现（SPI + 工厂模式）\n9. 注册中心 | 注册中心核心能力\n10. 注册中心 | 注册中心技术选型\n11. 注册中心 | Etcd 云原生中间件入门\n12. 注册中心 | 基于 Etcd 实现注册中心\n13. 注册中心 | 可扩展注册中心实现（SPI + 工厂模式）\n14. 注册中心优化 | 心跳检测和续期机制\n15. 注册中心优化 | 服务节点下线机制\n16. 注册中心优化 | 消费端服务缓存\n17. 注册中心优化 | 缓存更新（Etcd 监听机制）\n18. 注册中心优化 | ZooKeeper 注册中心实现\n19. 自定义协议 | 需求分析及方案设计\n20. 自定义协议 | 消息结构设计（参考 Dubbo）\n21. 自定义协议 | 网络传输设计（基于 Vert.x 实现 TCP 服务器）\n22. 自定义协议 | 编码 / 解码器\n23. 自定义协议 | TCP 请求处理器\n24. 自定义协议 | TCP 请求客户端\n25. 自定义协议 | 粘包半包问题分析\n26. 自定义协议 | 使用 Vert.x 解决粘包半包问题\n27. 自定义协议 | 客户端代码优化（装饰者模式）\n28. 负载均衡 | 负载均衡概念和常用算法\n29. 负载均衡 | 一致性 Hash\n30. 负载均衡 | 多种负载均衡器实现\n31. 负载均衡 | 可扩展负载均衡器实现（SPI + 工厂模式）\n32. 重试机制 | 重试等待策略\n33. 重试机制 | 重试方案设计\n34. 重试机制 | 多种重试策略实现\n35. 重试机制 | 可扩展重试策略实现（SPI + 工厂模式）\n36. 容错机制 | 容错策略和实现方式\n37. 容错机制 | 容错方案设计\n38. 容错机制 | 多种容错策略实现\n39. 容错机制 | 可扩展容错策略实现（SPI + 工厂模式）\n40. 启动机制 | 框架快速启动类\n41. 启动机制 | 注解驱动设计\n42. 启动机制 | Spring Boot Starter 注解驱动实现\n43. 项目扩展思路\n\n\n\n## 完整项目教程学习\n\n点击 [加入编程导航](https://yuyuanweb.feishu.cn/wiki/SDtMwjR1DituVpkz5MLc3fZLnzb) ，鱼皮往期 [所有原创项目](https://yuyuanweb.feishu.cn/wiki/SePYwTc9tipQiCktw7Uc7kujnCd) 均可学习。\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliyupi%2Fyu-rpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fliyupi%2Fyu-rpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fliyupi%2Fyu-rpc/lists"}