私人分布式存储系统
项目背景
这个项目的目标不是做一个“课程展示页”,而是围绕文件存储、缓存、定时任务和多存储后端集成,搭建一套更接近真实业务的分布式存储系统。
项目价值
- 练习模块化拆分,而不是把全部逻辑堆在单体应用里
- 理解对象存储、本地存储、缓存和调度任务如何协同工作
- 在一个项目里串联
Redis、ZooKeeper、RocketMQ、对象存储等中间件思路
适合重点观察的能力
- 存储抽象设计是否解耦
- 缓存层如何提升读性能
- 一致性控制如何避免并发写冲突
- 定时任务如何做补偿和清理
技术特点
- 模块化架构,避免单体项目耦合失控
- 支持本地存储与对象存储扩展
- 集成
Caffeine + Redis做多级缓存 - 利用
Redis / ZooKeeper处理并发写场景下的一致性协调 - 通过定时任务做清理、修复和延迟处理
项目业务模块划分
基础环境配置
- JDK:原资料为
1.8,如果重做建议直接迁移到21(LTS,Spring Boot 3.5.x 支持) - Maven:
3.6+ - Git:
2.x - Spring Boot:原资料为
2.1.9.RELEASE,现代项目建议升级到3.5.x - MyBatis-Plus:原资料为
3.3.2,建议升级到3.5.12(Boot 3 需用 mybatis-plus-spring-boot3-starter)
中间件版本
- Redis 6.2.6 → 7.x
- ZooKeeper 3.4.14 → 3.8.x(LTS)/3.9.x
- MySQL 8.0
- RocketMQ 4.5.1 → 5.x
当前阅读建议
- 把它当成“中间件组合与项目拆分”的案例来看
- 不要直接照搬其中的旧版本环境
- 重点思考:如果今天重做,哪些组件该升级,哪些设计该保留
版本差异(中间件版本 → 2026)
| 中间件 | 旧版 | 当前推荐 |
|---|---|---|
| JDK | 1.8 | 21 LTS |
| Spring Boot | 2.1.9.RELEASE | 3.5.x |
| MyBatis-Plus | 3.3.2 | 3.5.12(boot3 starter) |
| Redis | 6.2.6 | 7.x |
| ZooKeeper | 3.4.14 | 3.8.x(LTS)/3.9.x(Curator 5.x) |
| RocketMQ | 4.5.1 | 5.x(gRPC 协议) |
| MySQL | 8.0 | 8.0/8.4 LTS |
模块化设计(存储抽象、多级缓存 Caffeine+Redis、一致性协调、定时补偿)是核心价值,可完全保留;中间件按上表升级即可。