P6 · 项目实战(贯穿 W6-30)
目标:完成 3 个可面试项目——由浅入深覆盖业务 / 中间件 / 高并发 验收:项目能跑通且能口述每条线的工作原理
一、项目组合(由易到难)
| 顺序 | 项目 | 覆盖技术 | 完成时间 | 重点产出 |
|---|---|---|---|---|
| 项目 1 | 仿商城(mall) | RBAC、订单、支付、搜索 | W6-16 | 业务能力 |
| 项目 2 | 仿点评/短链 | 缓存、MQ、分布式锁、ES | W17-22 | 中间件 |
| 项目 3 | 仿 12306/秒杀 | 高并发、限流、降级、分布式事务 | W23-30 | 架构能力 |
每个项目都要用 Git 管理,每天提交,最少 100 个 commit,README 完善。
二、项目 1 · 仿商城(mall)
技术栈
Spring Boot 3.x + Java 17 + MyBatis-Plus
+ MySQL 8 + Redis 7 + Elasticsearch 8
+ RabbitMQ / RocketMQ + Nginx + Docker
模块(9 大模块)
- 用户中心:注册、登录、JWT、RBAC 权限、第三方登录(Mock)
- 商品中心:SPU/SKU、分类、品牌、属性、库存
- 订单中心:下单流程、订单状态机、超时取消
- 支付中心:支付宝沙箱(Mock)、退款
- 搜索中心:ES 全文检索、聚合、过滤
- 购物车:登录/未登录合并、Redis 存储
- 后台管理:CRUD、菜单权限、操作日志
- 文件服务:OSS(MinIO 替代)
- 公共服务:统一异常、分布式 ID、日志、Swagger
任务清单
- 项目初始化(Git 仓库、模块拆分、CI)
- 表结构设计与 ER 图(PowerDesigner 或 Draw.io)
- 用户中心 + RBAC(5 表 + 注解权限)
- 商品中心(SPU/SKU 模型 + MyBatis-Plus)
- 购物车(Redis Hash)
- 订单中心(状态机 + 延迟关闭)
- 支付中心(沙箱 + 状态回调)
- 搜索中心(ES 同步 + DSL)
- 后台管理(Vue3 可选/Gateway 可选)
- 性能压测(JMeter,1000 QPS)
验收
- 项目跑通、Swagger 可访问、用 Postman 全流程过
- README 写清楚:架构、模块、技术选型理由
- 关键模块写 3 篇博客(数据库设计 / RBAC / 订单状态机)
三、项目 2 · 仿点评(中间件综合)
技术栈
Spring Boot 3.x + Spring Cloud Alibaba + Nacos
+ Sentinel + Gateway + Seata + OpenFeign
+ Redis Cluster + RocketMQ + Elasticsearch
+ Docker Compose 一键启动
模块
- 用户服务:手机号登录、JWT、Token 刷新
- 店铺服务:分类、商户信息、商户评分
- 探店笔记:发布、点赞、关注、Feed 流(推模式)
- 优惠券服务:秒杀券、限领、过期(用 MQ 异步发券)
- 订单服务:下单 + 优惠券核销 + 库存扣减(Seata AT)
- 地理服务:GEO 查询附近店铺(Redis GEO)
- 搜索服务:ES 全文 + 聚合 + 筛选
- 网关层:路由 + 鉴权 + 限流 + 日志
任务清单
- 用 docker-compose 一键启动所有中间件
- OpenFeign 服务间调用(带 fallback)
- Sentinel 流控规则接入
- Gateway 限流 + 全局过滤器(统一鉴权)
- Seata AT 模式跑通下单链路
- Redis GEO 实现"附近商家"
- RocketMQ 实现"秒杀券异步发券"
- ES 实现笔记搜索
验收
- 秒杀券能用 JMeter 压到 5000 QPS 不出错
- 项目能讲清楚每个技术点的应用场景
四、项目 3 · 仿 12306 抢票系统(高并发)
技术栈
Spring Boot 3.x + Redis Cluster + Sentinel + Seata
+ RocketMQ + ShardingSphere-JDBC + Nacos
+ Nginx + Lua + Canal + XXL-JOB
+ Prometheus + Grafana + 链路追踪
核心难点与方案
| 难题 | 方案 |
|---|---|
| 超大流量冲击 | 多级缓存 + Nginx 限流 + Sentinel + 流量染色 |
| 抢票超卖 | Redis Lua 原子扣减 + 异步落库 + 库存分桶 |
| 车票不超卖 | Redis DECR + 乐观锁兜底 + 分布式锁 |
| 订单三方支付 | 异步支付 + 30 分钟未付 MQ 关闭订单 |
| 余票实时刷新 | WebSocket + SSE + Redis Pub/Sub |
| 复杂查询(车站余票) | Elasticsearch 聚合 + MySQL + Redis 多级 |
| 数据库压力 | ShardingSphere-JDBC 水平分库分表 |
| 对账与一致性 | 定时任务 + 增量对账 + 分布式事务 |
模块
- 车次服务:路线、车次、座位、票价
- 座位服务:座位库存、车票生成
- 订单服务:下单、支付、状态机
- 支付服务:沙箱、回调、对账
- 用户服务:实名认证、乘客管理
- 网关层:Nginx + Sentinel + 限流配置中心化
- 监控告警:Prometheus + Grafana + AlertManager
任务清单
- 系统设计文档(《12306 抢票系统设计方案》 50 页+)
- Redis Lua 实现库存原子扣减
- MQ 削峰:下单请求入队,异步消费
- ShardingSphere-JDBC 拆分订单表(按 user_id)
- WebSocket 推送余票变化
- Prometheus 监控 + Grafana 看板 + 告警
- JMeter 压测:目标 1 万 QPS + 0 超卖
- 写压测报告 + 调优笔记
验收
- 能跑出压测数据 + 调优过程截图
- 系统设计文档覆盖:架构 / 难点 / 方案 / 兜底 / 监控
五、项目包装与简历产出
每个项目完成后做以下动作:
1. 项目 README(必备)
- 项目简介、架构图、模块说明
- 技术栈、亮点难点、本地启动方式
- 性能数据(QPS、P99、可用性)
2. 项目复盘(每个 3 条 STAR)
S(Situation):背景与目标
T(Task):你的任务与挑战
A(Action):你怎么做的(重点)
R(Result):量化结果(如:QPS 从 500 提升到 5000)
3. 技术博客(选 5 篇沉淀)
- 数据库设计 ER 图
- 缓存一致性方案演进
- 分布式锁选型对比
- 秒杀超卖方案对比
- 高并发下 MQ 削峰策略
4. 简历项目描述模板
项目名称:xxx 系统
项目周期:2025.x ~ 2025.x(X 个月)
技术栈:Spring Boot / Spring Cloud / MySQL / Redis / MQ
个人职责:
1. 负责 xxx 模块设计开发
2. 解决 xxx 问题(量化成果)
3. 主推 xxx 优化(量化成果)
六、项目阶段任务总览
| 项目 | 周期 | 验收标志 |
|---|---|---|
| mall 商城 | W6-16 | 跑通主流程 + 5 篇博客 |
| 中间件综合 | W17-22 | 微服务全链路 + 压测数据 |
| 12306 抢票 | W23-30 | 1 万 QPS + 完整设计文档 |
项目经验是面试议价能力的核心——务必边学边做,不可只看不写。