首页 文章

CQRS - 读取端的事件重放

提问于
浏览
2

我已经阅读了几个关于CQRS的博客,并且所有这些博客都解释说,在写入端事件持久存储在事件存储中,并且在请求时,事件被检索并在聚合上重放 .

我的问题是为什么读取端不需要在聚合上重放事件?

2 回答

  • 1

    因为您的阅读方不使用聚合 .

    读取端实现为投影,它根据聚合发出的事件流计算当前状态,并将当前状态保存在某些持久存储或内存中 . 读取侧的时间点是为客户提供当前状态 .

  • 6

    我想为Jakub Konecki的解释添加例子 .

    让我们假设您使用事件来源为银行账户建模 . 该帐户的每个操作都会导致事件被持久化 . 几年后,您有数百个与该银行帐户相关的活动 . 现在,如果要显示该帐户的余额,您将重播所有事件以计算余额?如果有很多帐户,仅重放事件来计算余额将是应用程序的性能瓶颈 . 我们甚至没有提到从银行账户显示所需的其他信息并描述当前的账户状态 .

    这就是为什么我们在读取端存储聚合状态的快照,因为主要的读取端用于表示目的 . 我们希望保持系统的这一部分简单 .

相关问题