解析Java定時任務的選型及改造問題
【前言】
項目中用到瞭定時任務,項目之初為瞭快速開發上線,當時直接采用最簡單的Linux自帶的crontab;項目逐漸維定下來時,針對定時任務自己進行瞭相關研究,並根據項目實際情況進行瞭對比以及相關改造。
【比一比&改一改】
一、項目目前定時任務現狀
1、 使用Linux系統的crontab直接調用Java服務
2、 優缺點:
(1)優點:部署簡單,由linux系統維護相對Java進程維護更加維定
(2)缺點:單機部署,風險大;出問題後排錯難度大;需要運維介入成本大
(3)總結:針對目前項目情況,弊大於利
二、Java主流三大定時任務框架優缺點
1、 選型時原則:少服務器 後期維護方便 增加任務省事 而且快捷 不涉及啟停服務
2、 Quartz
(1)優點:支持集群部署
(2)缺點:沒有自帶的管理界面;調度邏輯和執行任務耦合在一起;維護需要重啟服務
(3)總結:針對目前項目情況,利弊相同
3、 xxl-job
(1)優點:支持集群部署;提供運維界面維護成本小;自帶錯誤預警;相對elastic-job來說不需要額外的組件(zookeeper);支持調度策略;支持分片;
(2)缺點:相對Quartz來說需要多部署調度中心
(3)總結:針對目前項目情況,利大於弊
4、 elastic-job
(1)優點:支持集群部署;維護成本小
(2)缺點:elastic-job需要zookeeper,zookeeper集群高可用至少需要三臺服務器
(3)總結:針對目前項目情況,弊大於利
5、 小結:
綜合選型原則及三個定時任務框架的優缺點和目前項目的狀況,建議選用xxl-job
三、xxl-job一些特性
1、 xxl-job參考資料: https://www.jb51.net/article/234826.htm
2、 一些實用特性:
(1)執行失敗可以查看日志
(2)支持郵件報警
(3)路由策略支持輪詢等策略,可以減輕執行服務器的壓力
(4)輪詢時間等參數修改後立即生效
(5)執行器有問題或新增,快速識別
(6)調度中心高可用,調度中心可以集群部署(集群部署的機器時鐘必須同步),如果調度中心沒有做負載在執行器的配置中需要配多個地址,如果調度中心配置負載則執行器配置負載地址即可
(7)執行器高可用(執行器可以集群部署)
四、項目中加入xxl-job結合
1、 說明:以下Demo以短信發送服務定時任務為例
2、 建議:執行器根據不同的模塊建立工程(既方便統一部署又方便升級維護),比如:結算的定時任務可以組成一個工程;短信定時任務可以組成一個工程等
3、 項目中增加xxl-job
(1)在pom中增加依賴
(2)application.properties增加相關配置
(3)增加config解析類
(4)增加執行器
【總結】
在技術選型的時候既要站在當前也要考慮到未來,沒有什麼是永遠的唯一的,要結合具體的場景業務用發展的眼光去看待。
到此這篇關於解析Java定時任務的選型及改造問題的文章就介紹到這瞭,更多相關java定時任務內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- springboot應用訪問zookeeper的流程
- Java 高並發編程之最實用的任務執行架構設計建議收藏
- springboot默認的5種加載路徑詳解
- Zookeeper如何實現分佈式服務配置中心詳解
- zookeeper集群搭建超詳細過程