鱼皮 yu-rpc:从 0 到 1 手写 RPC 框架的实践教程

文章目录

  • [鱼皮 yu-rpc:从 0 到 1 手写 RPC 框架的实践教程](#鱼皮 yu-rpc:从 0 到 1 手写 RPC 框架的实践教程)
    • [1、 这玩意儿是干嘛的](#1、 这玩意儿是干嘛的)
    • [2、 为什么是个教学项目](#2、 为什么是个教学项目)
    • [3、 设计模式怎么落](#3、 设计模式怎么落)
    • [4、 适合哪些人](#4、 适合哪些人)

鱼皮 yu-rpc:从 0 到 1 手写 RPC 框架的实践教程

yu-rpc 在 GitHub 上已经拿到 601 Star 了。

这是鱼皮开源的一个 RPC 框架教学项目,专干一件事:用 Java 加 Etcd 加 Vert.x 从零手写一个能跑的 RPC 框架,把基础版和扩展版拆开讲,跟着敲一遍就能填进简历。

1、 这玩意儿是干嘛的

学过 Java 的人多半看过 RPC 这三个字母,但真让你写一个,会发现从网络层到序列化再到注册中心全是坑。市面上的 RPC 框架比如 Dubbo 做得太重,源码读下来累半死,新手想弄懂每一层在干嘛,往往一进来就被绕晕。

yu-rpc 把这件事拆成两段。基础版只讲清楚 RPC 是什么,几个小时的活儿,写完能跑通就行。扩展版往里塞 Vert.x 网络服务器、Etcd 注册中心、自定义网络协议、负载均衡、重试容错、Spring Boot Starter 注解驱动,把一个生产级 RPC 该有的零件一个个手搓一遍。

技术栈选得有点意思。Vert.x 用来做 TCP 服务器,比传统 Servlet 那套轻。Etcd 当注册中心,云原生那一路的活儿。ZooKeeper 也实现了,方便横向对比两套主流方案。序列化器给了 JSON、Kryo、Hessian 三种,配合 SPI 机制做可扩展切换。

2、 为什么是个教学项目

很多简历上的 RPC 项目都是套 Dubbo 壳,问下去连网络层怎么粘包都不知道。这个项目把每一行代码都摆出来给你写。教程把内容切成四十三章,第一章讲简易版十个步骤,第二章从配置加载一路讲到 Spring Boot Starter 注解驱动。

简易版先搭 web 服务器,写本地服务注册器,做序列化器,写请求处理器,最后消费者代理跑通测试,十个步骤走下来 RPC 的基本骨架就有了。扩展版往里加全局配置、Mock 设计、SPI 机制、Etcd 注册中心、心跳续期、服务下线、消费端缓存、Etcd 监听、ZooKeeper 实现、自定义协议、粘包半包处理、装饰者模式、一致性 Hash 负载均衡、Guava Retrying 重试、容错策略。

代码分了几个模块。yu-rpc-core 放核心代码,yu-rpc-easy 是给新手的入门版本,example-common 是示例公用模块,example-consumer 和 example-provider 是裸跑消费者和生产者的样例,后面带 springboot 后缀的是 Spring Boot 集成版本,yu-rpc-spring-boot-starter 单独抽出来做注解驱动,扔进业务项目就能用。

3、 设计模式怎么落

跟着扩展版走一遍,单例、工厂、代理、装饰者这些模式全落在序列化器切换、注册中心切换、负载均衡器切换、重试策略切换、容错策略切换这五个点上。每加一种新实现,就套一次 SPI 加工厂模式,这种结构上的复用比单纯背设计模式记得牢。

反射和注解驱动那块也讲得细。注解打在 service 接口上,框架扫描后生成代理,调用方像调本地方法一样调远程接口,背后跑的是消费者代理那一整套。Spring Boot Starter 把这件事封装成了引入即用,yu-rpc-spring-boot-starter 这个模块单独抽出来,业务方引个依赖就完事。

4、 适合哪些人

简历上想加一个能讲清楚架构来龙去背的 Java 项目的人。跟着 Dubbo 套壳写完问不出细节的,建议来过一遍这种从 0 拼装的过程。准备面 Java 后端岗位,想搞懂 RPC 网络层、序列化、注册中心、负载均衡、容错之间怎么串起来的人。愿意花十几个小时把一个完整项目的代码敲完一遍的初学者。基础版几个小时就能跑通,扩展版内容多,需要跟着教程一章一章做。

项目源码在 GitHub 公开放着,教程第一章节免费看,导学视频也公开,想试水的可以先看第一章再决定要不要往里扎。

第一章节免费看,导学视频也公开,想试水的可以先看第一章再决定要不要往里扎。

相关推荐
呉師傅2 小时前
得力P2500、M2500系列打印机硒鼓加粉及清零方法【纯享版】
运维·网络·windows·电脑
Single2 小时前
无影脚通行|人类:星际物种的地球预演
程序人生·其他·人机交互·产品经理·业界资讯
大侠归来3 小时前
TCP/IP 网络编程:多播与广播
网络·tcp/ip·智能路由器
Zelman3 小时前
HTTPS 协议
网络协议·https
weixin_416667964 小时前
银河麒麟V10看门狗试验-1
网络·chrome·python
白帽攻防录4 小时前
SRC 挖洞:WSO2 JWT 算法混淆绕过深度复盘,CVE-2026-5430 不支持的算法怎么变成管理员
网络·算法·安全·网络安全·jwt
starzy19904 小时前
Flink 优化之网络缓存优化及参数详解:从数据传输机制到反压原理的生产调优指南
网络·缓存·flink
正经教主5 小时前
【FDE系列】阶段3:Day 58:Prompt 安全 — 注入、越狱与防护
网络·人工智能·安全·prompt·fde
实点科技6 小时前
实点科技IO-Link I/O IOL7A/B系列参数配置方法介绍
网络
JVM高并发6 小时前
使用 Cloudflare Tunnel(本地管理隧道)搭配 DigitalPlat 免费域名实现内网穿透
网络协议·全栈