ddd中上游上下文和下游上下文之间的关系

relationship between upstream context and downstream context in ddd

最近学习了ddd,里面说两个相关的bounded context之间的关系是upstream和downstream。

但是有没有可能一种情况下A上游B下游,另一种情况下B上下游?

但是如果可以的话,我觉得这两个bounded context是高度耦合的。它们不是独立的业务逻辑。那么当发生这种情况时,是否意味着我们没有将域正确划分为有界上下文?

或者我们确实在某种程度上允许两个限界上下文之间的通信,如果它们相互调用的 API 太多,它们实际上是一个限界上下文,但我们没有正确划分它。

上游环境会影响下游环境,反之则不一定。 例如,假设有两个微服务作为限界上下文,MoneyTransferServiceNotificationService。如果转账,通知应向客户发送一封电子邮件,其中包含一些与交易相关的信息。所以 MoneyTransferService 是上游 NotificationService 下游

DDD 描述了几种组织模式,它们帮助我们描述 and/or 管理不同上下文交互的方式。这里最合适的模式称为反腐败层 (ACL)。 为了在我的例子中遵循这种模式,为了与两个微服务通信,可以使用 Repository layer 或者更好的解决方案是发布消息并通过 RabbitMQ 等工具使用它们。通过使用 RabbitMQ,这些服务只依赖于消息类型,不需要知道任何其他信息。

就依赖关系而言,限界上下文之间的交互并不意味着它们之间存在依赖关系,您不一定需要将它们重新设计为限界上下文。

您的目标应该是在您的领域知识的指导下实现最有意义的分离。重点不在于规模,而在于业务能力。此外,如果基于大量依赖项的应用程序的某个区域需要明确的内聚性,则也表明需要单个限界上下文。 限界上下文之间的通信没有错,它们需要彼此来完成业务操作。