我有以下域建模问题,我似乎最终要么跨越一致性边界或创建一个巨大的聚合.有人可以帮我分手吗? JobA,JobB有两种工作类型. JobA由任务TaskA组成. JobB由任务TaskB组成. JobA和JobB是无关的.它
JobA,JobB有两种工作类型. JobA由任务TaskA组成. JobB由任务TaskB组成. JobA和JobB是无关的.它们之间唯一共同点是它们都需要设备资源.我本来想创建5个可能互相引用的聚合根 – JobA将引用TaskA等等.
我可以将一份工作及其任务集中在一起.这是以引入其他开销为代价的,因为任务本身就是复杂的生物.但是,以下约束阻止我使用任一模型.
>如果任何任务仍未完成,则无法将作业标记为完成.此检查会导致事务跨越聚合边界(例如,TaskA和JobA).
>设备不能分配到1个以上的作业.此检查将跨越两个作业聚合.
>在作业完成之前必须释放设备.此交易将跨设备和工作总计.
只有一个聚合会将所有交易放在边界内,但这会使得总量不可能大.是否有一个隐藏在这一切中的不同模型我错过了?
我认为最好的解决方案可能是使用最终的一致性.当我对设计agreggates有疑问时,我总是看看Effective Agreggate Design by Vaughn Vernon.