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、所有任务调度统计

为了防止数据量过大,可以对统计数据进行定时或者手动清理。

参考:

//www.quartz-scheduler.org/

//github.com/quartz-scheduler/quartz.git

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

//www.hangfire.io/

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