1. 程式人生 > >springboot微服務多執行緒與事務問題

springboot微服務多執行緒與事務問題

springboot預設嵌入的容器是tomcat,tomcat是用執行緒池來處理網路請求的,所以在後臺開發業務介面時需要考慮多執行緒環境下一些常見的問題,比如資料同步。如果涉及到資料庫的操作時,常常會引入事務的問題,這時又必須考慮事務的隔離級別、事務的傳播級別。如果一個介面既涉及加鎖、又涉及事務,那麼在進行業務邏輯設計時就必須要考慮或者說意識到以下幾點:

1.通常事務的隔離級別是read-commited,一個事務只有提交後所做的改變才可以被其他事務讀取到。

2.事務的傳播級別一般是propagation-required,即子函式裡的事務會加入到父函式裡的事務中合成一個事務。

3.如果要通過加鎖來實現資料同步,且在鎖的範圍內涉及到事務,請確保鎖的範圍一定要覆蓋住事務的範圍。比如如果一個service層的介面處於事務管理範圍內,就需要在controller層加鎖,才能確保一個執行緒裡讀到的資料一定是另一個執行緒裡的事務提交之後的最新值。