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