鱼皮 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 公开放着,教程第一章节免费看,导学视频也公开,想试水的可以先看第一章再决定要不要往里扎。

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

相关推荐
Multipath71213 分钟前
无人驾驶车的多链路聚合传输应用方案
网络·5g·安全·智能路由器·实时音视频
Yang961114 分钟前
六重保护加自动放电:鼎讯信通DLG-1让高压测试更安心
网络
薛之谦_18 分钟前
国际SSL证书与国密SSL证书:专业视角下的全面解读
网络·网络协议·ssl
云运维笔记25 分钟前
华为VRP系统全解析:网络设备的智能核心
服务器·网络·华为
张小姐的猫39 分钟前
【AI大模型接入SDK】 —— Ollama本地接入Deepseek
java·linux·开发语言·网络·c++·人工智能
比兔代理41 分钟前
路由器静态IP怎么设置?光猫、WAN口与局域网配置教程
网络·智能路由器
Nuanyt42 分钟前
JUC常见核心知识梳理01 线程 并发 JMM volatile 管程 锁 synchronized
java·开发语言·网络·jvm
心易行者1 小时前
用HTML在线运行搭后台管理系统:5个核心模块+0服务器,3天跑通完整业务
大数据·前端·网络·人工智能·python
专家大圣1 小时前
Grafana 远程访问实战:本地 3000 端口跑通后,再配置固定公网入口
网络·内网穿透
mengge.cloud11 小时前
0909华为云计算类综合服务小白实验教程
linux·运维·服务器·网络·华为云·云计算