【发布时间】:2020-01-03 08:51:27
【问题描述】:
我知道有很多关于集合验证的主题,我不会说我已经阅读了其中的每一个,但我已经阅读了很多,但仍然觉得我没有看到一些明确的答案闻起来不难闻。
考虑一下:
- 我们有
Customer的概念 -
Customer有一些一般细节数据 -
Customer可以做Transaction(在店里买东西) - 如果
Customer处于信用模式,那么他一年可以消费的金额是有限制的 -
Transactions/Customer每年的数量可能很大(数千个以上) - 至关重要的是,
Customer永远不会花费超过限额的一分钱(没有人会手动检查限额) -
Customer可以创建新的Transaction或将项目添加到现有的项目中,并且必须检查两者的限制 -
Customer实际上可以是Company,后面有很多Users进行实际交易意味着Transactions可以同时创建/更新
显然,在创建新的或编辑现有的Transaction 时,我想避免为Customer 加载所有Transactions,因为它不能很好地适应大量Transactions。
如果我在创建/更新Transaction 之前引入专用于检查currentLimitSpent 的聚合,那么我将进行非事务性创建/更新(一个步骤检查currentLimitSpent,然后另一个检查创建/更新Transaction)。
如果我不关心所有 ddd 规则(或者如果它的最终一致性方法),我知道如何实现这一点,但我想知道是否有一些惯用的 ddd 方法来解决此类问题,且严格一致性不涉及为每个 Transaction 创建/更新加载所有 Transactions?
【问题讨论】:
标签: domain-driven-design microservices