2

从:

不变量是在数据更改时必须维护的一致性规则,将涉及 AGGREGATE 成员之间的关系。任何跨越 AGGREGATES 的规则都不会一直是最新的。通过事件处理、批处理或其他更新机制,可以在某个指定时间内解决其他依赖关系。但是在 AGGREGATE 中应用的不变量将随着每个事务的完成而强制执行。

a)我将其解释为,旨在保持多个聚合之间的一致性的规则不必在这些聚合之一将其更改保存到某些持久性存储时强制执行,而是可以在稍后的某个时间强制执行这个聚合已经用持久存储完成了它的事务?

b)但是为什么可以容忍这种行为,因为它会导致数据不一致/损坏?

谢谢

4

1 回答 1

2

一种)。正确的。聚合可以定义为一致性边界。该边界之外的事物(例如其他聚合)是那些可以作为后续事务的一部分进行可接受更新的实体。这是最终的一致性

乙)。通常,从业务角度来看,暂时过时的数据是可以接受的,应该明确讨论。此外,不一致实际上表现在通常被认为是一致的地方。例如,一旦您从某个服务请求数据并接收它,除非有环境事务,否则数据可能会不一致。如果请求的资源是远程的,则事务将不得不被分发,因此受到2PC的所有缺陷的影响。

查看 Udi Dahan关于事件驱动架构的文章,该文章从业务角度讨论了最终一致性。

于 2013-01-15T19:32:17.463 回答