← 中文资源

简体中文版本

通过重放事件重建读模型

维护投影版本,把事件消费进读模型,并支持从零或从检查点重放,以便修复缺陷后重建。

阅读英文原文

概述

可重放能力正是让 CQRS 读模型可弃可建的关键。记录检查点、幂等地写投影,并重建到全新存储,使缺陷无需英雄式恢复即可修正。

关键步骤

  1. 记录投影版本与最近处理的事件位置。
  2. 幂等处理事件,使重放是覆盖而非累加。
  3. 支持重建到新读存储而不影响线上。
  4. 重建结果符合预期总量后再原子切换。

验证

  • 从零重放能复现当前读模型。
  • 同一事件处理两次不改变状态。
  • 重建存储可与预期总量比对。
  • 校验通过后才切换服务。

注意事项

  • 只有保留事件时才能重放;激进压缩会丧失重建能力。
  • 重建是离线工作,需要独立容量与校验后才能承接流量。

适用范围

本条目围绕「通过重放事件重建读模型」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。

建议在正式环境落地前先在预发或隔离环境演练一遍,把关键观测指标与负责人一并记录,确保出现异常时能快速定位并恢复。

SELECT id, type, payload
FROM events
WHERE id > $1
ORDER BY id
LIMIT 1000;