事件溯源是基于编排的 SAGA 模式的增强模式吗?

Has*_*ake 9 architecture redis saga apache-kafka microservices

这几天在研究微服务服务间通信模式。所以在我的研究过程中,我发现有两种模式,分别称为 SAGA 和事件溯源。但我无法在互联网上找到资源来了解这两种模式之间的区别。我的意思是我知道事件溯源将借助事件存储来捕获事件的历史记录。因此,根据我的理解,我觉得事件溯源就像是基于编排的 SAGA 模式的扩展版本。所以我需要澄清我的论点是否可以接受。我将在下面附上我在互联网上找到的两种模式的示例图。请在任何解释过程中使用这些图表。

基于编排的 SAGA 实现

事件溯源

参考

小智 13

这两者是解决不同问题的兼容模式,Sagas 处理工作流程,而事件溯源则解决状态的存储方式。Sagas 提供了一种处理多步骤流程并在步骤失败时回滚的机制(如工作流程)。事件溯源是通过记录实体过去的所有更改来编码实体状态的过程。

传奇

假设我们要预订假期,我们需要预订航班、酒店和租车。每个进程都由不同的微服务处理。

我们可以创建一个名为 BookingSaga 的微服务,它将负责跟踪每个预订的状态。当我们进行预订时,BookingSaga 服务会

  • 预订酒店
  • 预订航班
  • 预订汽车

这些可以按任何顺序回复,但如果任何一个失败,BookingSaga 将开始回滚并取消任何已预订的预订。

https://microservices.io/patterns/data/saga.html

事件溯源

事件溯源通过记录某个实体发生的变化来跟踪该实体的状态。

  • 对象 A 名称更改为“dave”
  • 对象 A 年龄更改为 3
  • 对象 A 名称更改为“sue”

所以我们可以看到对象 A 的名称为“sue”,所有事件结束时的年龄为 3。 https://microservices.io/patterns/data/event-source.html