Seata 之 初識(四種模式)

2021-09-29 01:39:00 字數 2524 閱讀 3452

(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)

出現原因:

網路異常

tc server 異常

懸掛:cancel介面 比 try介面先執行

出現原因:

超時

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 ...

設計模式之初識

前言 隨著我們隊面對物件的進一步了解,開始了設計模式的學習。學習設計模式我們需要帶著設計模式是什麼,我們為什麼要學習設計模式,它們有什麼好處,帶著這些問題學習可以幫助我們更好地理解和應用。建立型模式 單例模式 工廠方法模式 抽象工廠模式 建造者模式 原型模式 結構型模式 介面卡模式 橋接模式 裝飾模...

四種賺錢模式

第一種 賺勞動的錢 出賣時間與體力換取報酬。第二種 賺差價的錢 低進高出,靠價差獲取利潤。第三種 賺模式的錢 模式試點成功後,快速複製放大,收穫更大利益。第四得 賺資本的錢 用錢生錢,投個好專案,找一些能人幫你運營打理。人和人之間的差距表面上是在於財富與地位,其本質在於這個人對世界 對人性 對自己的...