saga,與分布式相關,最早被定義在Hector Garcia-Molina和Kenneth Salem的論文"Sagas"中。這篇論文提出了一個saga機制來作為分布式事務的替代品以解決長時間運行的分布式事務(long-running process)的問題。這篇論文認為業務過程經常由很多步驟組成,每個步驟都涉及一個事務,如果將這些事務組成一個分布式事務,就可以實現總體一致(overall consistency )。然而在長時間運行的分布式事務中,使用分布式事務會影響效率和系統的並發處理能力,因為在執行分布式事務的時候會有鎖產生。
saga通過確保每一個業務過程都有修正事務(compensating transaction)來減少了系統對分布式事務的依賴。在這種方式下,如果業務過程遇到了錯誤的情況並且無法繼續,它就可以執行修正事務來修正已經完成的步驟。這種在業務流程中去撤銷已經完成的工作的方式保證了系統的一致性。
saga這個名詞通常被用在CQRS的討論中,它是指一段在限定上下文(bounded contexts )和聚合(aggregates)之間起協作和路由(coordinates and routes )消息作用的代碼。這里更傾向於使用Process manager這個詞來表示MassTransit中的sagas。

