您好,登錄后才能下訂單哦!
這篇文章主要介紹“分布式調度框架xxl-job的作用是什么”,在日常操作中,相信很多人在分布式調度框架xxl-job的作用是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”分布式調度框架xxl-job的作用是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
1、定時任務使用場景
定時備份數據,訂單超時自動取消,按時間段統計信息,優惠券要過期給用戶發送一個提醒等等。
2、定時任務的基本概念
執行器:負責執行任務。
調度器:根據配置(cron表達式)詳情,告知執行器去執行任務
任務:自己的業務實現,比如優惠券要過期給用戶發送一個提醒。
3、spring中使用定時任務。
@Slf4j @Component //使spring管理 @EnableScheduling //定時任務注解 public class Timer { @Autowired IPayRecordService iPayRecordService; @Scheduled(cron = "0/10 * * * * ?") public void notifyOrder(){ log.info("timer notifyOrder ...."); try { iPayRecordService.notifyOrder(); }catch (Exception e){ log.error("notifyOrder error:",e); } } }
4、spring定時任務存在的問題
不支持集群部署:比如你啟動三個實例,每個實例都會去觸發執行器去執行“優惠券要過期給用戶發送一個提醒”這個任務,這時候就產生了重復執行的問題。 通常是單機部署的,單機就存在掛掉的風險。
不支持失敗重試:出現異常后任務終結,不能根據執行狀態,控制任務重新執行
不支持動態管理:不支持不重啟任務情況下,關閉和啟動任務,修改cron表達式等。
無報警:任務失敗后不能發送報警通知
不支持分片任務
等等。
5、分布式定時任務框架的實現思路
調度中心會配置 cron表達式,路由策略,處理類的bean實例,比如demoHandler。
路由策略意思就是如何選擇執行器,比如隨機選擇一個,輪訓等。調度中心通過RPC 通知執行器去執行任務,會帶上處理bean的名字(demoHandler),進入執行器的任務隊列,執行器的執行引擎會從任務隊列里取出任務,根據bean 的名字獲取對應的bean實例進行執行。
執行器需要向調度中心發生心跳,對于長時間沒有收到心跳的執行器,調度中心會將其剔除。
6、為什么要用XXL-JOB?
XXL-JOB是一個輕量級分布式任務調度平臺,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。現已開放源代碼并接入多家公司線上產品線,開箱即用。
目前已有多家公司接入xxl-job,包括比較知名的大眾點評,京東,優信二手車,北京尚德,360金融 (360),聯想集團 (聯想),易信 (網易)等等....
7、為什么不用quartz?
Quartz存在一些問題:
問題一:調用API的的方式操作任務,不人性化;
問題二:需要持久化業務QuartzJobBean到底層數據表中,系統侵入性相當嚴重。
問題三:調度邏輯和QuartzJobBean耦合在同一個項目中,這將導致一個問題,在調度任務數量逐漸增多,同時調度任務邏輯逐漸加重的情況下,此時調度系統的性能將大大受限于業務;
問題四:quartz底層以“搶占式”獲取DB鎖并由搶占成功節點負責運行任務,會導致節點負載懸殊非常大;而XXL-JOB通過執行器實現“協同分配式”運行任務,充分發揮集群優勢,負載各節點均衡。
XXL-JOB彌補了quartz的上述不足之處。
8、XXL-JOB高可用調度中心會部署多臺xxl-job-admin,如何保證多個調度中心分發任務只分發一次?(版本V2.0.1)
調度采用中心式設計,“調度中心”基于集群Quartz實現并支持集群部署,可保證調度中心HA;并通過數據庫悲觀鎖來實現任務在集群的多臺機器中只執行一次
到此,關于“分布式調度框架xxl-job的作用是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。