Saga 模式 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Saga 模式

saga 模式是一种故障管理模式,有助于在分布式应用程序中建立一致性,并协调多个微服务之间的事务以保持数据一致性。微服务可为每个事务发布一个事件,并根据事件的结果启动下一个事务。根据事务的成败,其可以有两种不同的路径。

下图显示了 saga 模式如何使用 AWS Step Functions 实施订单处理系统。每个步骤(例如 “ProcessPayment”)也有单独的步骤来处理过程的成功(例如 UpdateCustomerAccount “”)或失败(例如 SetOrderFailure “”)。

Saga 模式

若为以下情况,您应该考虑使用这种模式:

  • 应用程序需要在多项微服务之间保持数据一致性,而无需紧密耦合。

  • 存在长期事务,如果某项微服务会运行很长时间,则您不希望其他微服务被阻止。

  • 如果序列中的某项操作失败,则需要能够回滚。

重要

saga 模式很难调试,并且其复杂性会随着微服务数量的增加而加深。此模式需要一个复杂的编程模型,以开发和设计用于回滚和撤消更改的补偿事务。

有关在微服务架构中实施 saga 模式的更多信息,请参阅 AWS Prescriptive Guidance 网站上的使用 AWS Step Functions 实施无服务器 saga 模式的模式。