Domain driven design “选择一致性类型”是什么;问问这是谁的工作;指导意味着什么?

Domain driven design “选择一致性类型”是什么;问问这是谁的工作;指导意味着什么?,domain-driven-design,consistency,aggregateroot,Domain Driven Design,Consistency,Aggregateroot,在讨论如何决定是否应在第二部分中使用事务一致性或最终一致性时,他表示 当检查用例(或故事)时,询问它是否是 执行用例以使数据一致的用户。如果是,, 尝试使其在事务上保持一致,但必须遵守 其他聚合规则。如果它是另一个用户的作业,或 系统,让它最终保持一致 我不明白。有没有人能举一个很好的例子来应用这条经验法则?我是这样理解的: MovePiece()onChessBoardaggregate=>用户责任。所有操作都应发生在棋盘边界内的一个事务中 DecideGameOver()onChessG

在讨论如何决定是否应在第二部分中使用事务一致性或最终一致性时,他表示

当检查用例(或故事)时,询问它是否是 执行用例以使数据一致的用户。如果是,, 尝试使其在事务上保持一致,但必须遵守 其他聚合规则。如果它是另一个用户的作业,或 系统,让它最终保持一致

我不明白。有没有人能举一个很好的例子来应用这条经验法则?

我是这样理解的:

  • MovePiece()
    on
    ChessBoard
    aggregate=>用户责任。所有操作都应发生在
    棋盘
    边界内的一个事务中

  • DecideGameOver()
    on
    ChessGame
    aggregate=>系统责任

    一些处理程序订阅
    棋盘
    片段移动
    事件和
    棋盘游戏
    的代表聚集在一起,决定游戏是否成功 结束我们可以容忍在最后一步行动开始之前的延迟 当游戏集合更新时,它是最终的 一致性


不过,这并不是一条硬性规定,更多的是从几十个系统的观察中总结出来的指标。

谢谢。我明白你的意思,但我认为国际象棋是一个尴尬的例子,因为它可以合理地建模为一个大的聚合(所有东西都是基于回合的,所以只与两个用户同步,没有多租户)。我认为一个更有用的例子是网站访问者填写注册表,然后激活他们的帐户。这一点很好。我选择国际象棋是为了让它更简单,但我最初考虑的真正项目是多人游戏。无论如何,我有兴趣看到其他答案。正如我所说,这只是我对规则的解释。