ENGINEERING PRACTICES / 工程化要点

工程化要点

把篇章 / 核心原理 / 场景导读里的「工程化要点」去重提炼为平台可执行门禁:发布回滚、可观测、容量、数据、缓存、调用治理、AI 评测、安全供应链八组共 65 卡。与方法论「怎么想」互补——本篇回答「不上线会出事的红线是什么」。

门禁是器;怎么想见 核心方法论。以器代术是四种错位之一。

8 组 · 65 卡 | 题目总量(C+A+E+S+D)546 | ID 前缀 G | 三层:洞察 / 原理 / 表达
门禁主线

每张 G 卡都按「可检查、可回滚、可观测」三问自检:没有证据链不上手段;没有回滚路径不上变更;没有卡点指标不扩量。门禁不是口号,而是变更单里可勾选的字段与上线评审里可追问的证据。

  1. 变更面:代码 / 配置 / 数据 / 模型与提示词一律当发布;灰度比例表、卡点指标、一键回滚三维可退;流量染色与回滚后数据修复写进变更单。
  2. 证据面:Traces/Metrics/Logs 三支柱默认交付;排障标准动作与季度演练;告警可行动并绑定 Runbook;变更单号进 Trace baggage。
  3. 容量面:应用池化与编排配额同一模型;拒绝路径用户可感;多租户配额与依赖拓扑联动;大促清单未勾完不上峰值。
  4. 数据与一致面:DDL/修复可回滚、SQL 审核闭环、影子表观察期;缓存失败可降级、一致窗口进契约、热/大 key 专项。
  5. 调用与智能面:同步超时可加总、熔断半开观察窗、Outbox/CDC 对账;AI 制品版本化、黄金集、工具副作用与成本配额同级卡点。
  6. 安全面:威胁建模先行、密钥双写轮换、SBOM/CVE 时限与豁免到期阻断;生产访问审计可抽检。
与方法论对照
  • 思维口径见核心方法论 M04 / M06 / M10 / M11;本篇写成勾选式门禁与变更单字段。
  • 发布回滚对齐 M06.06 / M11.01;证据链对齐 M15.02;超时/对账/缓存/AI 分别对齐 M11.02 / M11.03 / M07.02 / M14.01。
  • 深度问答与场景篇的工程化导读在此收口;安全细节对照服务端安全 Checkpoint;事故翻车叙事见生产踩坑(K)。
  • 导图页补强八组互锁与每卡红线/反模式/清单;三层正文与验收话术以本页为准。
怎么用本篇
  • 按下周变更类型选组:发版 G01、排障 G02、大促 G03、改表 G04、缓存 G05、同步/双写 G06、AI G07、安全 G08。
  • 每卡三层:核心洞察(红线与反模式)→ 原理映射(为何 / 与 M 卡同构)→ 工程表达(变更单字段、验收、话术)。
  • 评审追问:证据从哪来?回滚入口与 RTO?卡点指标是什么?失败时用户可感是什么?组内卡通常互锁(如 G01 灰度依赖 G02 指标)。

阅读建议:先扫八组标题建立索引,再按变更类型深挖三张卡;组内三卡通常互锁(例如 G01 灰度依赖 G02 指标,G05 降级依赖 G03 回源配额)。写变更单时把「工程表达」层的清单直接贴进模板。导图页用于快速回忆红线与反模式,细节以本页三层正文为准。

一、G01 发布回滚与变更门禁

本组管变更怎么上、怎么退:发布三要素(灰度·卡点·回滚)、配置/框架升级当发布、变更窗口与错误预算冻结、金丝雀自动回滚阈值、变更单强制字段、流量染色一致性,以及回滚后数据修复门禁。没有演练过的回滚路径等于没有回滚;与 M06.06 / M11.01 互为思维与门禁。

G01.01
发布三要素:灰度·卡点·回滚
核心洞察

高风险变更默认按「分批放量 + 指标卡点 + 一键回滚」执行;没有演练过的回滚路径等于没有回滚。发布不是把包推上去,而是把爆炸半径可控地扩大,并在任一卡点失败时退回已知好版本。

三要素缺一,变更单即不合格:灰度比例表(含观察窗口)、卡点指标与阈值(业务成功率优先)、回滚命令/开关(含配置与流量维)。「进程起来了」不是卡点。

反模式:全量一把梭;只回滚镜像留下有毒配置;卡点只看 CPU/存活探针;错误预算已耗尽仍继续发版;回滚从未在预发演练。

灰度档位之间要有明确停留与否决权:观察窗口未结束不得人工「觉得没事就扩」;否决权默认交给卡点指标与错误预算,而不是现场最高职级。

回滚演练必须覆盖「配置+镜像+流量」三联:只演练 kubectl rollout undo 而配置中心仍是有毒版本,演练合格也是假合格。

原理映射

对应 SRE 错误预算与金丝雀:流量或实例分批(如 1%→5%→25%→100%),卡点看错误率、延迟 P99、关键业务成功率与依赖饱和,而不是容器 Ready。

回滚是三维能力——代码/镜像、配置、流量路由——任一维不可退,整体不可退。与方法论 M06.06 回滚优先、M11.01 变更可回滚同构:回滚是默认能力,不是失败丢脸。

爆炸半径由批大小 × 暴露时长决定;观察窗口要覆盖依赖传播与缓存刷新,过短会「绿着绿着炸」。失败时优先退回,再离线分析,避免在灰度上现场改代码。

金丝雀的统计学意义:批太小看不出差异,批太大爆炸半径失控。比例表要同时写清「最小可观测流量」与「最大可接受损失」,并与业务峰值日历对齐。

卡点指标分层:L1 用户可感(成功率/RT)、L2 依赖饱和(池拒绝/下游错误)、L3 资源(CPU/内存)——L3 只能辅助,不能单独放行。

工程表达

变更单模板固定附:灰度比例与每档停留时间、卡点指标/阈值/看板链接、回滚入口与 RTO、最近一次回滚演练记录。卡点未过不得扩量;错误预算耗尽冻结非紧急发布。

  • 表达顺序:先退路与观察窗口,再功能清单。
  • 追问「出了问题怎么办」:当场指出回滚入口、影响面、预计恢复时间。
  • 验收:预发至少完成一次真实回滚演练(含配置回退)。

关联:配置变更见 G01.02;依赖升级见 G01.03;证据链见 G02;治理参数回滚见 G06.02。

变更单「回滚」栏必填:入口链接、执行人、预计 RTO、演练日期、已知限制(例如不可逆 DDL 则写补偿而非回滚)。评审口头说得出但写不出的,视为未准备。

发布值班话术:「当前档位 / 已观察时长 / 卡点红绿 / 下一步扩或退」。禁止用功能演示代替卡点汇报。

G01.02
配置变更当发布
核心洞察

热更新与配置推送必须按发布管控:审批、灰度、快速关停与本地快照兜底。配置中心一次全量推送,杀伤力往往大于发版——「只改个开关」若影响面是全集群,就必须与发版同级门禁。

有毒配置(错误限流、错误开关、错误路由)可以在秒级制造全域事故;因此关停路径的 SLA 应严于发版回滚。

反模式:生产控制台随手改;无快照全量推;客户端无本地兜底导致配置中心抖动拖垮核心链路;动态开关不进变更单。

配置变更的爆炸半径经常大于代码:一次错误的限流阈值或开关默认值可以在秒级打满或打空全集群,而发版至少还有构建与镜像传播延迟。

本地快照不是可选项:配置中心故障或网络分区时,客户端必须能用上次成功快照继续服务,并暴露「使用降级快照」信号。

原理映射

配置中心是关键依赖:客户端要有本地缓存/快照、推送失败降级、订阅隔离;长连接抖动不得阻塞业务线程。

与 M12.06「代理边界与配置契约」一致:配置项的语义、默认值、生效范围、类型校验写进契约,禁止口头约定与隐式魔法值。

灰度配置与灰度流量可独立:先小范围实例吃新配置,再扩面;回滚优先回到上一版本快照,而不是「再推一版修好」。

配置项分级:P0(鉴权/限流/路由/数据源)必须灰度+双人;P1(非关键开关)可快速通道但仍进变更单;禁止无级别的「都是开关」。

推送模型要区分:长轮询/推送失败时的退避、订阅风暴隔离、单 key 与命名空间级回滚。回滚粒度越粗,误伤越大,越要灰度。

工程表达

评审配置项时同步评审:生效范围、灰度策略、回滚/关停开关、是否需要双写观察期、失败时客户端行为。

  • 禁止生产控制台无单变更;动态开关也要变更单号。
  • 上线核对:推送成功率、订阅滞后、关停演练耗时。
  • 高危项(限流、鉴权、路由)默认双人复核。

关联:发布三要素 G01.01;治理参数 G06.02;密钥轮换 G08.02(密钥也是配置的一类)。

上线后 15 分钟核对:推送成功率、订阅滞后分位、客户端快照版本分布、关停开关可用性探测。

控制台权限:生产写权限默认关闭,临时开启有工单与自动回收;审计日志可还原「谁在何时改了何值」。

G01.03
框架与依赖升级门禁
核心洞察

大版本升级(Boot / Spring / JDK / 中间件客户端)用契约测试 + 金丝雀;弃用 API、默认行为变化、序列化/校验差异必须进回归清单。「编译过了」不等于行为兼容。

默认值、自动配置顺序、校验与异常映射常在运行时才爆;Native Image / AOT 还要覆盖反射与资源白名单。

反模式:业务私锁雪花版依赖;CVE 快车道跳过最小回归;只升库不看 Release Note 的 Breaking Changes;无回滚镜像的「一次性升级」。

升级的隐藏成本在「默认行为」:Jackson 命名策略、Bean 校验顺序、HTTP 客户端连接池默认、JDK 字符串与 GC 行为,都可能在流量下才显现。

私锁版本的真正风险是安全补丁跟不上平台 BOM;时间盒退出写进 ADR,到期未退出视为技术债超期。

原理映射

基线 BOM 由平台抬升,业务少私锁版本;Breaking change 用兼容层或双跑,时间盒退出。安全补丁与功能升级分流:CVE 可走快车道,但仍需最小回归与可回滚镜像。

契约测试覆盖 HTTP/消息/DB 行为;关键路径压测验证资源与线程模型变化(虚拟线程、连接池默认值)。

与 M05 Java 生态思维、G08.03 供应链可追溯互补:升级既是行为风险也是供应链风险。

契约测试要覆盖:错误码与异常映射、序列化兼容(含未知字段)、消息 schema、DB 访问层行为。只测 happy path 的升级门禁是穿孔门禁。

Native/AOT:反射、资源、动态代理白名单进回归;缺失时的失败应在预发暴露,而不是生产 ClassNotFound。

工程表达

升级门禁清单:契约测试绿、关键路径压测、金丝雀错误预算、回滚镜像就绪、弃用 API 清单、默认行为 diff。

  • 评审话术:「这次升级打破了哪些默认假设?」答不上来就补测试。
  • 私锁版本须说明退出计划与时间盒。
  • 发布后观察窗口覆盖序列化/校验相关错误码。

关联:G01.01 金丝雀;G08.03 SBOM/CVE;篇章 Spring/Boot 升级场景。

升级变更单附:Release Note Breaking 摘要、弃用 API 清单、契约测试报告、金丝雀计划、回滚镜像 digest。

快车道 CVE:最小回归集(启动+核心路径+安全相关用例)仍不可少;快车道不是无车道。

G01.04
变更窗口与错误预算冻结
核心洞察

错误预算耗尽或变更窗口外,非紧急变更默认冻结;紧急变更走加急通道但仍要灰度与回滚演练记录。

原理映射

SRE 错误预算把可靠性变成可消耗资源;耗尽即信号:优先稳定性而非功能。变更日历与业务高峰对齐。

工程表达

门禁:错误预算红线、变更窗口表、加急审批人、冻结解除条件。评审问「现在能不能发」先看预算板。

G01.05
金丝雀自动回滚阈值
核心洞察

金丝雀阶段必须绑定可自动回滚的客观信号(错误率、延迟、业务成功数);人工「感觉还行」不能替代阈值。

原理映射

灰度是实验:实验没有停止条件就不是实验。信号要业务可感,避免只看 CPU。与错误预算、变更窗口互锁。

工程表达

门禁:金丝雀比例表、自动回滚阈值、人工覆盖审批人、回滚演练记录。评审问「触发什么立刻回」。

验收:金丝雀/发布演练必须至少触发一次自动回滚或人工覆盖留痕;信号与业务成功数同向校验。

关联:错误预算看板、变更窗口、回滚后数据修复门禁;禁止只看 CPU 放量。

G01.06
变更单强制字段门禁
核心洞察

变更单缺回滚点、观察指标、负责人不得合入发布流水线。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

变更是契约:字段不全等于不可审计。与灰度/回滚互锁。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:模板校验、缺字段阻断、抽检变更单完整率。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G01.07
流量染色与灰度一致性
核心洞察

灰度流量必须端到端染色(网关→服务→MQ→任务),否则观察窗失真。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

染色丢失=对照组污染。异步边界是断裂高发区。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:染色传递验收用例;MQ/线程池包装器清单。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G01.08
回滚后数据修复门禁
核心洞察

代码回滚不等于数据回滚;有副作用变更必须附数据修复/补偿方案。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

状态机与外部账单不会随镜像回退。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:修复脚本评审、演练记录、冻结写路径开关。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。

二、G02 可观测与排障证据链

本组管出事时证据从哪来、第一步做什么:三支柱默认交付、排障标准动作、告警可行动、采样与成本门禁、变更单号进 Trace baggage、SLO/错误预算看板、日志脱敏采样,以及季度排障演练制度。没有证据链的变更等于赌博;对齐 M06.07 / M15.02 / M11。

G02.01
三支柱默认交付
核心洞察

日志规范、指标、追踪随脚手架默认接入,禁止上线后补丁式接入。没有证据链的系统,排障只能靠猜,变更只能靠赌——可观测性是发布门禁的前置条件,不是增值选项。

三支柱缺一不可:只有日志没有指标会淹没在噪声里;只有指标没有追踪难定位跨服务;只有追踪没有业务日志缺上下文。

反模式:上线后再「补个 Trace」;TraceId 在 MQ/线程池/定时任务断裂;指标无业务语义只堆 JVM;采样率拍脑袋导致关键故障无跨度。

脚手架默认接入的标准要写成平台契约:日志字段字典、指标命名规范、Trace 采样默认值。业务仓库「各自发挥」会导致排障时无法跨服务拼接。

异步边界是 Trace 断裂高发区:线程池包装、MQ 生产者/消费者、定时任务、Reactive 调度都要有明确的上下文传递方案。

原理映射

Logs / Metrics / Traces 互补:指标发现异常,追踪定位路径,日志给上下文。统一 TraceId 传播(HTTP、RPC、MQ、线程池、定时任务、异步回调)。

黄金指标按服务类型选型(RED/USE);采样策略在成本与排障完整度之间显式权衡并写入 ADR。与 M06.07 可观测三支柱、M15.02 证据优于经验同构。

结构化日志字段约定(traceId、tenant、变更单号、关键业务键)比「多打点」更重要;无规范的日志等于不可检索的噪声。

成本权衡显式化:全量追踪在高 QPS 下不可承受时,用头部采样+错误必采+慢请求必采;策略写入 ADR 并按季度复盘漏采事故。

业务指标优先于技术指标放行:有「下单成功数」才谈「JVM 堆」;技术指标用于定位,业务指标用于卡点。

工程表达

新服务 checklist:结构化日志字段、核心业务指标、入口/出口 span、仪表盘与告警模板、采样策略说明。

  • 上线评审问「证据从哪来」,而不是「出了事再加」。
  • 验收:抽一条真实请求,从入口 Trace 钻到依赖与日志。
  • 变更单号写入日志与 Trace baggage,便于回放。

关联:G02.02 排障动作;G02.03 告警可行动;发布卡点指标依赖本卡。

新服务 DoD:仪表盘从模板克隆、告警从模板绑定、示例 Trace 链接贴进 README。缺少任一项不得进生产命名空间。

抽检制度:每月随机抽服务验证「入口到依赖」钻取,失败记平台缺陷或业务债。

G02.02
排障标准动作
核心洞察

故障现场先止血再取证:保留现场(日志段、指标窗口、堆栈/转储、变更单),再离线分析。现场长时间 debug 拉长 MTTR,是最大的反模式。

止血优先级通常写在 Runbook:回滚 > 降级 > 限流 > 扩容 > 重启 > 切流——按业务选,但必须事先写清,禁止临时发明顺序。

反模式:一上来重启丢掉现场;多人并行改配置无指挥;把「感觉像是缓存」当归因;交接班只交感觉不交证据包。

指挥链比工具链更重要:谁有权执行回滚/降级、谁负责对外同步、谁禁止并行变更,必须在故障前写清。工具再全,多人无指挥仍会互踩。

现场保留清单按故障类型预制:OOM 要堆转储策略、死锁要线程栈、流量异常要入口与依赖对比图——不要故障时才想「还要什么证据」。

原理映射

标准动作链:分区归因(变更?流量?依赖?资源?)→ 采证 → 假设 → 验证 → 固化 Runbook。与线上问题主题 M15.02、M11 证据优于经验对齐。

归因必须能指向证据时间线:变更窗口、流量拐点、依赖错误率、资源饱和曲线。假设要可证伪,验证失败就换假设,禁止死磕第一直觉。

止血与根因修复解耦:先恢复用户可感,再开问题单做根因与改进;两者混为一谈会反复「修一半上线一半」。

分区归因四象限强制过一遍:变更、流量、依赖、资源。跳过任一象限的「秒级结论」事后复盘往往不成立。

假设管理:同时最多保留 2~3 个高优先级假设,每个假设写「如何证伪」;证伪后归档,防止讨论原地打转。

工程表达

排障话术固定四句:现象与范围、已采证据、当前假设、下一步与回滚条件。交接班移交证据包(看板截图、Trace 链接、变更单、已执行动作)。

  • 复盘输出:时间线、根因、改进项负责人与截止日期。
  • Runbook 每次事故后回写,禁止只存在聊天记录。
  • 重大故障禁止未经指挥的并行变更。

关联:G02.01 证据来源;G02.03 告警驱动首轮;G01 回滚是常见止血手段。

交接班模板:时间线、已执行动作、未验证假设、证据包链接、当前风险。聊天记录不算交接。

复盘区分「触发因素」与「根因」:只改触发不改根因,同类故障会复发;改进项进 backlog 有截止日期与验证方式。

G02.03
告警可行动
核心洞察

告警必须可行动:有明确责任人、有 Runbook、有抑制与聚合,禁止「只响铃不指向动作」。噪声告警会训练团队忽略真正的火情。

一条告警若从未被处理,就应从系统中删除或降级;告警是稀缺注意力的配额,不是指标的镜子。

反模式:原因猜测型告警(「可能是 GC」)刷屏;无抑制导致同一根因打爆手机;夜间与白天同一阈值;错误预算燃尽只多发邮件不冻结发布。

告警噪声是文化腐蚀剂:团队学会「先静音」之后,真正的火情也会被静音。治理噪声与增加告警同样是可靠性工作。

可行动 = 责任人 + 首要动作 + 升级路径 + Runbook;缺一则降级为看板或工单,不进寻呼。

原理映射

告警设计:症状(用户可感)优先于原因猜测;阈值与窗口防抖;夜间与工作时间分级。错误预算燃尽应触发发布冻结与升级,而非更多噪声。

关联告警聚合,同一根因合并为一条工单;分页告警与依赖告警要有因果标签,避免「全红」时无人知道先动哪条。

与 M06.07 / M11 对齐:可观测交付的终点是「可行动」,不是「有图」。

症状优先:用户下单失败率优于「某主机 CPU」。原因类告警可作辅助面板,避免寻呼风暴。

抑制与聚合:同一根因窗口内合并;维护窗口抑制;依赖故障时下游告警降级为信息级,避免全员空转。

工程表达

每条告警附:影响面、首要动作、升级路径、相关看板、Runbook 链接。季度清理无主告警与从未处理的告警。

  • 验收:新人按 Runbook 能独立完成首轮处置。
  • 新增告警必须同步新增或更新 Runbook。
  • 发布冻结条件写入错误预算策略,值班可见。

关联:G02.01 指标来源;G02.02 首轮动作;G01 错误预算冻结发布。

告警目录季度评审:处理次数、平均确认时长、误报率;零处理告警删除或降级。

新人验收:抽三条告警,按 Runbook 完成首轮处置演练并计时,超时则改 Runbook 而不是怪新人。

G02.04
采样与成本门禁
核心洞察

追踪采样策略必须书面化:头部采样 + 错误必采 + 慢请求必采;禁止拍脑袋全开或全关。

原理映射

全量追踪在高 QPS 下不可承受;漏采会导致事故不可复盘。成本与排障完整度的权衡写入 ADR。

工程表达

门禁:采样 ADR 链接、错误必采开关、成本看板、季度漏采复盘。上线核对示例 Trace 可钻取。

G02.05
变更单号进 Trace baggage
核心洞察

每次生产变更必须把变更单号写入日志与 Trace baggage;否则排障无法把「现象」绑回「哪次变更」。

原理映射

证据链要能回答:这个错误对应哪次发布/配置推送。无关联等于事后猜。

工程表达

门禁:脚手架默认注入变更单号;抽检一条请求能从 Trace 钻到变更单。缺字段阻断发布。

验收:金丝雀/发布演练必须至少触发一次自动回滚或人工覆盖留痕;信号与业务成功数同向校验。

关联:错误预算看板、变更窗口、回滚后数据修复门禁;禁止只看 CPU 放量。

G02.06
SLO 与错误预算看板
核心洞察

每个关键服务必须有对外 SLO 与错误预算看板,发布前先看预算。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

没有预算的稳定性讨论是空谈。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:看板链接进变更单;预算红线自动冻结非紧急变更。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G02.07
日志脱敏与采样门禁
核心洞察

结构化日志默认脱敏;全量 Debug 采样禁止进生产常开。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

日志既是证据也是泄露面与成本面。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:字段字典、脱敏规则单测、采样策略 ADR。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G02.08
排障演练季度制度
核心洞察

季度至少一次真实排障演练(含取证与复盘),否则 Runbook 是假的。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

演练发现断链比故障时发现便宜。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:演练记录、缺口进平台债、未演练服务限制发布级别。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。

三、G03 容量与资源预算

本组管系统真实能扛多少:应用与编排同一容量模型、池化与拒绝可观测、大促前演练清单、拒绝路径用户可感、多租户配额与嘈杂邻居、依赖拓扑容量联动、线程池与连接池联合预算、弹性伸缩冷却防抖。清单未勾完不上峰值;对齐 M08.10 / M12.04。

G03.01
应用与编排同一容量模型
核心洞察

应用线程池/连接池/队列深度与 K8s CPU/内存/HPA 必须同一容量模型,禁止「应用按 QPS 估、编排按感觉设」。两边不一致时,先打满的一侧决定真实容量。

常见失效:池子先拒而 CPU 还空;或 limit 先 OOMKill 而业务还在加并发。容量文档若不能同时解释应用与编排,就是两套幻觉。

反模式:HPA 只盯 CPU;JVM 堆 + 直接内存 + 线程栈超过 limit;压测结论不映射到编排参数变更单。

容量模型要能回答三个数:目标流量、瓶颈资源、拒绝时用户可感。答不出「拒绝时用户看到什么」,说明模型只覆盖了「理想路径」。

JVM 与容器的内存账要算全:堆、元空间、直接内存、线程栈、侧车、页缓存假设;漏算一项就会在高峰以 OOMKilled 形式出现。

原理映射

容量 = 最小瓶颈资源。利特尔定律与排队论约束在途请求;容器 limit 与 JVM 堆、直接内存、线程栈、侧车要三联(多联)对齐。

HPA 指标要与业务饱和信号一致(队列深度、拒绝率、RT),CPU 不等于业务容量。与 M08.10 容量定律、M12.04 分区归因与容量一体同构。

扩容方向要写清:水平加副本 vs 调池化;加副本解决不了单分片热点与下游单点。

水平扩展有效的前提是无单分片热点、无全局锁、下游也按同模型扩。只扩应用不扩 DB/缓存,是把瓶颈挪位。

HPA 与池化参数联合设计:副本增加会放大总连接数,可能先打穿下游;扩容单含下游容量确认。

工程表达

容量文档写清:目标 QPS/RT、瓶颈资源、池化参数、HPA 阈值、拒绝行为、OOM/拒绝时的用户可感。

  • 评审现场核对:应用最大并发 × 单请求资源 ≈ 编排可提供资源。
  • 压测结论必须能映射到具体编排/池化变更单。
  • 大促前用 G03.03 清单复核同一模型。

关联:G03.02 拒绝可观测;G04.03 扩展前先单机;G06.01 超时预算受容量约束。

容量文档与编排清单同 PR 评审;压测报告必须映射到具体 YAML/池参数 diff。

评审口算:maxConcurrency × costPerReq 是否落在 request/limit 与下游配额内;口算不过关不进入压测预约。

G03.02
池化与拒绝可观测
核心洞察

线程池、连接池、信号量的拒绝策略必须可观测:拒绝次数、队列等待、活跃数进指标与告警。静默拒绝等于悄悄丢业务——拒绝是保护机制,必须让调用方与值班同时看见。

队列从「缓冲」变成「延迟放大器」时,要下调队列、上调拒绝可见性;无限队列是事故预告。

反模式:拒绝只打本地日志;Caller 无感知继续重试打穿;虚拟线程不限制下游并发把 DB 打爆。

可见的拒绝是友好的失败;不可见的排队是慢性中毒。队列长度与等待时间进 SLI,而不仅是「线程池还有余量」的错觉。

虚拟线程场景下,「线程用之不竭」的错觉最危险:必须用信号量把并发钉在下游可承受的数字上。

原理映射

Caller 需感知背压(快速失败/降级),Callee 需暴露饱和信号。与 M08.07 背压是契约、M08.06 背压主题同构。

虚拟线程降低线程成本,不降低下游容量;仍须用信号量/池化限制对 DB、RPC、外部 API 的并发。

拒绝策略(Abort/CallerRuns/Discard)各有代价:Discard 最危险(静默丢),CallerRuns 可能反压到入口线程,须显式选择并监控。

背压传播方向:Callee 饱和 → 暴露指标/快速失败 → Caller 降级或限流 → 入口保护。任一环断裂就会在边界堆积。

拒绝策略选择写入 ADR:为何不用 Discard;CallerRuns 是否会反压到 Netty/Tomcat 线程;Abort 后的用户文案与补偿。

工程表达

池化评审三项:核心/最大/队列、拒绝策略、指标名与告警。压测必打到拒绝路径,确认降级文案与补偿。

  • 看板固定:拒绝 QPS、排队 P99、活跃线程/连接、下游错误率。
  • 变更池参数按发布门禁,可回滚。
  • 拒绝率进入错误预算与大促卡点。

关联:G03.01 同一容量模型;G06.01 超时与重试;G02.03 饱和告警。

压测报告专章「拒绝路径」:触发方式、指标曲线、用户可感、是否可恢复。缺失该章视为压测未完成。

生产看板把拒绝率与业务成功率并排;拒绝率上升而成功率暂稳,往往是下一波雪崩的前兆。

G03.03
大促前演练清单
核心洞察

大促前必须做:全链路压测、限流阈值校验、降级开关演练、回滚演练、依赖容量确认。清单未勾完不上流量峰值——演练目标是暴露协同问题,而不是证明「没事」。

口头「应该扛得住」不算数;依赖方容量函证要书面化,含峰值 QPS、拒绝策略与联系人。

反模式:只压入口不压依赖;演练不走真实降级开关;大促窗口仍开放非预案发布;压测流量形状与真实热点不符。

演练要像打仗:真实开关、真实回滚、真实依赖函证、真实值班链路。桌面推演只能发现文档问题,发现不了「开关没接上」。

峰值流量形状必须含热点与毛刺;只用均匀压测通过的系统,会在秒杀/开售瞬间倒塌。

原理映射

演练重点:缓存击穿、热点账户、消息堆积、慢 SQL、线程池打满、依赖超时雪崩。错误预算与大促窗口绑定,发布冻结有明文。

与 G01 发布门禁、G03.01 容量模型、G05 热点治理形成闭环:压测发现的参数变更仍走发布与回滚,禁止「演练现场改死参数」。

混沌与故障注入(可选)验证:单依赖超时、缓存全挂、从库延迟——失败模式应符合预期降级,而非雪崩。

发布冻结窗口与错误预算绑定:冻结不是形式,而是变更审批流真的关掉非预案通道。

依赖函证内容:峰值 QPS、超时与拒绝策略、降级约定、值班联系人、升级路径。邮件「OK」无数据视为未函证。

工程表达

清单模板按「流量入口 / 核心交易 / 依赖 / 数据 / 回滚」五栏;演练结论进复盘,参数变更走发布门禁。

  • 大促当天只允许预案内动作,禁止临时发明。
  • 值班表、升级路径、公共决策频道提前就绪。
  • 峰值后做容量复盘:预测 vs 实际、拒绝与降级触发次数。

关联:G01 回滚演练;G05.03 热点清单;G06.02 治理参数;G02 证据与告警。

清单销项会议:每项有证据链接(压测报告、演练录像/日志、函证书)。无证据不算勾完。

大促当日决策树提前打印在值班频道置顶:触发条件 → 允许动作 → 禁止动作 → 升级条件。

G03.04
拒绝路径用户可感
核心洞察

池满/限流拒绝必须返回可识别错误码与用户可感文案,并有指标;静默超时不算拒绝策略。

原理映射

拒绝是保护手段;不可观测的拒绝等于故障。客户端应能区分可重试与不可重试。

工程表达

门禁:拒绝码表、用户文案、拒绝 QPS 指标、告警绑定 Runbook。压测必测拒绝路径。

G03.05
多租户配额与嘈杂邻居
核心洞察

共享集群必须有租户级配额(QPS/连接/存储);无隔离的「平均可用」会在大客户峰值时拖垮全体。

原理映射

嘈杂邻居是容量问题的常态形态;配额是契约,不是优化项。

工程表达

门禁:租户配额表、超限拒绝可观测、大促前核对 TopN 租户预算。

验收:金丝雀/发布演练必须至少触发一次自动回滚或人工覆盖留痕;信号与业务成功数同向校验。

关联:错误预算看板、变更窗口、回滚后数据修复门禁;禁止只看 CPU 放量。

G03.06
依赖拓扑容量联动
核心洞察

容量评审必须含关键依赖拓扑与各自瓶颈,不只看本服务 CPU。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

假可用常出在下游单点。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:依赖图、下游配额、故障域标注。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G03.07
线程池与连接池联合预算
核心洞察

应用线程/虚拟线程并发与 DB/Redis/HTTP 连接池必须联合设上限。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

只扩线程不扩连接=打穿下游。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:联合预算表、拒绝可观测、压测验收。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G03.08
弹性伸缩冷却与防抖
核心洞察

HPA/自适应扩缩必须设冷却与防抖,避免抖动放大事故。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

抖动是容量控制系统的常见失效模式。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:冷却参数、扩缩事件审计、大促前演练。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。

法侧原则见 M06.02 迟滞阈值与稳定窗口。

四、G04 数据变更与 SQL 治理

本组管数据面怎么改才不炸:DDL/数据修复可回滚、SQL 审核与慢 SQL 闭环、扩展前先单机、影子表与双写观察期、只读副本延迟门禁、数据修复双人审批、在线 DDL 工具白名单、备份恢复演练。数据变更往往比发版更危险;对齐 M11.01 / M08.05。

G04.01
DDL/数据修复可回滚
核心洞察

DDL 与数据修复必须可回滚或可正向补偿:影子表、双写、分批、回填校验。不可逆删改默认禁止在高峰直打生产——数据变更与代码变更同等危险,经常更危险。

「先删后说」「高峰加索引」「无备份全表 UPDATE」是经典事故模板;回滚方案写不清,变更单退回。

反模式:锁表 DDL 无窗口评估;修复脚本无抽样校验直接全量;复制延迟不管继续打主库。

数据修复的最高风险是「不可逆 + 难校验」:删改类必须先有可抽样的正确性定义,再谈执行速度。

复制延迟是隐藏锁:主库看起来成功,从库或下游 CDC 尚未跟上,业务读到旧数据会被误判为修复失败或成功。

原理映射

在线 DDL 看锁与复制延迟;大表变更用 gh-ost/pt-osc 或云厂商在线变更。数据修复先备份/抽样校验,再全量;正向补偿优先于逆向幻想。

与 M11.01 变更可回滚一致;与 G06.03 双写/Outbox 在「数据面变更」上互补——结构变更与事件契约要一起评估。

校验查询与影响行数预估是门禁字段:估错一个数量级就应熔断执行。

在线 DDL 工具选型写进变更单:锁类型、是否拷贝表、磁盘与时间预估、失败回退。自研脚本等同高风险,需同等评审。

正向补偿优先:与其幻想完美回滚 SQL,不如设计可重放的修复任务与校验任务。

工程表达

变更单附:执行窗口、回滚 SQL/切流方案、校验查询、影响行数预估、复制延迟阈值、熔断条件。

  • 执行中盯锁等待与复制延迟;超阈熔断。
  • 禁止「先删后说」;删改类须双人复核。
  • 完成后用校验查询闭环,结果贴回变更单。

关联:G04.02 SQL 审核;G01 发布窗口;G06.03 结构变更对 CDC 的影响。

执行熔断条件量化:锁等待阈值、复制延迟阈值、影响行数偏差、错误率。触发即停,复盘后再续跑。

完成后校验结果与备份位点写入变更单;无闭环的数据变更视为事故隐患。

G04.02
SQL 审核与慢 SQL 闭环
核心洞察

SQL 必须过审核(索引、回表、临时表、大偏移);慢 SQL 要有发现→归因→修复→回归的闭环,而不是只调大超时。超时调大是推迟爆炸,不是治理。

从库「看起来快」不能代替主路径 explain;读写分离下的慢查询仍可能打穿主库或连接池。

反模式:N+1 用缓存掩盖;深分页 OFFSET 巨大;隐式转换导致索引失效;慢日志无人认领。

慢 SQL 治理看闭环率,不看发现数:发现一堆却无人修,等于没有治理。工单 SLA 与发布门禁挂钩更有效。

「加索引」也是数据变更:写入放大、磁盘、变更窗口都要评估;禁止把索引当免费午餐。

原理映射

审核关注:选择性、覆盖索引、分页策略、N+1、隐式转换、深分页、临时表与文件排序。慢日志与业务 apdex 联动;修复后用相同流量形状回归。

与高性能存储/SQL 篇章、M09 消除等待同构:慢 SQL 是等待的主要来源之一。

索引不是免费的:写入放大与空间成本要写入取舍;「再加一个索引」也要走变更与回滚(删索引)预案。

explain 结论要对照真实基数与绑定变量;开发环境的 explain 只能作参考。用生产只读或采样统计验证。

深分页与导出类 SQL 单独门禁:必须 keyset/seek 或异步导出,禁止巨大 OFFSET 上生产。

工程表达

上线门禁:新增 SQL 有 explain 结论;慢 SQL 工单有负责人与截止日期;回归报告附修复前后 RT/扫描行数对比。

  • 表达时能讲清「为什么走这条索引」。
  • 禁止以调大超时/调大连接池作为唯一手段。
  • 大促前导出 Top 慢 SQL 清单并销项。

关联:G04.01 DDL;G04.03 单机优化;G03 容量被慢 SQL 偷走。

Top 慢 SQL 周报:责任人、趋势、是否进下次发布。连续两周无进展升级。

修复回归用相同流量形状:仅用单条 SQL 基准不够,要看连接池与 RT 分位。

G04.03
扩展前先单机
核心洞察

分库分表、读写分离前先压榨单机:索引、SQL、缓存、批量、异步。过早拆分把复杂度前置,却不一定换来容量——拆分是架构税,要用证据证明值得交。

拿不出单机优化前后对比与瓶颈证据,不批准拆分。批准后的第一期目标是「可回滚的路由与对账」,不是「一次拆完美」。

反模式:为了微服务而拆库;未解决热点就按用户 ID 哈希;无对账上双写;读写分离当银弹忽视复制延迟语义。

拆分决策的证据链:单机优化前后容量曲线、瓶颈火焰图/等待分析、成本对比(研发复杂度 vs 机器)。缺一视为冲动拆分。

「可回滚的路由」是第一期交付物:流量与数据都能退回旧拓扑,否则拆分是单行道。

原理映射

与 M08.05「扩展前先单机」同构:先证明瓶颈在容量而非实现。拆分后的事务、对账、路由、热点、跨库查询成本要写进 ADR。

读写分离首先改变的是一致性语义,其次才是容量;产品契约(G05.02)必须先改。

分片键选择错误会制造新单点(热点分片);扩展方案必须含热点与扩容再平衡预案。

一致性语义变化先于拓扑变化:读写分离/分片会改变事务与可见性,产品契约与对账必须先就绪。

分片键与热点分析同单:选错分片键会把单机热点变成单分片热点,扩展税白交。

工程表达

扩展评审先出示:单机优化前后对比、瓶颈证据、一致性模型变更、对账与回滚路由方案、时间盒与退出条件。

  • 第一期交付:可回滚路由 + 对账任务 + 观察看板。
  • 禁止无对账的双写上线。
  • ADR 必填,回顾日写进日历。

关联:G04.01/02 单机手段;G06.03 Outbox;G05 缓存与一致窗口;M08.05。

ADR 模板强制字段:瓶颈证据、拒绝的替代方案、一致性影响、对账、回滚、时间盒、回看日。

第一期上线标准:路由开关 + 对账差异看板 + 回滚演练记录,三者齐全才允许扩大写入比例。

G04.04
影子表与双写观察期
核心洞察

大表重构默认影子表/双写观察期,观察指标达标才切读;禁止高峰直接 rename 大表。

原理映射

数据变更爆炸半径大且常不可逆;观察期用来证明正确性与性能。切读与切写可分步。

工程表达

门禁:双写校验报告、观察期时长、切读开关、回切方案。对照 G04.01 可回滚原则。

G04.05
只读副本延迟门禁
核心洞察

读写分离上线前必须定义可接受的副本延迟与读己之写策略;延迟超阈应切主读或降级,而不是默默脏读。

原理映射

最终一致不等于无限延迟。业务契约要写清延迟窗口与补偿。

工程表达

门禁:副本延迟指标与告警、读路径降级开关、验收用「写后读」用例。

验收:金丝雀/发布演练必须至少触发一次自动回滚或人工覆盖留痕;信号与业务成功数同向校验。

关联:错误预算看板、变更窗口、回滚后数据修复门禁;禁止只看 CPU 放量。

G04.06
数据修复双人审批
核心洞察

生产数据修复必须双人审批+可回放脚本,禁止控制台手改当常态。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

手改不可审计、不可回滚。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:工单、脚本仓库、执行窗口与回滚包。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G04.07
在线 DDL 工具白名单
核心洞察

大表变更只允许白名单工具/策略(gh-ost/pt-osc 等),禁止裸 ALTER。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

锁表是可预期事故。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:工具白名单、副本延迟观察、取消预案。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G04.08
备份恢复演练门禁
核心洞察

备份存在≠可恢复;恢复 RTO/RPO 必须演练出数。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

未演练的备份是安慰剂。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:季度恢复演练、耗时记录、失败即阻断高危变更。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。

五、G05 缓存一致与热点治理

本组管缓存加速如何不牺牲正确性与可用性:失败可降级、一致性窗口写进契约、热 key/大 key 专项、降级演练、热点预热护栏、击穿穿透演练清单、多级缓存失效广播、容量与淘汰评审。对齐 M07.02 / M08.08。

G05.01
缓存失败可降级
核心洞察

缓存穿透/击穿/雪崩与缓存集群故障时,必须有降级:回源限流、默认值、只读旧数据、熔断依赖,禁止无限回源打穿 DB。缓存挂了系统仍应「降级可用」,而不是「更不可用」。

缓存是加速器不是真相源;把缓存当 DB 用,故障模式会从「变慢」变成「写丢/读错」。

反模式:无互斥重建导致击穿;空值不缓存导致穿透;多级缓存失效顺序未定义层层放大;故障时关闭限流「先顶住」。

降级不是「返回空」这么简单:要定义用户可感(旧数据/默认值/只读/排队),并与产品共同签字。错误的降级比故障更伤信任。

互斥重建与单飞(singleflight)是击穿标配;没有互斥的 cache aside 在过期风暴下等于自攻 DB。

原理映射

失败模式要在设计期声明:一致性窗口、过期策略、互斥重建、布隆/空值缓存、回源配额。与 M07.02 缓存非源同构。

多级缓存定义失效顺序与最大回源 QPS;本地缓存要有上限与抖动过期,避免Herd。

与 G03 容量模型联动:回源配额必须小于 DB 可承受;演练「缓存全挂」是唯一验收。

回源配额是硬闸:按 key 与全局双限;超过则降级,不得「临时取消限流保业务」——那是把事故换成更大事故。

多级缓存的失效顺序写成状态机:本地 → 分布式 → DB;并行失效策略要防止惊群。

工程表达

故障演练必做「缓存全挂」:观察 DB QPS 与用户可感错误率,确认限流与降级开关有效。

  • Runbook:何时开降级、何时允许回源、何时止损回滚。
  • 穿透/击穿/雪崩各有专项用例进回归。
  • 降级开关按 G01.02 配置门禁管理。

关联:G05.02 窗口契约;G05.03 热点;G03.03 大促演练。

「缓存全挂」演练报告必含:DB QPS 峰值、错误率、降级开关生效时间、回滚决策点。

Runbook 与开关名、看板面板一一对应;禁止「开降级」却找不到开关。

G05.02
一致性窗口写进契约
核心洞察

缓存与 DB 的一致性不是「最终会一致」一句话,而要写成契约:窗口时长、读路径(主/从/缓存)、用户可感语义。窗口内允许什么、不允许什么,产品与研发必须同一张纸。

金融与库存等场景往往要求绕过缓存读主或同步失效;「缓存优化」若未改契约,就是静默降低正确性。

反模式:口头最终一致;延迟双删无窗口说明;读写分离延迟当缓存一致;变更缓存策略不走发布。

契约一页纸最小字段:窗口时长、读路径优先级、窗口内允许的用户可感、超时后的行为、关键写是否绕过缓存。

缓存策略变更=产品行为变更:即使「只改 TTL」,也可能让用户更频繁看到旧值或击穿更重。

原理映射

Cache-Aside / Write-Through / 延迟双删各有代价:写失败、删失败、并发读写窗口不同。先定一致模型,再选组件(M07.02 / M07.01)。

读路径要可观测:用户这次读的是主、从还是缓存;排障先问路径,再问「为什么不一致」。

契约变更等于产品行为变更,须灰度与回滚;与 G01 发布三要素同级。

延迟双删/订阅失效各有失败模式:删失败、消息丢失、并发读写。失败后的最大脏读窗口必须 ≤ 契约窗口,否则契约作废。

排障时「路径」是第一问:主库直读、从库、缓存、本地缓存——路径不清则讨论无意义。

工程表达

接口文档与 SLA 写明一致性窗口与读路径;用例验收含窗口内/窗外的期望行为。

  • 排障话术:先确认读路径与变更窗口。
  • 变更缓存策略视为发布,走灰度与回滚。
  • 对账/校验任务覆盖关键字段漂移。

关联:G05.01 失败降级;G04.03 读写分离语义;G06.03 事件驱动一致。

接口文档与错误码旁标注一致性语义;验收用例覆盖窗口内/外。

策略灰度:按租户或流量百分比切换 TTL/读写策略,观察投诉与对账差异再全量。

G05.03
热 key / 大 key 专项
核心洞察

热 key 与大 key 必须专项治理:拆分、本地缓存、复制、压缩、拆 value。热点会把集群变成单点——大促前不知道热点在哪,等于不知道单点在哪。

大 key 拖慢迁移、阻塞复制、放大网络;热 key 打满单分片 CPU。两者都要用证据发现,而不是上线后猜。

反模式:全站一个「热门商品」键;巨型 Hash/List 不拆;只加机器不打散;热点清单无主人。

热点清单是活文档:开售 SKU、活动入口、配置中心热 key、登录态大 key,都要在大促前冻结版本并指定负责人。

大 key 的危害常在运维动作:迁移、扩容、备份时阻塞;日常 QPS 不高不代表可以忽视。

原理映射

发现靠:代理层热点统计、大 key 扫描、慢查询、分片 CPU。治理按「打散」:哈希标签、分片、多副本只读、本地缓存短 TTL。与高并发热点 M08.08 对齐。

打散会改变一致与失效成本,须同步更新 G05.02 契约与回源配额。

容量模型(G03)要把「单分片峰值」写进去,否则水平扩展无效。

打散手段分级:本地缓存 → 只读副本 → 拆 key → 业务改模型。越靠后成本越高,越要 ADR。

热点与限流联动:打散不及的,用用户级/商品级限流保护,避免打穿。

工程表达

大促前出热点清单与预案;上线后持续扫描,超阈进工单。验收:热点 key 的单分片 CPU/QPS 不再独占集群。

  • 清单含:key 模式、QPS、分片、负责人、预案(拆分/本地缓存/限流)。
  • 大 key 治理含拆分与压缩目标体积。
  • 演练热点打满时的降级路径。

关联:G05.01 击穿;G03.03 大促;M08.08 热点方法论。

扫描任务日更:超阈自动建单;大促前 T-7/T-3/T-1 三次销项。

验收看分片 CPU 与热 key QPS 占比,而不是「我们已经拆了」的口头。

G05.04
缓存降级演练
核心洞察

缓存失败降级路径必须演练:降级后 DB 配额、用户可感、自动恢复条件写进 Runbook。

原理映射

未演练的降级在事故中不可用。降级不是关缓存,而是受控的配额与体验。

工程表达

门禁:最近演练记录、DB 配额、降级开关、恢复条件。关联 G05.01。

G05.05
热点 key 预热与护栏
核心洞察

已知热点(大促 SKU、登录配置)必须有预热清单与单 key 护栏;靠「过期后自然重建」等于赌击穿。

原理映射

热点是容量与一致性的交叉点;预热失败要有显式降级。

工程表达

门禁:热点清单、预热脚本可回放、单 key QPS/带宽告警、击穿开关演练。

验收:金丝雀/发布演练必须至少触发一次自动回滚或人工覆盖留痕;信号与业务成功数同向校验。

关联:错误预算看板、变更窗口、回滚后数据修复门禁;禁止只看 CPU 放量。

G05.06
击穿/穿透演练清单
核心洞察

缓存击穿穿透雪崩必须有演练与开关,而不是文档里的理论。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

过期瞬间与恶意 key 是常态风险。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:演练记录、单飞锁/空值缓存/逻辑过期验收。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G05.07
多级缓存失效广播
核心洞察

本地+分布式多级缓存必须有失效广播与版本策略。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

节点间旧值会造成诡异脏读。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:广播通道、版本字段、失效失败重试。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G05.08
缓存容量与淘汰评审
核心洞察

缓存容量、淘汰策略、大 key 限制必须进容量评审。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

内存打满比打满 CPU 更突然。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:maxmemory 策略、大 key 扫描、淘汰命中监控。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。

六、G06 调用预算与服务治理

本组管同步链路与双写契约:超时预算入契约与强制入库、治理参数可回滚、双写走 Outbox/CDC、重试预算显式化、熔断半开观察窗、幂等键规范、对账任务 SLA。超时可加总、双走并对账;对齐 M11.02 / M11.03 / M07.01。

G06.01
同步链路预算入契约
核心洞察

同步调用链的超时必须可加总:各跳超时之和小于用户超时,并留重试与排队余量。无预算的超时 = 随机故障。超时是分布式系统的第一公民,不是调优参数。

重试无幂等会放大写;熔断阈值要基于错误类型而非笼统 5xx;取消(cancellation)要能向下传递,避免下游空转。

反模式:每跳都 3s 叠出 30s;入口超时短于下游;无限重试;超时后仍继续写。

预算表是抗雪崩的宪法:没有加总通过的同步链路,不得以「先上线再调」为借口进入生产。

取消传递缺失时,下游会在上游已超时后继续烧资源——这是隐式容量泄漏。

原理映射

超时、重试、幂等、熔断一起设计。与 M11.02 超时预算、M08.09 负载分型与取消同构。

预算表是契约:每跳 RT P99、超时、重试次数、幂等键、失败语义。评审时现场加总,加总不过关不得上同步链路。

某一跳变慢时,整链失败模式应「快速失败/降级」,而非层层排队雪崩——用压测验证,而非口头保证。

重试预算单独列:次数 × 超时要计入总预算;抖动(jitter)与幂等是重试的前置条件。

熔断与超时分工:超时管单次,熔断管持续错误;慢调用熔断阈值与错误熔断阈值分开配。

工程表达

链路预算表进架构文档与接口契约;压测验证单跳变慢时的整链行为。

  • 写路径重试必须幂等键或去重表。
  • 取消向下传递进验收用例。
  • 预算变更按发布门禁,观察错误率与尾延迟。

关联:G06.02 治理参数;G03.02 背压;G06.03 能异步则勿同步硬扛。

评审现场用表格加总;加总超过用户超时则砍跳、改异步或降级,而不是「每跳再减 50ms」的假动作。

故障注入:单跳延迟到接近超时,观察整链是否快速失败且无重试风暴。

G06.02
治理参数可回滚
核心洞察

限流/熔断/降级参数变更按发布管控,必须可回滚。错误的限流阈值可以制造「自攻」——把正常流量挡在门外。治理参数与业务开关一样危险。

集群限流与单机限流语义要分清,避免「每实例都以为自己是全集群」导致实际阈值放大 N 倍。

反模式:高峰临时拍脑袋调大;无观察指标的参数变更;熔断后无半开与恢复条件;降级开关无主。

治理参数的误杀与漏杀都消耗信任:误杀制造自攻,漏杀制造雪崩。所以变更要有观察指标双看:通过率与依赖健康。

单机限流 × 副本数 ≠ 集群限流;语义写错会在扩容时自动「放松」或「收紧」。

原理映射

治理参数进配置门禁(G01.02);变更前后对比错误率、通过率、拒绝率、依赖健康。与错误预算联动:误杀过高同样消耗预算。

限流算法(令牌桶/漏桶/滑动窗口)与维度(用户/IP/接口/租户)要写清;维度选错会误伤或放行。

熔断要区分慢调用与错误调用;半开探测流量要受限,避免恢复时二次打穿。

半开探测要限流:恢复期用小流量探测,成功再抬门;一次放全是二次事故。

参数变更与错误预算联动:误杀率超阈同样触发回滚,不只看 5xx。

工程表达

参数变更单含:旧值、新值、观察指标、回滚条件、生效范围(单机/集群)。禁止高峰无单临时调参。

  • 演练:错误参数一键退回时间计入 RTO。
  • 大促参数变更提前演练并冻结临时修改。
  • 看板并排展示:通过率 vs 拒绝率 vs 依赖错误率。

关联:G01.02 配置发布;G03.03 大促;G06.01 超时与熔断。

变更单并排旧值/新值/预期曲线;观察窗口结束前禁止连续调参。

大促参数包提前合并为「预案包」版本化,当日只允许切换包,不允许细调单个魔法数。

G06.03
双写用 Outbox/CDC
核心洞察

消息与 DB 双写禁止「先发消息再写库」无补偿;用 Outbox / CDC / 事务消息保证至少一次投递后的可对账。双写是分布式一致的经典陷阱,必须有模式而不是有感觉。

至少一次投递必须配幂等消费;没有对账的「最终一致」是信仰,不是工程。

反模式:本地事务外发消息;消费者无幂等;CDC 乱序无版本;表结构变更打断解析无兼容策略。

Outbox 的价值是「与业务同事务的意图记录」;没有轮询/中继把 outbox 发出去,表只是墓地。

对账不是可选报表:没有差异检测与修复工具,最终一致只是口号。

原理映射

最终一致三件套:幂等消费、可重试、对账(M11.03 / M07.01)。Outbox 与业务同事务;CDC 注意顺序、表结构变更兼容;乱序用版本或聚合键。

消息只唤醒,状态以库为准;对账任务可检测漏跑/错账并可审计。与 G04.01 数据变更、G05.02 一致窗口互补。

失败补偿路径要设计完整:重试耗尽进死信、人工修复工具、回放开关。

幂等键设计:业务幂等(订单号)优于技术幂等(消息 ID);两者可并存,但语义要写清。

CDC 与 schema 演进:兼容策略(向前/向后)进变更单;破坏性变更先停消费或双格式。

工程表达

双写方案评审必问:失败怎么补偿、重复怎么消化、对账谁跑、差异怎么修。说不清则退回同步或单写。

  • 对账任务进值班看板,差异超阈告警可行动。
  • 结构变更与 CDC 解析兼容性同单评审。
  • 压测含重复投递与乱序用例。

关联:M11.03 对账兜底;G04.03 扩展双写;G07 AI 工具写操作同样要幂等分级。

上线门禁:重复投递测试、乱序测试、对账任务启用、死信告警可行动。

差异修复工具最小可用:按主键重放、人工标记、审计日志;禁止只靠「再消费一遍」蒙混。

G06.04
重试预算显式化
核心洞察

超时×重试×扇出必须可算并写入契约;默认禁止无限重试与无抖动退避。

原理映射

重试放大是级联故障主因之一。预算超限应失败或降级,而不是继续打。

工程表达

门禁:放大倍数计算表、最大重试、抖动、幂等要求。关联 G06.01 / K06。

G06.05
熔断半开观察窗
核心洞察

熔断打开后半开必须有观察窗与成功阈值;无窗口的「立即全开」会二次打穿。

原理映射

熔断是保护下游也是保护自身;半开是受控实验。

工程表达

门禁:半开比例、成功阈值、失败再开、参数可回滚;变更单写清观察窗。

验收:金丝雀/发布演练必须至少触发一次自动回滚或人工覆盖留痕;信号与业务成功数同向校验。

关联:错误预算看板、变更窗口、回滚后数据修复门禁;禁止只看 CPU 放量。

G06.06
超时预算表强制入库
核心洞察

同步链路超时必须可加总并入库为契约表,禁止拍脑袋。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

超时倒挂是雪崩温床。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:预算表评审、网关/服务/下游对齐检查。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G06.07
幂等键规范门禁
核心洞察

写接口幂等键格式、存储与过期策略必须平台规范。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

无幂等的重试是重复扣款。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:规范文档、拦截器默认、抽检关键写路径。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G06.08
对账任务 SLA 门禁
核心洞察

异步最终一致链路必须有对账任务与 SLA(窗口、告警、补偿)。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

无对账的 Outbox 仍是赌运气。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:对账看板、超窗告警、红线冻结开关。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。

七、G07 AI 制品与评测门禁

本组管 AI 变更的发布纪律:制品全版本化、无黄金集不上线、工具副作用分级表、Prompt 回归绑定发布、评测集漂移检测、Token/算力成本配额、模型降级开关演练。AI 变更面大于普通服务;对齐 M14.01。

G07.01
制品全版本化
核心洞察

Prompt、模型 ID、检索配置、工具实现、编排图全部版本化,可对齐回放与一键回退;版本号进日志与审计。AI 变更面远大于普通服务,版本化是唯一可回放手段。

温度、切片、重排、工具副作用、路由策略任一变化都视为发布;「再调一下 Prompt」与改代码同级。

反模式:线上手改 Prompt 无版本;模型静默切换;无法从一条回答追溯制品组合;回滚靠「凭记忆再改回去」。

制品组合是 AI 系统的「可执行二进制」:缺版本号的 Prompt 等于未构建产物却上了生产。

路由与实验桶必须版本化,否则回放时无法解释「为何同一问题两种答案」。

原理映射

与 M14.01 AI 变更必回归同构:制品不可追溯则回归无意义。多模型路由、AB 实验桶、检索索引版本一并纳入制品清单。

回放要求:同一输入 + 同一制品组合 → 可对齐的输出(允许采样噪声时记录 seed/温度策略)。

与 G01 发布三要素结合:AI 放量同样要有灰度、卡点(质量/安全/成本)、回滚到上一制品集。

回放管道:输入、制品组合、采样策略、工具响应存根——四者缺一则「对齐回放」不成立。

审计字段进每条回答日志:modelId、promptHash、indexVer、toolVer、routeVer。

工程表达

发布清单含:模型版本、提示词哈希、索引版本、工具契约版本、路由策略版本。回滚能指到具体制品组合。

  • 审计:任一线上回答能追溯到制品组合。
  • 禁止生产控制台无单改 Prompt。
  • 制品仓权限与变更审计同代码仓标准。

关联:G07.02 黄金集;G07.03 工具分级;G01 灰度回滚。

回滚演练:切换到上一制品组合并验证黄金集与线上抽样,不只是「改回旧 Prompt 文本」。

权限:生产制品写入走 PR/变更单;控制台热修默认关闭。

G07.02
无黄金集不上线
核心洞察

任何改动必须过固定黄金集/测试集回归;无测试集不上线。离线指标 + 小流量线上数据双确认后再全量。个例体验不是评测,是采样偏差。

黄金集要冻结版本,防止「改题迎合模型」;集合覆盖正确性、拒答、安全、工具调用、延迟与成本。

反模式:只看 demo 好不好;无安全用例;线上全量后再补评测;用变化的测试集宣称提升。

黄金集冻结是防作弊机制:集合可演进,但演进有版本与评审,不能为了让报告好看而改题。

双确认针对分布漂移:线下好、线上差常见于检索语料与真实查询不一致。

原理映射

评测是门禁不是演示:通过率阈值、回归报告、失败用例归因(模型/检索/工具/提示词)要可拆。与 M14.01、M01.06 定性定量同构:先定量门槛,再谈主观体验。

线下指标与线上抽样可能背离;双确认是为了防分布漂移。成本与延迟纳入同一报告,避免「更聪明但不可用」。

集合维护有流程:新增用例要评审,删除用例要说明,版本号随制品走。

评测维度拆分报告:正确性/安全拒答/工具成功率/P95 延迟/单均成本。合成一个「总分」会掩盖安全回归。

失败归因标签强制:模型、检索、提示词、工具、数据、评测本身。无归因则禁止「再训一下」。

工程表达

门禁:黄金集通过率阈值、回归报告链接、灰度观察看板(质量/安全/成本)。未达标不得扩量。

  • 表达:先报评测数字,再报主观体验。
  • 失败用例按归因分派修复,禁止只调温度蒙混。
  • 集合版本与 G07.01 制品版本对齐归档。

关联:G07.01 版本化;G07.03 工具安全用例;G01 卡点扩量。

扩量卡点:黄金集阈值 + 线上抽样窗口 + 安全用例零容忍项。安全项失败不得用「平均分还行」放行。

集合变更单:新增/删除用例理由、版本号、是否影响历史基线对比。

G07.03
工具副作用分级
核心洞察

Agent 工具按副作用分级:只读 / 可重试写 / 不可逆写;不可逆写必须人工确认或强幂等键。工具是带权限的远程代码,不是聊天点缀。

提示词注入与越狱防护必须与工具暴露面一起评审;最小权限默认,能只读绝不给写。

反模式:一把工具万能账号;不可逆写无确认;工具超时无上限;无审计日志;用自然语言「保证别乱写」代替权限。

工具分级表是安全边界:级别决定默认是否自动执行、是否要确认、是否要幂等键、审计级别。

「尽量帮用户完成」与失败安全冲突时,失败安全优先——不确定就拒绝,并给出人工路径。

原理映射

工具契约含:权限、超时、幂等、审计、输入校验、输出大小限制。与 G06.01 超时预算、G06.03 幂等写、G08.01 威胁建模同构。

副作用分级决定默认策略:只读可自动;可重试写要幂等键;不可逆写要人工或双人、或强确认码。

越权与注入测试进黄金集(G07.02);失败安全:不确定时拒绝执行,而不是「尽量帮用户办到」。

输入校验与输出限额防 prompt 注入与数据外泄;工具返回不得直接当高权限指令执行。

不可逆写的补偿设计与普通写路径同等重要:冲正、工单、人工审核队列。

工程表达

上线前列出工具清单与级别;不可逆写默认关闭或双人复核。表达时能讲清「最坏能写坏什么、怎么回滚/补偿」。

  • 演练:恶意/越权调用是否被挡。
  • 工具权限变更走发布门禁与审计。
  • 生产审计能还原:谁、何时、何工具、何参数、何结果。

关联:G07.01/02;G08 安全;G06 写路径幂等。

上线包含:工具清单、级别、权限集、超时、幂等、审计样例、越权测试报告。

演练注入:诱导模型调用高危工具;期望被策略拦截并留审计。

G07.04
工具副作用分级表
核心洞察

Agent 工具按只读/写/资金或不可逆分级;高级别默认二次确认或人工闸。

原理映射

工具调用的爆炸半径可大于模型本身。分级是门禁,不是文档装饰。

工程表达

门禁:工具分级表、确认策略、审计日志、一键禁用。关联 G07。

G07.05
Prompt 回归绑定发布
核心洞察

Prompt/工具/索引变更必须跑同一黄金集回归并贴结果链接;无回归的「文案小改」按生产事故定级。

原理映射

LLM 行为变更不可靠肉眼;回归是唯一客观门禁。

工程表达

门禁:黄金集 diff 报告、阈值阈值、失败阻断;与 G07.02 互锁。

验收:金丝雀/发布演练必须至少触发一次自动回滚或人工覆盖留痕;信号与业务成功数同向校验。

关联:错误预算看板、变更窗口、回滚后数据修复门禁;禁止只看 CPU 放量。

G07.06
评测集漂移检测
核心洞察

黄金集必须监测分布漂移与刷分;分数 alone 不能放行。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

过拟合评测=线上静默塌方。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:集外抽样、影子对比、漂移告警。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G07.07
Token/算力成本配额
核心洞察

模型调用成本必须进配额与门禁,超限降级而非账单惊吓。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

AI 成本是容量问题。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:配额表、超限策略、FinOps 看板。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G07.08
模型降级开关演练
核心洞察

模型超时/质量降级开关必须演练到用户可感路径。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

开关不演=故障时找不到。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:演练记录、文案/兜底、回滚点。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G07.09
AI 辅助研发的工程治理红线
核心洞察

编码助手、AI 代码评审、AI 单测生成进入流水线后,唯一不变的红线是:AI 产物与人工产物走同一道门禁。降低标准的那一天,就是把幻觉与供应链风险写进主干的起点。

治理要量化到可追问:采纳率、返工次数、评审命中率、单测覆盖率增量——没有度量,AI 提效就只是主观感受与采购理由。生产默认:AI 工具链的准入、上下文边界、产物审计写进研发规范,而不是靠个人习惯临时决定。

原理映射

与 M06 的「可验证才可信任」同构:AI 输出不可信不是缺陷,是必须被验证的输入。因此门禁不能放松,只能前移——预提交提示、PR 检查、CI 静态分析与测试必须能拦住 AI 引入的缺陷。

与 G07.01/G07.04 互锁:AI 生成的代码同样要过制品版本化与副作用分级;外部模型即第三方处理者,送出去的上下文就是数据出境面,密钥、生产数据、客户隐私一律不进上下文窗口。

失败模式:AI 幻觉 API 编译不过(可拦);AI 生成的依赖引入未审计包(供应链);AI 评审刷屏导致告警疲劳(人不再看);上下文误送敏感代码(不可逆)。前两者靠门禁,后两者靠边界与限流。

工程表达

门禁:准入清单、上下文边界、产物标记与审计、量化指标。

  • 准入:AI 工具须过数据合规与依赖审计;代码助手不得直连生产库与外网模型发送完整文件。
  • 边界:上下文最小化(仅相关片段)、脱敏规则前置、密钥与隐私字段硬阻断。
  • 产物:AI 生成片段在提交信息与 PR 中可追溯,评审对「AI 生成未验证」一票否决。
  • 量化:采纳率、AI 代码缺陷密度、PR 周期、单测覆盖率增量;按季度回看,收益不达标即下线工具。
  • 验收:抽检最近变更是否带齐工具标记、脱敏证据与回归结论;关联 K 组事故卡做反例教学。

八、G08 安全运营与供应链

本组管安全与供应链底线:威胁建模先行、密钥证书可轮换与双写窗口、最小权限审查、依赖镜像可追溯、豁免单到期自动阻断、CVE 分级响应时限、生产访问审计抽检。对齐 M10 与安全 Checkpoint。

G08.01
威胁建模先行
核心洞察

安全需求在设计期做威胁建模(STRIDE 等),而不是上线后补扫描。假设组件会被攻破,问「破了是否仍可控」。安全是约束,不是功能清单。

高风险项未关闭或未显式接受残余风险,不得上线。扫描只能发现已知类问题,替代不了边界与信任假设的审查。

反模式:上线后「补个 WAF」;威胁模型一页纸缺失;残余风险口头接受无签字;新依赖不重做建模。

威胁模型一页纸的读者是评审委员与未来的自己:写不清资产与信任边界,等于未建模。

残余风险接受必须具名与到期日;无限期「接受」等于放弃管理。

原理映射

与 M10 纵深防御同构:最小权限、失败安全、零信任。数据流图上标信任边界与敏感数据;认证授权、输入校验、密钥、供应链分条缓解。

STRIDE(或同类方法)按资产枚举威胁与缓解;缓解要可验证(测试/门禁/监控),不可验证的缓解等于不存在。

与 G07.03 工具暴露面、G08.02/03 密钥与供应链形成安全门禁闭环。

缓解可验证:测试用例、门禁规则、监控告警、权限配置。不可验证的「我们会注意」删除。

新依赖、新工具暴露面、新数据出境都触发增量建模,而不是一年一次。

工程表达

方案评审附威胁模型一页纸:资产、威胁、缓解、残余风险、验收方式。高风险项未关闭不得上线。

  • 复盘安全事件时回指威胁模型缺口并更新模板。
  • 重大架构变更强制重做建模。
  • 与安全手册 Checkpoint 页对照检查。

关联:nav-server-security-checkpoint;G08.02/03;M10。

高风险项关闭证据贴进变更单;未关闭则阻塞发布或降级功能开关。

安全事件复盘输出:模型缺口、新增威胁、模板更新——三件都要有。

G08.02
密钥证书可轮换
核心洞察

密钥与证书必须可轮换:双密钥并存窗口、自动续期、吊销流程。写死在镜像里的密钥是定时炸弹——不能轮换的密钥,等于不能响应泄漏。

共享账号长期静态口令、证书过期无告警、吊销名单拦不住流量,都是可预期的生产事故。

反模式:密钥进仓库;证书人工年审遗漏;轮换无双密钥窗口导致全球中断;吊销演练从未做过。

轮换能力是事件响应的一部分:泄漏当天才发现不能轮换,事件必然拖成灾难。

证书过期是可预防事故;过期告警不可行动等于没有告警。

原理映射

密钥分级:应用密钥、数据密钥、根密钥;HSM/KMS 托管。证书过期监控与告警可行动(G02.03);吊销名单要真能拦住流量。

双密钥并存窗口保证轮换不中断;自动续期失败要升级为事件。与 G01.02 配置门禁一致:密钥下发也是配置变更。

最小权限与短生命周期:能短则短,能作用域收窄则收窄。

双密钥窗口、自动续期、吊销生效链路要分别演练;只演续期不演吊销,泄漏时仍会失败。

密钥分级决定保护强度与访问路径;根密钥触达必须极少且审计。

工程表达

轮换演练每年至少一次;变更单含吊销与回滚。禁止共享账号长期静态口令。验收:泄漏演练中能在约定 RTO 内完成轮换。

  • 证书到期告警绑定 Runbook 与责任人。
  • 密钥不进镜像/仓库;注入方式可审计。
  • 吊销演练结果贴回安全门禁。

关联:G08.01 威胁建模;G08.03 供应链;G01.02 配置。

年演内容:轮换、吊销、续期失败升级、RTO 实测。结果进入安全门禁证据库。

静态口令与长期 token 清零计划有截止日期;共享账号拆人。

G08.03
依赖与镜像可追溯
核心洞察

依赖与镜像必须可追溯:SCA 扫描、SBOM、签名/哈希校验、基础镜像基线。供应链失败按生产事故定级。「不知道跑了什么」比「有个 CVE」更危险。

构建可复现、制品签名、部署校验;第三方调用校验证书并设超时。高危 CVE 有豁免流程与截止日,禁止无限期挂着。

反模式:latest 标签上生产;无私有基线乱拉公网镜像;SBOM 不归档;豁免无到期日。

可追溯的目标是:任意生产实例能回答「镜像 digest、构建号、依赖树、扫描时间、签名者」。

latest 与不可变标签的对立:生产只允许不可变引用;可变标签是供应链洞。

原理映射

与安全手册供应链章节对齐;与 G01.03 升级门禁互补——升级是行为风险,溯源是供应链风险。

SLSA Build 轨道(官方 slsa.dev):L1 要求构建 provenance 存在;L2 要求托管构建平台生成并签名 provenance;L3 要求硬化构建平台(构建互不影响、签名密钥对用户步骤不可见)。SBOM/签名回答「产物内容」,SLSA 回答「构建过程是否可验证」;关键服务门禁可要求 Build L2+。

部署时校验签名/哈希,防止制品库被篡改后静默上线。基础镜像基线由平台维护,业务少自造。

SCA 结果要分级处置:阻断 / 限时豁免 / 接受并监控;与错误预算类似,豁免是有代价的配额。

部署校验签名失败必须阻断,而不是告警后继续。阻断策略与豁免流程成对出现。

CVE 豁免是有息债务:截止日、补偿控制、负责人;到期自动转阻断。

工程表达

门禁:高危 CVE 阻断、SBOM 归档、镜像来源白名单、签名校验通过。表达时能指到「这个包从哪来、谁签的名、何时扫的」。

  • 抽查:任一生产镜像能还原构建与依赖树。
  • 豁免单含截止日与负责人,过期自动变阻断。
  • 第三方 SDK 升级走 G01.03。

关联:G01.03;G08.01/02;安全 Checkpoint。

抽查脚本化:随机生产镜像 → 还原 SBOM → 核对签名 → 核对扫描报告。

第三方 SDK 与基础镜像升级日历公开;与 G01.03 升级门禁合并执行。

G08.04
豁免单到期自动阻断
核心洞察

CVE/基线豁免必须有截止日与负责人;过期自动变阻断,禁止永久豁免。

原理映射

豁免是风险接受,不是风险消失。无到期日的豁免会堆积成供应链黑洞。

工程表达

门禁:豁免单模板、到期扫描、负责人、阻断策略。关联 G08.03。

G08.05
密钥轮换双写窗口
核心洞察

密钥/证书轮换必须双密钥窗口:新旧并行校验→切主→吊销旧钥;单钥硬切等于计划内中断。

原理映射

轮换是变更,不是运维小动作;窗口长度与回滚点要写进 Runbook。

工程表达

门禁:双钥窗口时长、吊销检查清单、演练记录;告警绑轮换 Runbook。

验收:金丝雀/发布演练必须至少触发一次自动回滚或人工覆盖留痕;信号与业务成功数同向校验。

关联:错误预算看板、变更窗口、回滚后数据修复门禁;禁止只看 CPU 放量。

G08.06
密钥最小权限审查
核心洞察

密钥与令牌权限必须最小集,定期审查过权。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

过权密钥泄漏爆炸半径更大。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:权限矩阵、季度审查、吊销演练。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G08.07
CVE 分级响应时限
核心洞察

依赖 CVE 必须按严重级别绑定修复时限与豁免到期。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

无时限的漏洞单等于永久带病。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:SLA 表、自动催办、到期阻断。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。
G08.08
生产访问审计抽检
核心洞察

生产人工访问必须审计并可抽检,禁止共享超级账号常态化。

生产默认:写进变更模板与脚手架,而不是靠个人经验临时想起来。

原理映射

无审计的生产访问不可追责。

与同组既有门禁互锁:缺一则「看起来有流程、出事时用不上」。

工程表达

门禁:堡垒机、会话录制、抽检报告。

  • 评审话术:缺证据/缺演练/缺回滚点即阻断。
  • 验收:抽检最近一次变更是否带齐字段与指标。
  • 关联:对应 K 组事故卡做反例教学。