我们真的可以使用Event Sourcing和CQRS(一种事件驱动的电子商务结帐渠道架构)吗?

时间:2019-02-28 02:23:06

标签: events domain-driven-design microservices event-sourcing

让我们说Checkout提供以下服务:

  1. 订单服务,创建订单并收集运输,付款和下订单,并管理订单的生命周期。

  2. 库存服务,提供产品的可用性。

  3. 运输服务,提供交货选项和费用

  4. 客户资料服务,提供客户信息。

  5. 信贷服务,付款授权

  6. 进行预订的预订服务

这是订单创建的流程:

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

许多零售商的结帐都是同步和订购服务编排。

让我们说如果我们使用事件源,CQRS和事件存储,那么订单服务会创建一个订单事件并保留在事件存储中,并发布域事件和所有需要更新交付选项的订阅事件存储的其他服务,运输成本,完成订单所需的付款,并使用CQRS告知用户每个步骤的状态供他审核。

我想了解:

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

比订购服务协调结帐请求的同步操作要快吗?

万一发生故障,最终是否会保持一致?如何处理永恒一致性?

1 个答案:

答案 0 :(得分:0)

那么我们可以使用事件源和CQRS进行结帐流程。就像您说的那样,您将引发事件,订阅的服务将对此做出反应。问题不那么复杂或简单,在您的情况下是否值得?事件源和CQRS是具有许多好处的复杂模式,但是您需要以正确的方式实施它。

为了最终的一致性,您可能必须依靠Saga Pattern,如果出现故障,则必须提出补偿措施以进行回滚。