gpt4 book ai didi

domain-driven-design - 聚合是否必须高度一致?

转载 作者:行者123 更新时间:2023-12-04 03:00:30 24 4
gpt4 key购买 nike

我在 DDD 上读到的所有内容都暗示聚合内的状态必须高度一致。

这意味着如果需要冗余,则只能使用强一致性复制(例如 2PC、3PC 或 Paxos)。

是否允许使用最终一致的复制,如多主或主从?如果您确实使用了它们,那么您所拥有的仍然是 DDD 术语中的“聚合”吗?这是常见的事情吗?

最佳答案

聚合本身需要保持一致,但是相关聚合最终可以彼此保持一致。事实上,最终一致性是 DDD 在分布式场景中的常见范式。聚合可以被认为是一致性边界。这意味着聚合是根据必须一致的而不是对现实的纯粹反射(reflect)来定义的。

例如,聚合上的行为可以发布域事件,然后再向外部发布。该事件的带外处理程序最终可以使整个系统进入一致状态。很多时候,最终一致性是完全可以接受的业务约束,尤其是因为最终一致性在现实中更为普遍。

看看Effective Aggregate Design by Vaughn Vernon有关更多信息。

更新

应根据具体情况评估最终一致的聚合冗余。一些聚合将非常适合于解决冲突,也许具有自然补偿行为。这些类型的冲突将以类似于 CQRS 式冲突的方式解决,在这种情况下,需要采取补偿措施才能使系统进入一致状态。与 CQRS 一样,应与领域专家讨论最终一致性的影响。

关于domain-driven-design - 聚合是否必须高度一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14830227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com