PowerDotNet平臺化軟件架構設計與實現系列(06):定時任務調度平臺

定時任務是後端系統開發中少不了的一個基本必備技能。

傳統的實現定時任務的方式有很多種,比如直接使用操作系統的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

https://www.xuxueli.com/xxl-job/

https://www.hangfire.io/

https://shardingsphere.apache.org/elasticjob/index_zh.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章