概述
可重放能力正是让 CQRS 读模型可弃可建的关键。记录检查点、幂等地写投影,并重建到全新存储,使缺陷无需英雄式恢复即可修正。
关键步骤
- 记录投影版本与最近处理的事件位置。
- 幂等处理事件,使重放是覆盖而非累加。
- 支持重建到新读存储而不影响线上。
- 重建结果符合预期总量后再原子切换。
验证
- 从零重放能复现当前读模型。
- 同一事件处理两次不改变状态。
- 重建存储可与预期总量比对。
- 校验通过后才切换服务。
注意事项
- 只有保留事件时才能重放;激进压缩会丧失重建能力。
- 重建是离线工作,需要独立容量与校验后才能承接流量。
适用范围
本条目围绕「通过重放事件重建读模型」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。
建议在正式环境落地前先在预发或隔离环境演练一遍,把关键观测指标与负责人一并记录,确保出现异常时能快速定位并恢复。
SELECT id, type, payload
FROM events
WHERE id > $1
ORDER BY id
LIMIT 1000;