1、@薛帥領 提問:
多數據源切換後,增加事務但不起作用(切數據源是執行方法後才切換的),本地事務及 Seate 分佈式事務也不可以,這個有什麼好的解決方案嗎?
A:Spring 本地事務註解本身就不支持多數據源事務,且如果你開啓了本地事務,之後並不會進入你的切換數據源的切面。在多數據源下,去掉本地事務註解就好了。用 globaltransactional 註解在多數據源的入口加上,多個數據源都被 Seata 代理的話,就會保證多數據源的事務。
2、@李天宇 提問
如果在分佈式事務中,另一個線程做批處理 update 之類的,是否會鎖住呢?
A:不會,另一個線程也要記得加上 globaltransactional 註解就行了。在 a 線程要提交之前要去嘗試拿到它修改數據的全局鎖的,如果 a 拿到了,但是還沒到二階段提交,b 也是要去嘗試拿,拿不到就會不執行 SQL ,等待全局鎖釋放了,也就是 a 發起的事務結束了,b 才能執行 SQL 提交。這樣就保證了利用全局鎖(粒度行級),來達到隔離性。
Seata:https://github.com/seata/seata
SOFA 線程池支持 ScheduledThreadPoolExecutor 與 ThreadPoolTaskScheduler
新增 SofaConfigs 支持統一的配置獲取
新增 LogCode2Description 支持統一的錯誤碼獲取
重構線程池實現,支持更豐富的監控數據
所有組件統一 spce 屬性獲取邏輯
修復配置日誌輸出到控制檯時不生效的問題
本文分享自微信公衆號 - 金融級分佈式架構(Antfin_SOFA)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。