相关疑难解决方法(0)

如何在 CQRS/事件溯源中以确定性方式重放?

在基于 CQRS / ES 的系统中,您将事件存储在事件存储中。这些事件涉及一个聚合,并且它们相对于它们所属的聚合有一个顺序。此外,聚合是一致性/事务边界,这意味着任何事务保证仅在每个聚合级别上给出。

\n\n

现在,假设我有一个读取模型,它消耗来自多个聚合的事件(据我所知,这完全没问题)。为了能够以确定性的方式重播读取模型,事件需要某种全局排序,跨聚合 \xe2\x80\x93 否则您不知道是否在 B 的事件之前或之后重播聚合 A 的事件,或者如何混合它们。

\n\n

实现此目的的最简单的解决方案是在事件上使用时间戳,但通常时间戳不够细(或者,换句话说,并非所有数据库都是相同的)。另一种选择是使用全局序列,但这在性能方面很差并且阻碍扩展。

\n\n

你如何解决这个问题?或者我的基本假设是,读取模型的重播应该是确定性的,是错误的吗?

\n

cqrs event-sourcing

6
推荐指数
1
解决办法
1782
查看次数

标签 统计

cqrs ×1

event-sourcing ×1