SuperAPI AI 工具集

event-sourcing

通用与其它

查看项目

更新于 10-16 05:48

技能介绍

用途:Event Sourcing 将应用状态的所有变更保存为事件序列,不只存当前状态,而是记录“发生了什么”。适用于需要完整审计与合规追踪(金融账本、医疗记录、法律系统)、按任意历史时间点重建实体状态的时间查询、在本地重放生产事故事件以定位逻辑缺陷,以及通过追加不可变事件提升写入吞吐的场景。

主要能力:以聚合重放方式从历史事件折叠出状态;提供快照机制,定期保存状态检查点,避免每次读取都重放海量事件;支持事件版本化与 upcaster 迁移旧事件;建议配合 CQRS 分离读写视图。

使用方式:定义 DomainEvent 结构(eventId、aggregateId、type、payload、timestamp),在聚合的 apply 方法中按事件类型更新状态,通过 fromHistory 或 reconstruct 重放事件重建聚合。读取时先取最新快照,再从快照版本之后拉取事件并依次 apply。追加时传入期望的流版本以实施乐观并发控制,版本不符则拒绝写入。

限制与注意:事件应视为不可变事实,不得编辑、修改或删除,纠错需记录补偿事件(如 PaymentReversed)。长期存活的流应每 100 至 500 个事件创建快照以控制水合延迟。更新事件结构时须保持向后兼容,用 upcaster 迁移。不要在未加密的事件流中存放个人身份信息;若受 GDPR 被遗忘权约束,可采用加密粉碎(用可丢弃密钥加密 PII)。并非所有实体都适合事件溯源,无审计需求的简单 CRUD 会带来巨大复杂度。常见问题包括重放缓慢(需快照或检查聚合边界)与模式演进(需 upcaster)。