Domain driven design 如何在微服务上进行交叉治疗

Domain driven design 如何在微服务上进行交叉治疗,domain-driven-design,microservices,cqrs,Domain Driven Design,Microservices,Cqrs,我正在学习微服务,但我不知道如何构建 假设我们正在做一个电子商务应用程序。我们将有一个目录服务(产品),一个价格服务,一个促销服务和一个购物车服务 我的问题是:哪个服务负责在shoppingcart上应用促销,因为此处理需要来自shoppingcart服务和促销服务的数据,并且必须将结果(具有新价格的购物车)保存在某个地方(但在哪里?) 谢谢你的帮助 让我们假设每个微服务都有自己的有界上下文,因此它有自己的业务逻辑和数据库,完全分离,所有的微服务都是松散耦合的 您的购物车负责计算价格,因为它是该

我正在学习微服务,但我不知道如何构建

假设我们正在做一个电子商务应用程序。我们将有一个目录服务(产品),一个价格服务,一个促销服务和一个购物车服务

我的问题是:哪个服务负责在shoppingcart上应用促销,因为此处理需要来自shoppingcart服务和促销服务的数据,并且必须将结果(具有新价格的购物车)保存在某个地方(但在哪里?)


谢谢你的帮助

让我们假设每个微服务都有自己的有界上下文,因此它有自己的业务逻辑和数据库,完全分离,所有的微服务都是松散耦合的

您的购物车负责计算价格,因为它是该微服务的主要责任,因此该服务也将应用促销,因为它是购物车的主要责任

但要在促销后重新计算价格,它必须保留和维护一些与促销相关的数据。如果您使用的是事件驱动设计,则可以在向购物车添加/更新或删除促销时发送事件

或者,您可以在运行时调用promotion microservice的端点来检查折扣率或百分比,但此时,您的购物车microservice将与promotion microservice耦合


每种方法都有一些优点和缺点,这取决于您的设计

让我们假设每个微服务都有自己的有界上下文,因此它有自己的业务逻辑和数据库完全分离,并且所有的微服务都是松散耦合的

您的购物车负责计算价格,因为它是该微服务的主要责任,因此该服务也将应用促销,因为它是购物车的主要责任

但要在促销后重新计算价格,它必须保留和维护一些与促销相关的数据。如果您使用的是事件驱动设计,则可以在向购物车添加/更新或删除促销时发送事件

或者,您可以在运行时调用promotion microservice的端点来检查折扣率或百分比,但此时,您的购物车microservice将与promotion microservice耦合

每种方法都有一些优点和缺点,这取决于您的设计