

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

saga 模式是一種故障管理模式，可協助在分散式應用程式中建立一致性，並協調多個微服務之間的交易，以維持資料一致性。微服務會為每個交易發佈事件，並根據事件的結果啟動下一個交易。它可能需要兩個不同的路徑，取決於交易的成功或失敗。

下圖顯示 saga 模式如何使用 實作訂單處理系統 AWS Step Functions。每個步驟 （例如，「ProcessPayment」) 也有個別的步驟來處理程序的成功 （例如，「UpdateCustomerAccount」) 或失敗 （例如，「SetOrderFailure」)。

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


在以下情況下，您應該考慮使用此模式：
+ 應用程式需要維持多個微服務之間的資料一致性，而無需緊密耦合。
+ 有長期交易，而且如果某個微服務長時間執行，您不希望其他微服務遭到封鎖。
+ 如果 操作在序列中失敗，您需要能夠復原。

**重要**  
模式saga很難除錯，而且其複雜性會隨著微服務的數量而增加。模式需要複雜的程式設計模型，開發和設計補償交易以復原和復原變更。

如需在微服務架構中實作saga模式的詳細資訊，請參閱 AWS 規範指引網站上的 模式[使用 實作無伺服器saga模式 AWS Step Functions](https://docs.aws.amazon.com//prescriptive-guidance/latest/patterns/implement-the-serverless-saga-pattern-by-using-aws-step-functions.html)。