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

Posted

技术标签:

【中文标题】事件溯源是基于编排的 SAGA 模式的增强模式吗?【英文标题】:Is event sourcing an enhanced pattern of choreography-based SAGA pattern? 【发布时间】:2021-06-29 06:50:57 【问题描述】:

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

References

【问题讨论】:

【参考方案1】:

这两者是解决不同问题的兼容模式,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-sourcing.html

【讨论】:

以上是关于事件溯源是基于编排的 SAGA 模式的增强模式吗?的主要内容,如果未能解决你的问题,请参考以下文章

分布式事务 | 使用DTM 的Saga 模式

MassTransit | 基于MassTransit Courier 实现 Saga 编排式分布式事务

基于Kafka构建事件溯源模式的微服务

基于Kafka构建事件溯源模式的微服务

拯救祭天的程序员——事件溯源模式

事件溯源和 CQRS,我错过了啥?