先定义指标,再放流量
只有知道“健康”是什么样子,金丝雀才有意义。先记录稳定版本的基线,再定义门禁:错误率、p95/p99 延迟、饱和度和该变更要影响的业务指标。
canary:
steps:
- setWeight: 5
- pause: { duration: 10m }
- setWeight: 25
- pause: { duration: 20m }
- setWeight: 50
- pause: { duration: 20m }
步骤
- 把 1–5% 流量路由到新版本。
- 在同一时间窗口比较金丝雀与稳定版本。
- 只有所有门禁通过才扩大流量。
- 出现硬失败立即回滚;结果不明确时先停止扩量并调查。
- 最终门禁通过后推到 100%,保留旧版本直到回滚窗口结束。
验证
- 金丝雀与稳定版本在相同仪表盘上比较。
- 错误率与延迟分位数在发布预算内。
- 特性指标向预期方向变化。
- 发布前已测试回滚路径。
- 旧版本在回滚窗口结束前保持可用。
决策点
高风险变更从 1–5% 开始并延长观察窗口;首轮门禁通过且有足够样本后再增加。硬回滚信号应是相对于 SLO 的有统计意义的阈值,单个日志错误通常是噪声,持续违约不是。
常见陷阱
流量太少的金丝雀比较噪声大;所有请求来自同一区域或客户端会使样本有偏;只看“没有告警”而不对照基线会漏掉渐进式退化。门禁应在发布前定义,不能中途移动。