1、培訓過程中,如有部分內容理解不透或消化不好,可免費在以后培訓班中重聽; 2、培訓結束后,授課老師留給學員聯系方式,保障培訓效果,免費提供課后技術支持。 3、培訓合格學員可享受免費推薦就業機會。
作為一個開發者,避免不了定時任務的問題,最粗暴和簡單直接的解決方案就是crontab。當然在機器少,任務不多,定時任務之間關聯少的情況下,crontab效率還是比較高和便捷的。但當機器越多、定時任務越多,各個任務聯系越緊密的情況下,用crontab進行定時任務的管理配置,就會非常混亂,嚴重影響工作效率。
?
機器多、定時任務多的情況下,就會遇到以下問題:
1、每個服務器各個用戶下的crontab任務管理混亂,生命周期無法統一協調管理
2、定時任務運行異常告警難以統一對接
3、任務A和任務B如果存在互斥關系,crontab很難進行互斥處理
4、隨著時間增長,當定時任務達到幾千上萬的時候,定時任務就非常難以管理,線上跑了多個定時任務,每個定時任務什么時候運行,屬于哪個應用和哪個開發負責等等問題變得很難解決。
Linux原生Crontab調度系統和Quartz對比:
1、執行粒度方面:
Crontab:進程調度
Quartz:線程調度
線程調度優勢:一是更節省資源,二是可以在進程內做數據交換,做數據交換這點很重要。
2、平臺依賴性:
Crontab支持Linux系統
Quartz由于是Java實現,所以支持跨平臺。
3、調度操作集上:
Quartz的設置更為靈活,可以很方便的通過代碼完成各種自定義需求,而且完全閉包Crontab。
但是Crontab的最小調度單元為分鐘級,而Quartz可以更細,Crontab實現自定義需求比較麻煩。
4、Job監控方面:
Quartz支持Listener,對job運行情況監控很方便,并且能用JobStores進行調度信息的持久化(內存、DB均可),進而可以實現job可視化
5、高可用:
Quartz支持分布式集群,這一點很重要,而且實現很方便。
為什么要用分布式集群任務調度?
想象一下,現在有 A 、B、 C ?3 臺機器同時作為集群服務器對外統一提供 SERVICE,3 臺機器上各有一個 QUARTZ ?Job,它們會按照即定的 SCHEDULE 自動執行各自的任務。由于三臺SERVER 里都有 QUARTZ ,因此會存在重復處理 TASK 的現象。一般的解決方案是只在一臺服務器上裝 QUARTZ ,其它兩臺不裝,這樣的話其實就是單機了,quartz會存在單點問題,一旦裝有quartz的服務器宕了,服務就無法提供了。當然通過改 QUARTZ JOB 的代碼也可以實現,但是這對開發人員要求比較高,而且可能會出現其他問題。然而quartz本身就提供了很好的集群方案。quartz集群需要數據庫的支持(JobStore TX或者JobStoreCMT),從本質上來說,是使集群上的每一個節點通過共享同一個數據庫來工作而達到高可用的。分布式集群任務調度,quartz是一個比較好的選擇。簡單,強大,穩定。
分布式集群時有個問題,就是所有服務器時鐘應當要同步,以免出現離奇且不可預知的問題。
本課程從最開始的quatz框架講起,由淺到深,從使用到結構分析,再到源碼分析,深入解析quatz、spring+quatz,并且會講解相關原理, 讓大家充分的理解這個框架和框架的設計思想。由于互聯網的復雜性,為了滿足我們特定的需求,需要對spring+quatz進行二次開發,整個二次開發過程都會講解。?
課程大綱:
1、分布式任務調度需求說明
2、分布式任務調度之quartz初體驗
3、分布式任務調度Trigger之simpleTrigger
4、分布式任務調度Trigger之DailyTimetrigger和calendartrigger
5、分布式任務調度Trigger之crontrigger
6、分布式任務調度job和jobdetail講解
7、分布式任務調度Schduler講解
8、分布式任務調度quartz源碼解析之建造者模式
9、分布式任務調度quartz源碼解析之scheduler源碼解析
10、分布式任務調度quartz源碼解析之scheduler源碼分析總結
11、分布式任務調度之觸發器、調度器建造者源碼分析?
12、分布式任務調度之觸發器建造者、各類調度器建造者源碼分析?
13、分布式任務調度之job源碼分析?
14、分布式任務調度之JobRunShell源碼分析?
15、分布式任務調度之spring+quartz整合?
16、分布式任務調度之spring+quartz源碼解析之事件驅動模型原理講解?
17、分布式任務調度之spring+quartz源碼解析之事件驅動模型代碼講解?
18、分布式任務調度之spring+quartz源碼解析之生命周期機制混合使用講解
19、分布式任務調度之spring+quartz源碼解析之生命周期機制混合使用代碼講解?
20、分布式任務調度之Spring+quatz源碼深度剖析?
21、分布式任務調度之Spring+quatz源碼解析總結?
22、分布式任務調度之二次開發需求講解?
23、分布式任務調度之二次開發代碼編寫1?
24、分布式任務調度之二次開發代碼編寫2?
25、分布式任務調度之二次開發代碼編寫3?