能力矩阵
1 怎么用这张表
24 项能力分四组:判断(能不能识别问题)、设计(能不能写出契约)、实现(能不能落代码)、验证(能不能证明它有效)。每项给一个可观察的达标线;达不到就回到对应章节,不要用「大概懂了」糊过去。
自评等级:
0没听说过;1能复述定义;2能在给定场景下选对方案;3能写出实现并解释失败路径;4能设计验证实验并读出证据。
本书的目标不是让所有读者都到 4;第 2 篇到 3、第 5 篇到 3 是合理目标,负责 on-call 的读者应在第 9–11 章到 4。
2 判断
| # | 能力 | 达标线 | 章节 |
|---|---|---|---|
| J1 | 区分超时、失败、未知 | 给定一次 context deadline exceeded,能说出服务端可能处于哪三种状态 | 1、2 |
| J2 | 识别重试放大 | 给定重试次数与并发,能估算最坏请求放大倍数 | 2、11 |
| J3 | 识别分区与分裂脑 | 看到两个节点都认为自己是主,能列出至少三条证据 | 3、9 |
| J4 | 判断一致性承诺 | 给定一段读写历史,能判断是否线性一致,并指出反例 | 4 |
| J5 | 区分一致性与隔离级别 | 能解释「线性一致读」和「可串行化事务」不是同一件事 | 4、6 |
| J6 | 判断投递语义 | 看到「至少一次」能说出重复发生在哪一步、怎么去重 | 7 |
| J7 | 判断缓存陈旧 | 能列出 TTL、双写、失效失败三种导致旧值的路径 | 8 |
| J8 | 判断锁是否安全 | 能指出只靠 SET NX PX 的锁在 GC 停顿时为什么失效 | 9 |
| J9 | 判断观测盲区 | 能说出 trace 采样、指标聚合、日志重复各自的盲区 | 10 |
| J10 | 判断过载还是依赖慢 | 能根据队列长度、延迟分布、下游错误率区分两者 | 11 |
3 设计
| # | 能力 | 达标线 | 章节 |
|---|---|---|---|
| D1 | 写远程调用契约 | 一份契约包含 deadline、重试条件、幂等键、错误码、背压信号 | 2 |
| D2 | 设计幂等键 | 能定义键的粒度、指纹、冲突策略、过期与回收 | 2、12 |
| D3 | 选复制拓扑 | 能根据 RPO/RTO、写延迟、冲突容忍度选主从/多主/无主 | 3 |
| D4 | 写一致性契约 | 明确读己之写、单调读、线性读分别用在哪些接口 | 4 |
| D5 | 设计事务边界 | 能判断哪些操作必须在一个事务里,哪些可以用 Saga/Outbox | 6 |
| D6 | 设计事件流 | 能定义分区键、顺序保证、消费者幂等、重放策略 | 7 |
| D7 | 设计缓存策略 | 能给出 TTL、失效、击穿保护、热点 key 方案 | 8 |
| D8 | 设计锁与选主 | 锁带租约与 fencing;选主带 quorum 与降级路径 | 9 |
| D9 | 设计观测 | 每个关键路径有 RED 指标、trace、结构化日志与 SLO | 10 |
| D10 | 设计容量与演练 | 有基线、梯度、headroom、爆炸半径与回滚 | 11 |
4 实现
| # | 能力 | 达标线 | 章节 |
|---|---|---|---|
| I1 | 实现带 deadline 的客户端 | 超时后不把请求当成功;能取消在途请求 | 2、12 |
| I2 | 实现幂等写入 | 同一键重试只产生一次副作用;不同参数返回冲突 | 12 |
| I3 | 实现去重表 | 唯一约束 + 状态机 + 租约,崩溃后可恢复 | 12 |
| I4 | 实现 quorum 读写 | 3 副本、R+W>N,读修复可运行 | 3、13 |
| I5 | 实现 Raft 选举 | term、投票、随机超时、日志新旧比较 | 5、13 |
| I6 | 实现日志复制 | prevLogIndex/term 检查、冲突截断、提交推进 | 5、13 |
| I7 | 实现线性一致读 | ReadIndex 或 lease read,能解释为什么需要心跳 | 13 |
| I8 | 实现 MVCC 可见性 | 能写出快照读的可见性判断 | 6 |
| I9 | 实现消费者去重 | offset 提交与业务事务的原子性,或 outbox | 7、12 |
| I10 | 实现 fencing | 资源端校验单调 token,拒绝过期持有者 | 9、13 |
5 验证
| # | 能力 | 达标线 | 章节 |
|---|---|---|---|
| V1 | 故障注入 | 能注入丢响应、重复、分区、进程暂停,并观察不变量 | 11、12、13 |
| V2 | 一致性检查 | 能写一个检查器,判断历史是否满足线性一致 | 4、13 |
| V3 | 压测 | 有基线、并发梯度、P50/P99、错误率、资源曲线 | 11 |
| V4 | 观测排障 | 能从 trace 找到最慢 span,从指标确认是否过载 | 10、11 |
6 三条路线的达标组合
| 路线 | 必须到 3 的能力 | 必须到 2 的能力 |
|---|---|---|
| 后端 | D1、D2、I1、I2、I3 | J1、J2、D5、D7、V1 |
| SRE | J1、J3、J8、J9、J10、D8、D9、D10、V1、V4 | D3、D4、I7 |
| 存储 | J3、J4、J5、D3、D4、I4、I5、I6、I7、V2 | D5、D6、D10 |
自评怎么做
不要凭印象打分。每一项找一个你做过的事故/接口/实验作为证据;找不到证据的,最高只能打 2。把证据写在表格第三列(例如「2025-11 支付超时事故复盘」),半年后回来看是否还成立。
下一站:入学诊断——12 道题,测一测你现在处于哪一档。