xxl-job的調度中心爲高可用的集羣部署,那麼是如何保證調度的一致性,不會出現多個機器同時觸發一個任務,導致任務重複執行。調度中心通過DB鎖,保持集羣分佈式調度的一致性,一次任務只觸發一次。爲了避免多個調度器同時調度任務,通過數據庫的悲觀鎖(for update).
可以參看 JobScheduleHelper類代碼
1 setAutoCommit(false)關閉隱式自動提交事務,
2 啓動事務select lock for update(顯式排他鎖)
3 讀db任務信息 -> 拉任務到內存時間輪 -> 更新db任務信息
4 commit提交事務,同時會釋放for update的排他鎖(悲觀鎖)