知识卡片
领域事件数据对账机制:作为最终一致性的审计安全网
内容
领域事件驱动的最终一致性方案(事件发布方与订阅方各自持久化数据后异步同步)本身无法保证100%不出问题——网络抖动、订阅方处理失败等都可能导致源端和目的端数据出现偏差且无人察觉。对此的补救手段是数据对账机制:不仅持久化业务数据本身,还要把领域事件对象也持久化下来(如LeaveEvent的持久化对象LeaveEventPO),保留事件ID、时间戳、来源和业务数据快照;对账时定期比对源端和目的端各自持久化的数据,发现不一致的异常记录后,通过重发事件或转人工处理的方式补救。这揭示了一个容易被忽略的设计要点:领域事件驱动的最终一致性不是”发布了就万事大吉”的一次性动作,而是需要配套一套事后可审计、可纠偏的机制;对账所需的数据结构(事件持久化对象)本身也是这套安全网的一部分,不能因为事件已经发布成功就省略这一步的持久化。
参考来源
- 位置:第19章《基于DDD的微服务代码详解》"19.3.4 领域事件数据持久化"(源文件:_epub-src/OEBPS/Text/chapter4-8-3-4.xhtml)
- 结论依据:原文说明"为了保证事件发布方与事件订阅方数据的最终一致性和数据审计要求,有些业务场景需要建立数据对账机制。数据对账主要通过对源端和目的端的持久化数据比对,发现异常数据并进一步处理,以保证数据最终一致性。异常数据的处理可以采用重发、转人工处理等方式",直接支撑本卡片结论。
- 原始内容:为了保证事件发布方与事件订阅方数据的最终一致性和数据审计要求,有些业务场景需要建立数据对账机制。数据对账主要通过对源端和目的端的持久化数据比对,发现异常数据并进一步处理,以保证数据最终一致性。异常数据的处理可以采用重发、转人工处理等方式。