分布式事務和事務併發控制

2022-04-05 05:17:51 字數 1423 閱讀 8260

近期阿里開源了fescar分布式事務中介軟體, 值得期待. 

分布式事務是指乙個事務會涉及到到多個應用介面呼叫, 底層資料表涉及到多個, 但資料庫可以是乙個或多個, 它是傳統單資料庫事務在廣度上的延伸. 

事務併發控制, 在oltp關係型資料庫中, 事務併發控制往往是指事務的隔離性, 在本文中, 指的是應用層的併發事務控制, 常用的實現是樂觀鎖控制.

需要說明的是, 樂觀鎖解決的是事務併發控制, 它並不能解決分布式事務控制. 

業界的分布式事務控制技術

fescar 的情況

在單體應用中, 後台db往往只有乙個, 所以使用資料庫事務即可. 在微服務環境下, 乙個事務可能會涉及到多個微服務, db connection 不是乙個, db 也可能不是乙個, 分布式事務就是乙個大問題, 目前的解決方案對比:

0. 介面內部實現本地事務, 介面之間不支援分布式事務, 然後輔以定期對賬機制進行修正.

1. 目前的xa實現, **無侵入, 但對於併發和效能影響較大.

2. tcc實現, **有侵入, 改造難度較大, 但效能較好, 時效性很好

3. 基於訊息, 引入了訊息中介軟體, 方案較複雜.

******************************===

參考******************************===

從銀行轉賬失敗到分布式事務:總結與思考

easy transaction 框架作者的文章:「若干分布式事務框架」與「我的偏見」( 測試/分析)

如何選擇分布式事務形態(tcc,saga,2pc,基於訊息最終一致性等等)

各個開源框架的特性(框架支援/可靠日誌儲存介質)

spring cloud的分布式事務框架壓測第一輪

拜託,面試請不要再問我tcc分布式事務的實現原理!

分布式事務解決方案

分布式事務解決方案與適用場景分析

關於開源分布式事務中介軟體fescar

4.0 atomikos jta/xa全域性事務

6.0 柔性事務 :tcc兩階段補償型

spring cloud分布式事務終極解決方案**

本文推薦的方式是, 基於rabbitmq的最終一致性解決方案

微服務架構下分布式事務解決方案——阿里gts

sharding-sphere 也正在支援分布式事務,

apache servicecomb-pack (基於saga和tcc協議)的最終一致性解決方案

高併發 分布式事務

一 2pc two phase commitment 請求進來,生成全域性雪花id,存本地執行緒變數,存request請求頭部head 消費者請求走服務1,自己做hystrix熔斷 服務裡面以標籤配置事務,事務做切點的攔截,切面幹事情,開啟子執行緒,且把子執行緒阻塞,一旦放開阻塞走提交。請求主線程繼...

事務 分布式事務

事務 邏輯上的一組操作,要麼都成功要麼都失敗 事務的四個特性 acid 原子性,一致性,隔離性,永續性 事務的隔離級別 讀未提交 產生髒讀 讀已提交 不可重複讀 可重複讀 幻讀 mysql預設 序列化讀 效能最低 傳播行為 7個 七種傳播行為 required 支援當前事務,如果不存在,就新建乙個 ...

Redis 分布式事務和分布式事務鎖

講分布式事務鎖前的幾個概念 絕大部分請求是純粹的記憶體操作 非常快速 避免了與硬碟的接觸 豐富的特性 可用於快取,訊息,按key設定過期時間,過期後將會自動刪除 使用大量的hash思想的k v鍵值對,獲取效率為o 1 依靠非阻塞的io多路復用原則,使redis形成單執行緒去執行命令的伺服器,避免了不...