ThumbUP 高并发点赞项目¶
基于 B 站千亿级点赞系统架构复现,中台化高并发点赞系统,支撑亿级数据规模与万级 QPS 流量
报告索引¶
| 序号 | 报告 | 内容概述 |
|---|---|---|
| 01 | 整体架构设计 | 分层架构(Controller → Service → Manager → Mapper)、数据库表设计、REST API 设计、两套点赞方案对比(Redis 异步方案 vs 二级缓存方案) |
| 02 | 缓存系统设计 | Caffeine + Redis 二级缓存架构、HeavyKeeper 热点 Key 探测算法(指数衰减 + Top-K 堆管理)、缓存穿透/击穿/雪崩防护策略 |
| 03 | 并发控制与数据一致性 | Lua 脚本原子性保证、10 秒时间片分桶暂存、定时任务批量落库、补偿任务兜底、字符串常量池锁、最终一致性三层保障 |
| 04 | 技术调研文档 | 五个核心技术点的实现状态、实现链路、方案选型依据、现存漏洞及完善方向 |
| 05 | 简历技术要点 | 5 个核心技术要点提炼,每个要点均可深入到函数级别展开 |
快速参考¶
| 项目 | 值 |
|---|---|
| 项目来源 | 哔哩哔哩技术团队《B站千亿级点赞系统服务架构设计》文章复现 |
| 开发时间 | 2025-10 ~ 2025-11 |
| 后端框架 | Spring Boot 3.2.2 / Java 21 |
| ORM | MyBatis-Plus 3.5.14 |
| 缓存 | Redis (Jedis) + Caffeine |
| 热点探测 | HeavyKeeper 算法 |
| 数据库 | MySQL |
| API 文档 | Knife4j (OpenAPI3) |
| 核心表 | 3 张(user / blog / thumb) |
| REST 端点 | 6 个(健康检查 + 用户 + 博客 + 点赞) |
| 点赞方案 | 两套可切换(Redis 异步方案 / 二级缓存方案) |
技术栈全景¶
┌─────────────────────────────────────────────────────────┐
│ Spring Boot 3.2.2 │
│ Java 21 (虚拟线程) │
├─────────────────────────────────────────────────────────┤
│ Controller 层(REST API + Knife4j 文档) │
│ ├── HealthController 健康检查 │
│ ├── UserController 用户登录/Session │
│ ├── BlogController 博客查询(含点赞状态) │
│ └── ThumbController 点赞/取消点赞 │
├─────────────────────────────────────────────────────────┤
│ Service 层(业务逻辑) │
│ ├── ThumbServiceImpl 二级缓存方案(默认) │
│ └── ThumbServiceRedisImpl Redis 异步方案 │
├─────────────────────────────────────────────────────────┤
│ Manager 层(缓存管理) │
│ ├── CacheManager 二级缓存协调器 │
│ ├── HeavyKeeper 热点 Key 探测算法 │
│ └── TopK / Item Top-K 接口与数据项 │
├─────────────────────────────────────────────────────────┤
│ Job 层(定时任务) │
│ ├── SyncThumb2DBJob 每 10 秒批量同步 │
│ └── SyncThumb2DBCompensatoryJob 每日补偿兜底 │
├─────────────────────────────────────────────────────────┤
│ 数据层 │
│ ├── MySQL(持久化) Redis(缓存/临时计数) │
│ └── Caffeine(本地缓存) Spring Session(分布式会话) │
└─────────────────────────────────────────────────────────┘