【发布时间】:2019-11-18 16:58:46
【问题描述】:
我有一个类似于here描述的例子:
一个实体的身份可以跨越多个微服务或有界 上下文。
相同的身份(即相同的 Id 值,虽然可能不是 同一个域实体)可以跨多个有界建模 上下文或微服务。但是,这并不意味着相同 具有相同属性和逻辑的实体将在 多个限界上下文。相反,每个限界上下文中的实体 将他们的属性和行为限制在 Bounded 上下文的域。
例如,买方实体可能拥有一个人的大部分 在配置文件的用户实体中定义的属性或 身份微服务,包括身份。但买方实体在 订购微服务可能具有较少的属性,因为只有 某些买家数据与订单流程有关。的上下文 每个微服务或限界上下文都会影响其领域模型。
在我的例子中,我有一个 Subscription 模型,它有两个不同的有界上下文,它们有自己的属性。
更进一步,一个Subscription 属于一个Agency,而一个Agency 只能有一个(不是0,也不是很多)Subscriptions。
因此,基于此,我一直在考虑聚合 id 将是什么。由于Subscription 与Agency 具有1-1 映射关系,因此可以使用与Agency 相同的ID 吗?
我认为这是有道理的,因为 Subscription 不需要它自己的 ID。就算有我也不认为会返回给用户,用户可以通过拥有Agency id来引用它。
在这种有界上下文中,Agency 聚合(或其属性)不相关,因此我认为它们不是同一聚合的一部分。
综上所述,如果是1-1映射,一个聚合是否可以共享另一个聚合的ID?
【问题讨论】:
-
澄清问题。如果
Subscription只能通过拥有Agency来引用,它是否应该被视为Aggregate?Agency是Bounded Contexts和Subscription中的一个概念吗?当Agency被归档/删除时,Subscription会发生什么情况?您是使用 RDBMS 进行持久化还是使用文档存储?使用不同的主ID并通过agency_id属性链接到Agency的机制是一个选项吗?
标签: domain-driven-design microservices