seata 下載及安裝 分佈式事務實戰方案彙總 https://www.cnblogs.com/yizhiamumu/p/16625677.html 分佈式事務原理及解決方案案例

分佈式事務 參考文章:

分佈式事務實戰方案彙總 https://www.cnblogs.com/yizhiamumu/p/16625677.html

分佈式事務原理及解決方案案例 https://www.cnblogs.com/yizhiamumu/p/16662412.html

 

 

Seata術語

官網地址:https://seata.io/zh-cn/docs/overview/terminology.html

在瞭解Seata之前,我們先來了解一下 Seata 幾個關鍵的概念:

TC(Transaction Coordinator)事務協調者:
維護全局和分支事務的狀態,驅動全局事務提交或者回滾

TM(Transaction Manager) 事務管理者: 發起者,同時一個RM的一種,定義全局事務的範圍,開始全局事務,提交或回滾全局事務。

RM(Resource Manager) 資源管理器: 參與事務的微服務,管理分支事務處理的資源,與TC交談以註冊分支事務和報告分支事務的狀態,並驅動分支事務提交或回滾

Seata 2PC

一階段: 業務數據和回滾日誌記錄在同一個本地事務中提交,釋放本地鎖和連接資源。

二階段: 提交異步化,非常快速地完成。回滾通過一階段的回滾日誌進行反向補償。

一階段本地事務提交前,需要確保先拿到 全局鎖 。拿不到全局鎖 ,不能提交本地事務。
拿全局鎖的嘗試被限制在一定範圍內,超出範圍將放棄,並回滾本地事務,釋放本地鎖。

在數據庫本地事務隔離級別讀已提交或以上的基礎上,Seata(AT 模式)的默認全局隔離級別是 讀未提交

如果應用在特定場景下,必需要求全局的 讀已提交 ,目前 Seata 的方式是通過 SELECT FOR UPDATE 語句的代理。

Seata執行流程分析:

每個RM 使用 DataSourceProxy鏈接數據路,目的是使用 ConnectionProxy,使用數據源和數據代理的目的是在第一階段將 undo和業務數據放在一個本地事務中提交,這樣就保存了只要有業務操作就一定會有dudo日誌,

在第一階段中,undo存放了數據修改前後修改的值,是爲了事務回滾做好準備,在第一階段完成就已經將分支事務提交了,也就釋放了鎖資源。

TM開啓全局事務開始,將XID全局事務ID放在事務上下文中,通過feign調用將XID傳入下游服務器中,每個分支事務將自己的 Branch ID分支事務ID和XID進行關聯,

在第二階段全局事務提交,TC會通知各個分支參與者提交分支事務,在第一階段已經提交了分支事務,在這裏各參與者只需要刪除undo即可,並且可以異步執行。

如果某一個分支事務異常了,第二階段全局事務回滾操作,TC會通知各個分支參與者回滾分支事務,通過XID和Branch-ID找到對應的回滾日誌,通過回滾日誌生成的反向SQL執行,完成分支事務回滾到之前的狀態。

 

Seata 下載安裝

下載地址:https://github.com/seata/seata/releases

 

解壓後找到conf目錄

 

 

 

我們在啓動seata之前,首先要啓動nacos,其實也很簡單,只需要下載nacos後啓動就行,不知道nacos怎麼操作的看這裏的介紹nacos基礎介紹,啓動好之後,我們再來啓動seata,bin目錄下seata-server.bat

如果我們看到8091端口在監聽,並且在nacos看到服務註冊上去了,就表示我們seata啓動成功了

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章