问题描述
最近我在研究微服务服务间通信模式。所以在我的研究中,我发现有两种模式,称为 SAGA 和事件溯源。但是我在互联网上找不到资源来了解这两种模式之间的区别。我的意思是我知道事件溯源将在事件存储的帮助下捕获事件的历史记录。所以根据我的理解,我觉得事件溯源就像是基于编舞的 SAGA 模式的扩展版本。所以我需要澄清我的论点是否可以接受。我将附上我在下面的互联网上找到的两种模式的示例图。请在任何解释中使用这些图表。
解决方法
这两者是解决不同问题的兼容模式,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