分布式事務

2021-10-07 19:13:08 字數 1476 閱讀 6693

xa是由x/open組織提出的分布式事務的規範

由乙個事務管理器(tm)和多個資源管理器(rm)組成

提交分為兩個階段: prepare和commit

第一階段

第二階段

保證資料的強一致性

commit階段出現問題,事務出現不一致,需人工處理

效率低下,效能與本地事務相差10倍

demo

1.依賴

org.springframework.boot

spring-boot-starter-jta-atomikos

2.新增配置 (資料來源和事務管理器)

@configuration

public class configdb131

@bean("sqlsessionfactorybean131")

public sqlsessionfactorybean sqlsessionfactorybean(@qualifier("db131") datasource datasource) throws ioexception

@bean("xatransaction")

public jtatransactionmanager jtatransactionmanager()

}

service.xml中配置,預設支援分布式事務

a給b轉賬的例子,a和b在兩家不同的銀行,a賬戶減200元,b賬戶加200元,兩個操作要保證原子性,要麼全成功、要麼全失敗

由於a和b在兩家不同的銀行,所以存在分布式事務的問題,轉賬介面需要提供補償機制

優點:邏輯清晰、流程簡單

缺點:資料一致性比xa還要差,可能出錯的點比較多

tcc屬於應用層的一種補償方式,程式設計師需要寫大量**

採用base原理,保證事務最終一致

在一致性方面, 允許- -段時間內的不一致,但最終會一致

在實際的系統當中,要根據具體情況,判斷是否採用

不依賴定時任務,基於mq更高效、更可靠

適合於公司內的系統

不同公司之間無法基於mq,本地訊息表更適合

分布式 分布式事務

是資料庫執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。事務的acid四大特性 原子性 atomicity 事務作為乙個整體被執行。一致性 consistency 從乙個一致的狀態轉換到另乙個一致的狀態。隔離性 isolation 多個事務併發執行時,併發事務之間互相影響的程度。永續性 d...

分布式事務 分布式事務的實現

如果在多個服務中需要對不同的資料庫進行操作。因為不同服務操作的資料庫都不同,所以保證在同乙個事務中完成操作顯然是不科學的。那實現分布式事務的思想 1 方法入口,建立一條日誌記錄,狀態定義為初始狀態,即儲存本條日誌記錄 可以儲存在資料庫中,也可以寫出到本地磁碟檔案 2 可以在非同步執行緒或在定時任務中...

分布式之分布式事務

被人問到分布式事務,之前學rabbitmq 的時候學到過rabbitmq 高階的事務,因為沒有用過,所有沒有回答好。這裡總結一下。1.單機版事務。事務的四大特性 acid a.原子性 b.一致性 c.隔離性 d.永續性 單機事務可以通過設定事務的隔離級別 參見spring 的事務隔離級別 2.分布式...