【noob-rpc】①项目概要
...大约 2 分钟
【noob-rpc】①项目概要
最近在补充微服务相关的内容,花了点时间学习如何手写RPC框架,在梳理框架结构的基础上进一步了解怎么自己一步步造轮子,虽然在整个过程中可能还有一些细节和技术栈可能不太熟悉,但也算是开阔了技术视野,不再沉浸于自己的CRUD世界,而是从项目学习中总结、扩展。对于一些技术栈的应用,虽然一开始使用比较生疏,但是结合一些博客案例参考,从概念梳理=》demo应用=》项目扩展一步步将技术整合到自己的项目中,这个过程收获颇多。下述是RPC框架的基本内容,目前实现可构建基础的业务流程模块,但实际应用对比现有成熟框架来说还是有很大的差距的,后续抽空再一步步扩展完善。
基于 Java + Etcd + Vert.x 的高性能 RPC 框架,用新颖的技术栈从0到1开发轮子。教程由浅入深,可以学习并实践基于 Vert.x 的网络服务器、序列化器、基于 Etcd 和 ZooKeeper 的注册中心、反射、动态代理、SPI机制、自定义网络协议、多种设计模式(单例/工厂/装饰者等)、负载均衡器设计、重试和容错机制、SpringBoot Starter 注解驱动开发等,大幅提升架构设计能力。
项目分为基础版和扩展版:
基础版(基础RPC框架)
扩展版(搭配业务项目使用,技术栈扩展)
技术栈选型
后端技术以 Java 为主,但所有的思想和设计都是可以复用到其他语言的,掌握核心思路即可
- ⭐️ Vert.x 框架
- ⭐️ Etcd 云原生存储中间件(jetcd 客户端)
- ZooKeeper 分布式协调工具(curator 客户端)
- ⭐️ SPI 机制
- ⭐️ 多种序列化器
- JSON 序列化
- Kryo 序列化
- Hessian 序列化
- ⭐️ 多种设计模式
- 双检锁单例模式
- 工厂模式
- 代理模式
- 装饰者模式
- ⭐️ Spring Boot Starter 开发
- 反射和注解驱动
- Guava Retrying 重试库
- JUnit 单元测试
- Logback 日志库
- Hutool、Lombok 工具库
项目构建思路
【1】简易版RPC构建
【2】全局配置加载
【3】接口MOC
【4】序列化器和SPI机制
【5】注册中心基本实现&优化
【6】自定义协议
【7】负载均衡
【8】重试机制
【9】容错机制
【10】启动机制&注解驱动
【11】RPC框架扩展
Powered by Waline v3.1.3