關於非分布式事務和資金字段修改的併發問題記錄

2021-08-30 13:22:04 字數 554 閱讀 8231

1.在非分布式的介面級呼叫,如spring 的註解注入或者bean注入。他的事務是可以配置傳播屬性的。既,在同一專案下,如果a介面通過,b介面通過,c介面異常,在配置預設傳播屬性=required。c介面異常會導致abc均回滾。

需要注意的是,因為是介面級的呼叫,每個想要回滾的介面都要配置事務,以及傳播屬性為required

2.關於資金修改的併發問題,三種方式,樂觀鎖,悲觀鎖,和變數累加。

樂觀鎖比方說:置乙個version,每次修改,在where中version = 原version,set 的version= version +1

悲觀鎖則是:用forupdate 或者其他的方式進行鎖表或者鎖庫,在修改的時候,不允許其他的**更改。缺點是,不允許同時更改導致效能下降。

在同種業務型別修改,比如,某一賬戶退款介面,也可以在開頭加乙個分布式鎖,既,其他的介面沒有該鎖,還是可以改某一賬戶的其他的金額字段,但是退款相關字段,或者該退款介面的多執行緒呼叫,能有效解決重複併發的問題,這裡防止的不是金額,而是重複處理,浪費效能。

特此記錄

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

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

分布式技術之分布式ID和分布式事務

mycat不支援只能使用在sharding jdbc中 public class mysharding implements preciseshardingalgorithm spring.shardingsphere.sharding.tables.t order.actual data node...

本地事務和分布式事務

1 本地事務acid 和 cap中的ca區別 本地事務 a 原子性 乙個事務中所有操作,要不全部完成,要不全部不完成,事務在執行過程中發生錯誤,會被回滾到事務開始前的狀態,就像這個事務沒有被執行過一樣。c 一致性 事務的一致性指在乙個事務執行之前和執行之後資料庫都必須處於一致性狀態,如果事務成功完成...