在事件源系统中从零还原聚合根。步骤是什么?

时间:2019-03-14 17:01:54

标签: domain-driven-design event-sourcing

上下文:

我正在使用的系统有一个模块。该模块具有用于其聚合状态的持久性存储。

我想实施一项策略,将所有聚合状态从零恢复。

事件存储是使用关系数据库的自制实现。 它将所有事件从系统历史的开始就保留下来。 目前,我没有快照。目前该系统还很小。但是,我想在问题中考虑快照的存在。

因此,我正在寻找一种策略来在系统崩溃后恢复聚合,这是在最坏的情况下(模块数据库丢失(无法恢复))。

问题:

该模块应该从事件存储中请求什么步骤以及哪些信息才能恢复其状态?

我有一个解决方案,我想知道我是否走对了路。请检查下面写的解决方案。

到目前为止我提出的解决方案:

步骤:

  1. 请求事件流(已排序事件的列表)具有特定类型(已创建/已删除的汇总),这将有助于确定汇总ID列表。
  2. 使用从步骤1获得的聚合ID列表来请求聚合事件流-每个聚合一个流。如果快照可用,它将成为聚合流的第一个元素。

如果您有其他建议的解决方案,我将很高兴学习。

0 个答案:

没有答案