窗口对账(思路示意)
窗口对账(思路示意)
# 1) 按天窗口从主库与派生库各取统计
def daily_stats(day):
return db.orders.aggregate([
{ "$match": { "updatedAt": {"$gte": day_start(day), "$lt": day_end(day)} } },
{ "$group": { "_id": None, "cnt": {"$sum": 1}, "amount": {"$sum": "$amount"} } }
])
# 2) 差异窗口内抽样明细逐条比对,锁定漂移记录
# 3) 修复:从变更日志重放该窗口,或按主键重新同步;动作必须幂等
| 对账频率 | 按业务敏感度:交易与账单类高频(小时级),展示类可日级 |
|---|---|
| 修复策略 | 小范围重放变更;大范围按主键重建;修复过程限速并记录审计 |
| 防再犯 | 把导致漂移的失败场景(超时、重试、并发写)补进同步链路的处理逻辑 |
对账的关注点不是"是否有差异",而是差异可解释、可修复、有上限:给差异率设定阈值并告警,超过阈值暂停切流类的自动操作。