## 簡介
Quartz is a richly featured, open source job scheduling library that can be integrated within virtually any Java application - from the smallest stand-alone application to the largest e-commerce system.
## 幾種任務調度
* Timer,簡單無門檻,一般也沒人用。
* spring `@Scheduled`注解,一般集成于項目中,小任務很方便。
* 開源工具 Quartz,分布式集群開源工具,以下兩個分布式任務應該都是基于Quartz實現的,可以說是中小型公司必選,當然也視自身需求而定。
* 分布式任務 XXL-JOB,是一個輕量級分布式任務調度框架,支持通過 Web 頁面對任務進行 CRUD 操作,支持動態修改任務狀態、暫停/恢復任務,以及終止運行中任務,支持在線配置調度任務入參和在線查看調度結果。
* 分布式任務 Elastic-Job,是一個分布式調度解決方案,由兩個相互獨立的子項目 Elastic-Job-Lite 和 Elastic-Job-Cloud 組成。定位為輕量級無中心化解決方案,使用 jar 包的形式提供分布式任務的協調服務。支持分布式調度協調、彈性擴容縮容、失效轉移、錯過執行作業重觸發、并行調度、自診。
* 分布式任務 Saturn,Saturn是唯品會在github開源的一款分布式任務調度產品。它是基于當當elastic-job來開發的,其上完善了一些功能和添加了一些新的feature。目前在github上開源大半年,470個star。Saturn的任務可以用多種語言開發比如python、Go、Shell、Java、Php。其在唯品會內部已經發部署350+個節點,每天任務調度4000多萬次。同時,管理和統計也是它的亮點。
## 基本概念
1. Scheduler – 調度器,任務調度的主 API。
2. Job – 由調度器調度的任務需要實現的接口。
3. JobDetail – 用于定義任務的實例。
4. Trigger – 用于定義需要執行的任務和任務的執行時間。
5. JobBuilder – 用于定義/創建 JobDetail 實例。
6. TriggerBuilder – 用于定義/創建 Trigger 對象。
為什么需要 Job 和 Trigger?有些任務調度方案沒有分離 job 和 trigger,為什么 Quartz 需要分別定義 Job 和 Trigger 呢?主要基于以下考慮。
多個 Job 可以保存到同一個 Trigger,多個 Trigger 也可以關聯到相同的 Job。這種松耦合的設計的另外一個好處是可以在 trigger 過期后配置任務到調度器中,方便以后重新開始任務,而不用再次定義任務。也允許在不更換任務的情況下更改和替換 Trigger。
### 核心元素關系
- 一個job可以關聯多個trigger,但是一個trigger只能關聯一個job。
- trigger、job、jobDetail為元數據,Scheduler為實際進行的調度控制器;
- 寫在前面
- 如何閱讀源碼
- 第一部分 開源框架
- Netty
- 啟動過程
- SpringSecurityOauth2
- Quartz
- quartz啟動原理
- quartz定時調度任務觸發流程
- 第二部分 優質中間件源碼分析
- Canal
- Canal是如何偽裝為mysql的slave的?
- canal源碼調試
- Sentinel
- 核心概念梳理
- 滑動窗口實現原理
- jvm-sandbox
- jvm-sandbox-repeater
- Windows環境安裝
- 結果比對
- 第三部分 優質行業項目源碼分析
- 第一章 分庫分表實踐
- sharding-jdbc
- 第二章 DDD領域驅動
- 享同科技DDD開源框架
- J-IM
- 功能測試
- 悟空CRM
- 項目搭建
- 默認密碼
- dataX-web
- 項目搭建
- 部署報錯
- dolphinscheduler
- awescnb
- geek
- chrome插件-funds
- 優質開源項目備忘