定時任務是後端系統開發中少不了的一個基本必備技能。
傳統的實現定時任務的方式有很多種,比如直接使用操作系統的Timer和TaskSchedule,或者基於Quartz、HangFire、xxl-job、es-job等優秀開源任務調度框架。
PowerDotNet在借鑑現有任務調度框架Quartz的基礎上,配合PowerDotNet自研的服務治理平臺,加以改進和優化,實現了一套非常易用的任務調度平臺系統。
接入PowerDotNet的定時任務調度平臺,開發人員只要專注開發API接口,然後點點按鈕配置下CRON表達式即可,完全感受不到Quartz的存在,距離“動動鼠標解決問題”的目標更近一步了,咩哈哈。
環境準備
1、(必須).Net Framework4.5+
2、(必須)關係型數據庫MySQL或SqlServer或PostgreSQL或MariaDB四選一
3、(必須)Quartz.Net2.3.2或更高版本
4、(必須)PowerDotNet配置中心Power.ConfigCenter
5、(必須)PowerDotNet註冊中心Power.RegistryCenter
6、(必須)PowerDotNet緩存平臺Power.Cache,後續文章詳細介紹
7、(必須)PowerDotNet消息平臺Power.Message,主要用於發送預警信息,後續文章會有介紹
8、(必須)PowerDotNet人員管理平臺Power.HCRM,後續文章詳細介紹
一、部署管理
利用數據庫鎖特性,支持分片多集羣,實現了定時任務高可用和分片彈性部署。
二、任務管理
定時任務管理,用戶(開發者)只需要點點按鈕即可實現定時任務配置部署,省去了開發者很多麻煩。
定時任務通過cron表達式來設置定時時間
定時任務基於PowerDotNet的服務治理框架,有兩種運行模式:
推薦使用RESTful接口模式。
類模式一般用於處理耗時較長的任務。不過根據經驗,有些耗時較長的任務,可以通過簡化業務邏輯、分頁、批量多次處理,改造爲耗時較小的適合使用RESTful接口模式的定時任務。
有一類數據同步結轉非常耗時的任務,耗時多少完全看數據量,這類數據處理任務的解決方案,將在下篇文章中介紹。
三、日誌管理
PowerDotNet開發的每個後端系統都自動集成日誌系統,任務調度平臺的後端調度日誌還可以做一下統計功能。
任務調度統計功能可以基於日誌,也可以獨立設計埋點實現。
四、任務統計
1、單一任務調度統計
2、所有任務調度統計
爲了防止數據量過大,可以對統計數據進行定時或者手動清理。
參考:
http://www.quartz-scheduler.org/
https://github.com/quartz-scheduler/quartz.git