Saga的組成
每個(gè)Saga由一系列sub-transaction Ti 組成
每個(gè)Ti 都有對(duì)應(yīng)的補(bǔ)償動(dòng)作Ci,補(bǔ)償動(dòng)作用于撤銷Ti造成的結(jié)果
可以看到,和TCC相比,Saga沒有“預(yù)留”動(dòng)作,它的Ti就是直接提交到庫。
Saga的執(zhí)行順序有兩種:
T1, T2, T3, ..., Tn
T1, T2, ..., Tj, Cj,..., C2, C1,其中0 < j < n
Saga定義了兩種恢復(fù)策略:
backward recovery,向后恢復(fù),即上面提到的第二種執(zhí)行順序,其中j是發(fā)生錯(cuò)誤的sub-transaction,這種做法的效果是撤銷掉之前所有成功的sub-transation,使得整個(gè)Saga的執(zhí)行結(jié)果撤銷。
forward recovery,向前恢復(fù),適用于必須要成功的場(chǎng)景,執(zhí)行順序是類似于這樣的:T1, T2, ..., Tj(失敗), Tj(重試),..., Tn,其中j是發(fā)生錯(cuò)誤的sub-transaction。該情況下不需要Ci。
————————————————
版權(quán)聲明:本文為CSDN博主「聶鵬」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/lsblsb/article/details/89456255