跳至主要內容

【noob-rpc】①项目概要

holic-x...大约 2 分钟项目RPC

【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