xxl-job一致性


                                                xxl-job一致性

xxl-job調度中心為了高可用是分布式部署,即中心化,那么如何保證調度的一致性,不會出現多台機器 同時觸發某一個任務同時執行

請尊重作者勞動成果,轉載請標明原文鏈接:

https://www.cnblogs.com/wanghongsen/p/12504490.html

 

一 如何保證xxl-job一致性

什么是一致性問題:“調度中心”通過DB鎖保證集群分布式調度的一致性, 一次任務調度只會觸發一次執行

為了避免多個服務器同時調度任務, 通過mysql悲觀鎖實現分布式鎖(for update語句) 

 

二 具體過程:

(可以參看JobScheduleHelper類代碼,關鍵代碼截圖如下)

如上圖所示

1 setAutoCommit(false)關閉隱式自動提交事務,

2 啟動事務select lock for update(顯式排他鎖) 

3 讀db任務信息 -> 拉任務到內存時間輪 -> 更新db任務信息

4 commit提交事務,同時會釋放for update的排他鎖(悲觀鎖)

當任務處理完畢后,釋放 悲觀鎖,准備等待下一次循環。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM