大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
综合练习
把本 track 串成 CodeRoadMap tracks API 故障演练清单:从 Failure Mode 到 SLO、从超时熔断到复盘——在 宝塔单机 环境可实际操作(慎用生产)。
学习目标
- 为 tracks API 写完整 reliability checklist
- 串联 spring-cloud / prom / pg / integration-patterns 知识
- 完成一次 tabletop 或 staging 演练
演练拓扑
[测试客户端] ──► 宝塔 Nginx ──► backend :8080
│
┌───────────────┼───────────────┐
▼ ▼ ▼
正常 MySQL 注入慢查询 停 MySQL
baseline 连接池耗尽 熔断/降级
│ │ │
└───────────────┴───────────────┘
Prometheus 观察 SLI
Checklist(tracks API)
1. Failure Mode(rel-intro)
- 列出依赖:MySQL、静态资源、外部 webhook(若有)
- 标注每依赖超时与 fallback
2. 截断级联(rel-cascade~rel-degrade)
- Hikari
connection-timeout、Tomcat 线程上限 - 读路径缓存降级;写路径明确 503
- 对照 sc-circuit-breaker 若有多服务 mock
3. 数据可靠(rel-transactions)
- 报名/进度写操作
@Transactional边界 - 幂等键设计见 ip-idempotency
4. 可观测(prom-metrics)
- 5xx rate、P99 latency、连接池 active 面板
- SLO 99.9% 与 burn rate 告警(rel-slo)
5. 复盘
- 演练后写 blameless postmortem(rel-postmortem)
- 3 条 action 进入 backlog
场景卡片(任选 2)
| 场景 | 注入方式 | 期望行为 |
|---|---|---|
| MySQL 慢 | SELECT SLEEP(30) | 超时 + 5xx 不拖死全站 |
| 连接池满 | 并发 50 + 慢查询 | 快速失败,非无限 hang |
| 磁盘 95% | 写大文件到 /var | 告警触发,有 runbook |
| 发布 bad config | 错 YAML | 回滚 < 5 min |
交付物
- 一页 checklist(Markdown)
- Grafana 截图 或 PromQL 三条
- 复盘草稿 含时间线与 action
小结
可靠性 = 设计 + 演练 + 度量 + 改进闭环。 本 track 完结;继续深入可学 integration-patterns-essentials 与 prometheus-essentials。