定时任务调度及优化
一、場景描述:XXLJOB每隔三小時定時處理一批數據,這批數據可達到幾千萬以上,這是kafka監聽消息的截圖。
這種設計存在很大的一個問題,定時任務觸發的時候,都是一個很大的峰值,這個時候對服務器資源消耗最大,而且存在很多空閑的時間是沒有任務處理的狀態。爭對這個問題,進行了分析和思考。
方案1:使用延時隊列,每個處理的請求都放到延時隊列里面,時間到了在做消費,這種情況不需要使用定時任務,就可以合理的分攤系統資源,提升調度能力,但是kafka天生不支持延時隊列的場景,不像其他MQ中間件可以配置。于是這種方案放棄。
方案2:借鑒滑動時間窗口的思想,將定時任務時間調短,調成半小時執行一次,每次執行的時候,執行三小時前半個小時時間段的數據。
例子: 10:00:00 觸發定時任務,執行7:00:00 -- 7:30:00時間段的數據;?
????????????10:30:00 觸發定時任務,執行7:30:00 -- 8:00:00時間段的數據;?
這里還可以設計的更加靈活,可以將執行幾個小時前和執行的時間段提取到nacos中,在結合xxjjob也可以動態調整時間,以達到整個調度時間是可以自由控制的。實現的時候要注意時間段重合的問題。
總結
- 上一篇: 2017-2018-2 20179216
- 下一篇: 手机卡从2G升级到4G,那GSM、WCD