在基于 CQRS / ES 的系统中,您将事件存储在事件存储中。这些事件涉及一个聚合,并且它们相对于它们所属的聚合有一个顺序。此外,聚合是一致性/事务边界,这意味着任何事务保证仅在每个聚合级别上给出。
现在,假设我有一个读取模型,它消耗来自的事件multiple聚合(据我所知,这完全没问题)。为了能够以确定性的方式重播读取模型,事件需要某种跨聚合的全局排序 - 否则您将不知道是否在 B 的事件之前或之后重播聚合 A 的事件,或者如何混合他们。
实现此目的的最简单的解决方案是在事件上使用时间戳,但通常时间戳不够细(或者,换句话说,并非所有数据库都是一样的)。另一种选择是使用全局序列,但这在性能方面很差并且阻碍扩展。
你如何解决这个问题?或者我的基本假设是,读取模型的重播应该是确定性的,是错误的吗?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)