(2)tcc
(3)sage
(4)xa
三、問題
四、資料
seata
(****** extensible autonomous transaction architecture):簡單可擴充套件自治事務框架
seata
提供全方位分布式事務解決方案
seata
有四種模式:
在 at 模式下,使用者只需關心自己的 「業務sql」
at 模式分為兩個階段:
如圖:
1)過程
一階段
在一階段,seata 會攔截「業務 sql」,首先解析 sql 語義,找到「業務 sql」要更新的業務資料,在業務資料被更新前,將其儲存成「before image」,然後執行「業務 sql」更新業務資料,在業務資料更新之後,再將其儲存成「after image」,最後生成行鎖。以上操作全部在乙個資料庫事務內完成,這樣保證了一階段操作的原子性。如圖:
二階段提交
二階段如果是提交的話,因為「業務 sql」在一階段已經提交至資料庫, 所以 seata 框架只需將一階段儲存的快照資料和行鎖刪掉,完成資料清理即可。如圖:
二階段回滾
二階段如果是回滾的話,seata 就需要回滾一階段已經執行的「業務 sql」,還原業務資料。回滾方式便是用「before image」還原業務資料;但在還原前要首先要校驗髒寫,對比「資料庫當前業務資料」和 「after image」,如果兩份資料完全一致就說明沒有髒寫,可以還原業務資料,如果不一致就說明有髒寫,出現髒寫就需要轉人工處理。如圖:
2)優點
at 模式的一階段、二階段提交和回滾均由 seata 框架自動生成,使用者只需編寫「業務 sql」,便能輕鬆接入分布式事務,at 模式是一種對業務無任何侵入的分布式事務解決方案。
tcc分為三個階段:
1)過程
tryconfirm
cancel
2)三種異常處理
空回滾:try未執行,cancel 執行了
出現原因:冪等:多次呼叫方法(confirm)
出現原因:懸掛:cancel介面 比 try介面先執行網路異常
tc server 異常
出現原因:3)優點超時
相對於 at 模式,tcc 模式對業務**有一定的侵入性,但是 tcc 模式無 at 模式的全域性行鎖,tcc 效能會比 at 模式高很多。
sage 是長事務解決方案,事務驅動,參見event sourcing
如圖:
1)過程
如圖:2)適用場景
3)三種異常
空補償:原服務未執行,補償服務執行了
出現原因:懸掛:補償服務比原服務先執行 冪等:原服務與補償服務都需要保證冪等性
4)優點
一階段提交本地資料庫事務,無鎖,高薪能
補償服務即正向服務的 「反向」,高吞吐
參與者可非同步執行,高吞吐
xa 模式是seata
將會開源的另一種無侵入的分布式事務解決方案
1)過程
2)優點
無侵入將快照資料和行鎖等通過 xa 指令委託給了資料庫來完成
四種分布式事務模式,分別在不同的時間被提出,每種模式都有它的適用場景
at 模式是無侵入的分布式事務解決方案,適用於不希望對業務進行改造的場景,幾乎0學習成本。
tcc 模式是高效能分布式事務解決方案,適用於核心系統等對效能有很高要求的場景。
saga 模式是長事務解決方案,適用於業務流程長且需要保證事務最終一致性的業務系統,saga 模式一階段就會提交本地事務,無鎖,長流程情況下可以保證效能,多用於渠道層、整合層業務系統。事務參與者可能是其它公司的服務或者是遺留系統的服務,無法進行改造和提供 tcc 要求的介面,也可以使用 saga 模式。
xa模式是分布式強一致性的解決方案,但效能低而使用較少。
設計模式筆記 四種模式 四種原則
a.簡單工廠 用乙個單獨的類來做這個建立例項的過程,這就是工廠 不符合開 封閉原剛,每次擴充套件都要更改工廠類 計算器 1.cbxtype.items.addrange new object b,策略模式 定義多種演算法,並分別封裝,之間可以互相替換,演算法的變化不影響到客戶 收銀 context ...
設計模式之初識
前言 隨著我們隊面對物件的進一步了解,開始了設計模式的學習。學習設計模式我們需要帶著設計模式是什麼,我們為什麼要學習設計模式,它們有什麼好處,帶著這些問題學習可以幫助我們更好地理解和應用。建立型模式 單例模式 工廠方法模式 抽象工廠模式 建造者模式 原型模式 結構型模式 介面卡模式 橋接模式 裝飾模...
四種賺錢模式
第一種 賺勞動的錢 出賣時間與體力換取報酬。第二種 賺差價的錢 低進高出,靠價差獲取利潤。第三種 賺模式的錢 模式試點成功後,快速複製放大,收穫更大利益。第四得 賺資本的錢 用錢生錢,投個好專案,找一些能人幫你運營打理。人和人之間的差距表面上是在於財富與地位,其本質在於這個人對世界 對人性 對自己的...