文档目录

第 7 章配套代码索引

这一章的代码分两类:优化实现的正例(可直接抄用),和验证工具(判断优化是否真的有效)。

一、文件清单

文件 对应小节 内容
01-priority-pyramid.md 7.1 优先级金字塔 延迟分解 → 层级映射 + 优先级排序工具
02-reduce-work.md 7.2 减少工作 五种模式的正例/反例 + 审查清单
03-concurrency-and-parallelism.md 7.3 并发与并行 并行度调优实验 + 隔板实现
04-caching.md 7.4 缓存 Caffeine 三重防护完整实现 + P99 影响计算
05-backpressure-and-resilience.md 7.5 背压与韧性 完整韧性客户端 + 超时审计 + 重试实现
06-pooling.md 7.6 池化与复用 连接池计算器 + 对象池成本对比实验
07-jvm-tuning.md 7.7 JVM 调优 GC 对比实验 + 参数确认脚本
08-optimization-discipline.md 7.8 三问纪律与收益报告 三问模板 + 收益报告生成器 + 否决记录
09-lab7.md 7.9 Lab 7 Lab 7 编排与验证

二、本章代码的三个特点

  1. 大部分是「正例」:可以直接抄进项目的实现(韧性客户端、Caffeine 三重防护、隔板)。
  2. 都配「验证方法」:不只给实现,还给「怎么证明它有效」。
  3. 都标注「代价」:每份实现都说明它引入了什么成本。

三、依赖

// build.gradle.kts
dependencies {
    // 缓存
    implementation("com.github.ben-manes.caffeine:caffeine:3.1.8")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.9.0")

    // 限流(Guava RateLimiter)
    implementation("com.google.guava:guava:33.0.0-jre")

    // 熔断(Resilience4j)
    implementation("io.github.resilience4j:resilience4j-kotlin:2.2.0")
    implementation("io.github.resilience4j:resilience4j-circuitbreaker:2.2.0")

    // 连接池
    implementation("com.zaxxer:HikariCP:5.1.0")
}

四、使用顺序建议

① 先读 01,把「你的问题→该从哪级开始」想清楚(不要跳过)
        ↓
② 再做 02(减少工作)—— 收益最确定、副作用最小
        ↓
③ 然后 03/05(并发与韧性)—— 数倍级收益,但要注意副作用
        ↓
④ 缓存(04)放后面 —— 它有代价,而且常常掩盖真问题
        ↓
⑤ 池化(06)与 JVM(07)最后 —— 收益递减
        ↓
⑥ 全程用 08 的三问纪律记录

五、一个提醒

这些代码都是「优化手段」,不是「优化目标」。

❌ 「我看到有个缓存的最佳实践,我也加上」
✅ 「我的延迟分解显示数据库占 70%,命中率预估能到 95%,
    所以加缓存能把这段降下来——预期 P99 从 200ms 到 60ms」

先有目标和预期,再选手段。 这是第 7.1 节的全部意义。