天天看點

【Seata】之 初識(四種模式)

文章目錄

  • ​​一、簡介​​
  • ​​二、四種模式​​
  • ​​(1)AT​​
  • ​​1)過程​​
  • ​​2)優點​​
  • ​​(2)TCC​​
  • ​​1)過程​​
  • ​​2)三種異常處理​​
  • ​​3)優點​​
  • ​​(3)Sage​​
  • ​​1)過程​​
  • ​​2)适用場景​​
  • ​​3)三種異常​​
  • ​​4)優點​​
  • ​​(4)XA​​
  • ​​1)過程​​
  • ​​2)優點​​
  • ​​三、問題​​
  • ​​(1)如何選擇模式?​​
  • ​​四、資料​​

一、簡介

​Seata​

​(Simple Extensible Autonomous Transaction Architecture):簡單可擴充自治事務架構

​Seata​

​提供全方位分布式事務解決方案

​Seata​

​有四種模式:

  • AT
  • TCC
  • Sage
  • XA

二、四種模式

(1)AT

在 AT 模式下,使用者隻需關心自己的 “業務SQL”

AT 模式分為兩個階段:

  • 一階段:執行使用者​

    ​SQL​

  • 二階段:​

    ​Seata​

    ​架構自動生成

如圖:

【Seata】之 初識(四種模式)

1)過程

  1. 一階段
在一階段,Seata 會攔截“業務 SQL”,首先解析 SQL 語義,找到“業務 SQL”要更新的業務資料,在業務資料被更新前,将其儲存成“before image”,然後執行“業務 SQL”更新業務資料,在業務資料更新之後,再将其儲存成“after image”,最後生成行鎖。以上操作全部在一個資料庫事務内完成,這樣保證了一階段操作的原子性。

如圖:

【Seata】之 初識(四種模式)
  1. 二階段送出
二階段如果是送出的話,因為“業務 SQL”在一階段已經送出至資料庫, 是以 Seata 架構隻需将一階段儲存的快照資料和行鎖删掉,完成資料清理即可。

如圖:

【Seata】之 初識(四種模式)
  1. 二階段復原
二階段如果是復原的話,Seata 就需要復原一階段已經執行的“業務 SQL”,還原業務資料。復原方式便是用“before image”還原業務資料;但在還原前要首先要校驗髒寫,對比“資料庫目前業務資料”和 “after image”,如果兩份資料完全一緻就說明沒有髒寫,可以還原業務資料,如果不一緻就說明有髒寫,出現髒寫就需要轉人工處理。

如圖:

【Seata】之 初識(四種模式)

2)優點

AT 模式的一階段、二階段送出和復原均由 Seata 架構自動生成,使用者隻需編寫“業務 SQL”,便能輕松接入分布式事務,AT 模式是一種對業務無任何侵入的分布式事務解決方案。

(2)TCC

TCC分為三個階段:

  • Try:做業務檢查和資源預留
  • Confirm:确認送出
  • Cancel:業務執行錯誤需要復原的狀态下執行分支事務的業務取消,預留資源釋放
【Seata】之 初識(四種模式)

1)過程

  1. Try
  2. Confirm
  3. Cancel

2)三種異常處理

  1. 空復原:Try未執行,Cancel 執行了
出現原因:
  1. 幂等:多次調用方法(Confirm)
出現原因:
  1. 網絡異常
  2. TC Server 異常
  1. 懸挂:Cancel接口 比 Try接口先執行
出現原因:
  1. 逾時

3)優點

相對于 AT 模式,TCC 模式對業務代碼有一定的侵入性,但是 TCC 模式無 AT 模式的全局行鎖,TCC 性能會比 AT 模式高很多。

(3)Sage

Sage 是長事務解決方案,事務驅動,參見​

​Event Sourcing​

如圖:

【Seata】之 初識(四種模式)

1)過程

如圖:

2)适用場景

  • 業務流程長/多
  • 參與者包含其他公司或遺留系統服務,無法提供 TCC 模式要求的三個接口
  • 典型業務系統:如金融網絡(與外部金融機構對接)、網際網路微貸、管道整合、分布式架構服務內建等業務系統
  • 銀行業金融機構使用廣泛

3)三種異常

  1. 空補償:原服務未執行,補償服務執行了
出現原因:
  • 原服務逾時(丢包)
  • Saga 事務觸發復原
  • 未收到原服務請求,先收到補償請求
  1. 懸挂:補償服務比原服務先執行
  • 原服務逾時(擁堵)
  • Saga 事務復原,觸發復原
  • 擁堵的原服務到達
  1. 幂等:原服務與補償服務都需要保證幂等性

4)優點

  1. 一階段送出本地資料庫事務,無鎖,高薪能
  2. 補償服務即正向服務的 “反向”,高吞吐
  3. 參與者可異步執行,高吞吐

(4)XA

XA 模式是 ​

​Seata​

​ 将會開源的另一種無侵入的分布式事務解決方案

1)過程

2)優點

  1. 無侵入
  2. 将快照資料和行鎖等通過 XA 指令委托給了資料庫來完成

三、問題

(1)如何選擇模式?

四種分布式事務模式,分别在不同的時間被提出,每種模式都有它的适用場景

AT 模式是無侵入的分布式事務解決方案,适用于不希望對業務進行改造的場景,幾乎0學習成本。

TCC 模式是高性能分布式事務解決方案,适用于核心系統等對性能有很高要求的場景。

Saga 模式是長事務解決方案,适用于業務流程長且需要保證事務最終一緻性的業務系統,Saga 模式一階段就會送出本地事務,無鎖,長流程情況下可以保證性能,多用于管道層、內建層業務系統。事務參與者可能是其它公司的服務或者是遺留系統的服務,無法進行改造和提供 TCC 要求的接口,也可以使用 Saga 模式。

XA模式是分布式強一緻性的解決方案,但性能低而使用較少。

四、資料

​​https://linux.cn/article-11164-1.html​​