分布式事務框架 seata初識

2021-10-01 21:42:59 字數 1295 閱讀 8843

事務,在資料庫中指的是運算元據庫的最小單位,往大了看,事務是應用程式中一系列嚴密的操作,所有操作必須成功完成,否則在每個操作中所作的所有更改都會被撤消。

那為什麼會有分布式事務呢?單機事務是通過將操作限制在乙個會話內通過資料庫本身的鎖以及日誌來實現acid.因為引入了分布式架構,所以事務的參與者、支援事務的伺服器、資源伺服器以及事務管理器分別位於不同的分布式系統的不同節點之上.簡單說就是多各資料庫之間無法保證保證各自的操作同時成功或同時失敗。

seata:****** extensible autonomous transaction architecture,簡易可擴充套件的自治式分布式事務管理框架,其前身是fescar。阿里巴巴gts的開源版實現,是一種分布式事務的解決方案。

transaction coordinator(tc):管理全域性的分支事務的狀態,用於全域性性事務的提交和回滾。

transaction manager(tm):事務管理器,用於開啟全域性事務、提交或者回滾全域性事務,是全域性事務的開啟者。

resource manager(rm):資源管理器,用於分支事務上的資源管理,向tc註冊分支事務,上報分支事務的狀態,接受tc的命令來提交或者回滾分支事務。

tm向tc請求發起乙個全域性事務,tc返回乙個代表這個全域性事務的xid。

xid在rpc中傳播給每乙個呼叫鏈中的服務。

每個rm拿到xid後向tc發起乙個分支事務,tc返回乙個代表這個分支事務的xid。

rm完成本地分支的業務,提交本地分支,並且報告給tc。

全域性事務呼叫鏈處理完畢,tm根據有無異常向tc發起全域性事務的提交或者回滾。

假設某個rm本地事務失敗。該rm自身驅動本地事務回滾,並且報告給tc。

tm檢測到了某個分支事務失敗,向tc發起全域性事務回滾。

tc給每乙個rm傳送訊息,通知它們全部回滾。

tc將全域性事務回滾的結果傳送給tm,全域性事務結束。

seata 的設計思路是將乙個分布式事務可以理解成乙個全域性事務,下面掛了若干個分支事務,而乙個分支事務是乙個滿足 acid 的本地事務,因此我們可以操作分布式事務像操作本地事務一樣。seata 的事務提交方式跟 xa 協議的兩段式提交在總體上來說基本是一致的,但xa 協議它依賴的是資料庫層面來保障事務的一致性,也即是說 xa 的各個分支事務是在資料庫層面上驅動的,由於 xa 的各個分支事務需要有 xa 的驅動程式,一方面會導致資料庫與 xa 驅動耦合,另一方面它會導致各個分支的事務資源鎖定周期長,所以效能較差。

上面說的是seata的模式模式at,seata也針對tcc做了適配相容,支援tcc事務方案,原理前面已經介紹過,基本思路就是使用侵入業務上的補償及事務管理器的協調來達到全域性事務的一起提交及回滾。

分布式事務框架seata

seata at模式 at模式和xa模式一樣,都是乙個兩階段提交的事務模型,不過和xa相比,做了一些優化,這個官網著重講解了一下at的原理,之後開一節著重看下一at模式的實現原理。saga模式 另外saga還提供了一下兩種補償恢復方式 saga的優勢 saga的實現方式 在以上支付下單的流程上乙個典...

seata分布式事務

分布式事務使用,組長有話說 1 跨服務呼叫的 兩邊都有改資料或新增資料的 都要加上本地事物 並且 發起方要加上 分布式事物 千萬別忘了啊 2 尤其是 呼叫mq的時候 3 我把用到mq的地方都加了分布式註解,漏的你們看一下。portal的託運單,確認下單後,先同步到oms,再從oms同步到tms 1....

seata 分布式事務

seata 是乙個分布式事務解決方案,內建了對at xa tcc saga的支援,主要由tc tm rm三類角色,tc 事務協調器 作為服務端,tm 事務管理器 和rm 資源管理器 工作在客戶端。seata最大程度的保證了對應用的透明。at模式 at模式是通過乙個兩階段提交的方式來管理事務,第一階段...