PowerDotNet平台化軟件架構設計與實現系列(06):定時任務調度平台
- 2021 年 12 月 10 日
- 筆記
- architecture, DevOps, microservices, Sharding, System, WebApi, windows service, 定時任務, 服務, 架構, 系統, 設計
定時任務是後端系統開發中少不了的一個基本必備技能。
傳統的實現定時任務的方式有很多種,比如直接使用操作系統的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、所有任務調度統計
為了防止數據量過大,可以對統計數據進行定時或者手動清理。
參考:
//github.com/quartz-scheduler/quartz.git
//shardingsphere.apache.org/elasticjob/index_zh.html