我们真的可以使用Event Sourcing和CQRS,这是一个用于电子商务结账渠道的事件驱动架构吗?

问题描述 投票:0回答:1

我们说Checkout有以下服务:

  1. 订购服务,创建订单并收集运费,付款和下订单以及管理订单的生命周期。
  2. 库存服务,提供产品的可用性。
  3. 送货服务,提供送货方式和费用
  4. 客户资料服务,提供客户信息。
  5. 信用卡服务,付款授权
  6. 预订服务进行预订

这是订单创建的流程:

订单已创建,用户提供送货地址,计算送货选项,收取付款并下订单并向用户显示确认。

许多零售商结账都是同步和订购服务协调。

假设我们使用事件源,CQRS和事件存储,订单服务创建订单事件并持续存储在事件存储中,发布域事件以及订阅事件存储的所有其他服务,因为他们需要更新传递选项,运输成本,支付完成订单并使用CQRS通知用户每个步骤的状态供他审查。

我想了解:

结帐应用程序与结账的所有域事件有多复杂,例如,添加送货地址,预订,交付选项选择,添加付款和完成订单?

是否比订购服务的同步操作更快地编排结账请求?

如果失败,最终会保持一致吗?如何处理最终的一致性?

events domain-driven-design microservices event-sourcing
1个回答
0
投票

那么我们可以使用事件采购和CQRS进行结账流程。就像你说你会提高事件而订阅服务会对此做出反应。这个问题多么复杂或容易,在你的案例中是否值得?事件采购和CQRS是复杂的模式,有许多好处,但您需要以正确的方式实现它。

为了最终的一致性,您可能不得不依赖Saga Pattern,如果失败,您将不得不提出回滚补偿操作。

© www.soinside.com 2019 - 2024. All rights reserved.