我正在构建微服务。我的微服务之一是使用 CQRS 和事件源。集成事件在系统中引发,我将聚合保存在事件存储中,同时更新我的读取模型。
我的问题是,当我们针对该聚合更新事件流时,为什么需要聚合版本?我读到我们需要这个以保持一致性,并且要按顺序重播事件,我们需要在保存之前检查版本(https://blog.leifbattermann.de/2017/04/21/12-things-you-should-know- about-event-sourcing/)我仍然无法解决这个问题,因为事件是按顺序引发和保存的,所以我真的需要具体的例子来了解我们从版本中获得了什么好处以及为什么我们甚至需要它们。
非常感谢,
伊姆兰
设想
我正在使用微服务构建快递服务系统。我不确定一些事情,这是我的场景
该系统采用事件驱动架构。当客户下预订订单时,我在预订 API 中提交本地事务并发布事件。支付 API 和通知 API 订阅各自的事件。完成付款和通知 API 后,需要向 Booking API 确认。
我的问题是
发布活动后,我的预订服务无法阻止呼叫并返回到客户端(前端)。我的客户端应用程序必须如何检查交易状态或者知道交易已完成?它每隔几秒轮询一次吗?由于这是分布式事务,任何服务都可能出现故障并且无法回复。在这种情况下,我的客户端(前端)怎么知道,因为它会继续等待。我正在考虑分布式事务的传奇。
实现这一切的最佳方法是什么?
事件溯源
我想实施事件溯源来跟踪预订订单的完整轨迹。我是否必须在我的预订 API 中使用事件存储来实现此功能?或者事件存储在服务之间共享,因为我应该捕获来自不同服务的所有事件。实现这一点的最佳方法是什么?
非常感谢,
architecture design-patterns asynchronous event-handling microservices