Microservices 有关骨料的详细信息以及在何处使用骨料

Microservices 有关骨料的详细信息以及在何处使用骨料,microservices,domain-driven-design,aggregates,Microservices,Domain Driven Design,Aggregates,我在youtube上读了很多关于聚合的文章和视频,但每次我都被它们弄糊涂了。因此,请用一个具体的例子详细描述。我对此了解甚少,因为它是一个集合,可以用于DDD(域驱动设计)模式和识别微服务边界。如果我错了,请纠正我,并描述更多有关聚合的信息 提前谢谢 聚合是一组相关对象,我们将其视为一个单元,用于数据更改。-埃文斯,2003年 聚合是一种模式,Evans在蓝皮书的生命周期管理一章中描述了这种模式 其动机是,我们通常有两个或多个域实体,它们必须始终以某种方式彼此一致。这通常意味着我们希望将它们保存

我在youtube上读了很多关于聚合的文章和视频,但每次我都被它们弄糊涂了。因此,请用一个具体的例子详细描述。我对此了解甚少,因为它是一个集合,可以用于DDD(域驱动设计)模式和识别微服务边界。如果我错了,请纠正我,并描述更多有关聚合的信息

提前谢谢

聚合是一组相关对象,我们将其视为一个单元,用于数据更改。-埃文斯,2003年

聚合是一种模式,Evans在蓝皮书的生命周期管理一章中描述了这种模式

其动机是,我们通常有两个或多个域实体,它们必须始终以某种方式彼此一致。这通常意味着我们希望将它们保存在一起(否则,一个时间错误的失败可能会使我们处于一种实体彼此不一致的状态),并且通常意味着我们希望在任何情况下都可以使用这两个实体,我们可能会更改其中一个(因为我们需要确保更改与其他更改保持一致)

另见:


有点做作的例子:

设想一个跟踪某一商品出价的系统,我们的实体可能包括一个购买订单集合(每个订单有一个价格和一个金额),以及一个类似的销售订单集合

我们的工作是将相互接近、时间相近、价格相同的买卖订单配对。因此,当新的买卖订单出现时,要么将其添加到买卖订单集合中,要么将其与从买卖集合中删除的买卖订单进行匹配

实际上,对这两个集合进行管理,使它们永远不会重叠。为了确保属性保持不变,我们将两个集合保持在同一个“聚合”中,以便它们始终保存为一个单元,并防止可能导致两个实体不一致的数据争用

通常,这会约束我们的数据模型——例如,如果我们使用文档存储来保存域信息,那么这两个实体将在同一个“文档”中表示