負載均衡下定時任務多次執行解決方案


正如標題所示,我們在日常開發當中總是會遇到類似於這樣的問題,之前也做過一種解決的方法,但是太過於片面,容錯性太差,這次結合網上的觀點,在我技術經理麗偉哥的幫助之下,總算是有了一個較為成熟的解決方案,希望能夠提供給大家作為參考,如果您有更好的,我非常願意去了解、溝通。和往常一樣,我比較喜歡寫有條理性、邏輯性的文檔。
傳統型的做法靠配置,系統文件中配置其中一台機器去執行,這樣就無意之中增加了維護的成本,所以這種做法不推薦。
  1. 數據庫中定義一張表,分別有id(存放seq序列)、定時任務記錄id、status(執行狀態)、op_date、op_ip、op_port,每次執行后去更新這張表的唯一一條記錄;
  2. 定時任務進來,先讀取記錄臨時狀態表,如果op_date和當前時間之間相差大於定時任務的時間的時候(這一步確定定時任務執行的時間間隔),繼續;
  3. 讀取seq和id比較,如果相差1(這一步確定了定時任務只執行一次),繼續;
  4. 執行定時任務具體操作,記錄操作status;
  5. 執行結束,將seq重新賦值給id。


免責聲明!

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



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