ADR-0004:保守灰度节奏 + 三防线本地回滚 + 人工指标回滚¶
日期:2026-07-20 状态:已接受
灰度¶
客户端侧分桶:hash(machine_id + 热修ID) % 100 < percent。节奏(保守,P0 标准周期 = 确认后次日全量):
| 档位 | 范围 | 观察窗口 |
|---|---|---|
| canary | 白名单内部设备 | 半天 |
| 灰度 | 10% | 过夜 |
| 全量 | 100% | 持续监控 |
canary 不可跳过(CrowdStrike 教训)。percent 调整 = 人工改清单 + Jenkins 流水线发布,留审计记录。第一版不做自动放量、不做管理后台。
回滚¶
故障模式分派:热修 exe 起不来 → 只有本地机制能救(客户端已失联网自愈能力);程序活着但指标差 → 服务端两层。
本地三防线:
1. 预提交自检:旧 exe 以子进程拉起新 exe --selftest,不通过不提交切换;
2. 启动标记:新 exe main() 头部写标记、健康检查通过后清除,连续 2 次未清除自动换回 safe exe 并上报;
3. 回退执行者(Windows 独立升级 exe 体系 / macOS 标记触发的自我替换逻辑)永不走热修通道更新。
服务端两层(人工):percent 归零截断扩散;发布"内容为旧版、清单版本号前进"的强制回滚(兼容防降级校验)。
指标回滚第一版走人工:ELK 看板按热修版本维度对比崩溃率/下载成功率,值班负责人或项目 DRI 判断,Jenkins 一键执行。自动阈值回滚留后续演进(业界无公开成熟规范)。