发布与回滚:双跑加快照
新逻辑上线先双跑对比:新旧结果并行产出,生成差异清单确认差异来源与占比,确认后才切换。切换前要备好回滚脚本与上一版本的分区快照,异常时按分区回退。没有快照和脚本的所谓回滚,实际只能手工重算,耗时且容易再出错。
基本信息
| 上线方式 | 双跑对比后切换 |
|---|---|
| 比对产物 | 差异清单,含差异占比 |
| 回滚手段 | 回滚脚本加分区快照 |
| 快照保留 | 至少覆盖一个完整业务周期 |
| 切换前置 | 差异全部可解释 |
典型使用场景
- 口径类改动:新旧逻辑双跑一天或多天,逐项核对差异
- 切换时机:选择业务低峰期,同时准备重跑与回滚两条路径
- 差异评估:千分之几的边界差异与全量差异,处置方式完全不同
- 回滚演练:上线前实际执行一次回滚,确认脚本与快照都可用
- 上线后观察:对比关键指标是否回到预期区间,而不是只看任务是否成功
双跑比对
双跑比对
-- 找出新旧结果不一致的键与差额
SELECT n.store_id,
n.pay_amt AS new_amt,
o.pay_amt AS old_amt,
n.pay_amt - o.pay_amt AS diff
FROM dws_trade_store_day_new n
JOIN dws_trade_store_day o
ON n.store_id = o.store_id AND n.dt = o.dt
WHERE n.dt = '2026-10-12'
AND n.pay_amt <> o.pay_amt;
-- 再算差异键数占全量键数的比例,用于判断差异是否可接受上线阶段与动作
| 阶段 | 动作 | 通过标准 |
|---|---|---|
| 双跑 | 新旧并行产出 | 差异清单可逐项解释 |
| 比对 | 按键与金额核对 | 差异占比在阈值内 |
| 切换 | 低峰期替换生产脚本 | 关键指标落回预期区间 |
| 回滚 | 按分区回退快照 | 回退后数字与上线前一致 |
差异清单要按占比评估:千分之几的边界差异通常可接受,登记为已知项即可;出现全量差异说明理解或实现有误,必须停下来定位。
新逻辑直接替换生产脚本且不留分区快照时,出问题只能手工重算,而重算耗时常常超过业务能接受的停摆窗口。