

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

# Saga 模式
<a name="saga-pattern"></a>

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

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

![\[Saga 模式\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/modernization-data-persistence/images/enabling-diagram6.png)


若为以下情况，您应该考虑使用这种模式：
+ 应用程序需要在多项微服务之间保持数据一致性，而无需紧密耦合。
+ 存在长期事务，如果某项微服务会运行很长时间，则您不希望其他微服务被阻止。
+ 如果序列中的某项操作失败，则需要能够回滚。

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

有关在微服务架构中实施 saga 模式的更多信息，请参阅 AWS 规范指引网站上的[使用 AWS Step Functions实施无服务器 saga 模式](https://docs.aws.amazon.com//prescriptive-guidance/latest/patterns/implement-the-serverless-saga-pattern-by-using-aws-step-functions.html)的模式。