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://shardingsphere.apache.org/elasticjob/index_zh.html
PowerDotNet平台化软件架构设计与实现系列(06):定时任务调度平台的更多相关文章
- PowerDotNet平台化软件架构设计与实现系列(07):数据同步平台
上文介绍定时任务调度平台的时候提到,定时任务调度平台的类模式一般用于处理耗时较长的任务.但是根据经验,有些耗时较长的任务,可以通过简化业务逻辑.分页.批量多次处理,改造为耗时较小的适合使用RESTfu ...
- PowerDotNet平台化软件架构设计与实现系列(03):系统应用平台
为了复用和解耦,快速开发更多的系统和应用,我们对自己经常说的"系统"和"应用"进行更高级的提取和抽象. 十多年前入行,辗转至今,写过很多很多应用,个人喜欢分门别 ...
- PowerDotNet平台化软件架构设计与实现系列(01):基础数据平台
本系列我将主要通过图片和少许文字讲解通过个人自研的PowerDotNet进行快速开发平台化软件产品. PowerDotNet不仅仅是包含像Newtonsoft.Json.Dapper.Quartz.R ...
- PowerDotNet平台化软件架构设计与实现系列(05):ETCD分布式键值存储平台
ETCD目前在PowerDotNet已经被用于注册中心和配置管理(常见的配置中心在PowerDotNet中仅仅是一个小小的模块而已)中,作为基础设施的重要组成部分,ETCD的重要性不言而喻. 本文简单 ...
- PowerDotNet平台化软件架构设计与实现系列(12):HCRM人员管理平台
技术服务于业务,良好的技术设计和实现能够大幅提升业务质量和效率. PowerDotNet已经形成了自己的开发风格,很多项目已被应用于生产环境,可行性可用性可靠性都得到了生产环境验证. 编程是非常讲究动 ...
- PowerDotNet平台化软件架构设计与实现系列(02):数据库管理平台
为了DB复用和简化管理,我们对常见应用依赖的DB模块进行更高级的提取和抽象. 虽然一些ORM可以简化DB开发,但是我们还是需要进行改进和优化,否则应用越多,后期管理运维越混乱. 根据常见开发需要,数据 ...
- PowerDotNet平台化软件架构设计与实现系列(13):应用监控平台
本文再写一篇和具体业务逻辑几乎无关的公共服务应用监控平台.PowerDotNet自研的应用监控平台系统,是服务治理的重要拼图,和服务治理平台配合使用效果更好. 监控开源产品非常丰富,站在巨人的肩膀上, ...
- PowerDotNet平台化软件架构设计与实现系列(04):服务治理平台
系统和系统之间,少不了数据的互联互通.随着微服务的流行,一个系统内的不同应用进行互联互通也是常态. PowerDotNet的服务治理平台发源于早期的个人项目Power.Apix.这个项目借鉴了工作过的 ...
- PowerDotNet平台化软件架构设计与实现系列(08):缓存平台
几乎所有后端应用都会或多或少用到缓存,尤其是分布式缓存服务,以及和本地缓存构造的二级缓存.根据我们一贯的节约代码的风格,为了复用的目标,抽象出缓存平台,进行缓存管理. 考虑到很多公司都会自己造或者直接 ...
随机推荐
- Spring 之 BeanFactory 源码 - 接口分析
一.BeanFactory的基本类体系结构(接口为主):
- vi/vim 常用命令总结
目录 Linux vi/vim编辑 vim键盘图 vim的三种模式 命令模式.输入模式.输出模式 vim使用实例 vi/vim按键说明 第一部分:一般模式可用的光标移动.复制粘贴.搜索替换等 第二部分 ...
- PHP高级特性-反射Reflection以及Factory工厂设计模式的结合使用[代码实例]
PHP高级特性-反射以及工厂设计模式的结合使用 [结合 Laravel-Admin 代码实例讲解] 利用反射来实现工厂模式的生产而无需创建特定的工厂类 本文地址http://janrs.com/?p= ...
- 躺平吧,平铺的窗口「GitHub 热点速览 v.21.47」
作者:HelloGitHub-小鱼干 用 macOS 系统经常会遇到的一个问题便是多开窗口如何快速找寻的问题,本周特推项目 yabai 便是来解决这个问题的.直接把所有窗口平铺,是不是很"正 ...
- [hdu4747]Mex
首先计算出以1为左端点的所有区间的mex,考虑删除左端点仍然维护这个序列:设当前删除点下一次出现在y,y~n的mex不变,从左端点到y的点中大于删除值的点要变成删除值,因为这个是不断递增的,所以是一段 ...
- [hdu4582]DFS spanning tree
考虑每一条非树边都连接了祖先和儿子,类似于序列上的问题,从底往上算,当发现如果走到某个环的祖先,且这个环中还没有被选到,那么就将最浅的那条边贪心选择即可具体实现可以使用bitset维护当前子树的询问, ...
- asList和subList的缺陷
概述 在开发中我们经常使用asList去把一个数组转换为List.也存在通过subList.subMap.来对List.Map.Set来进行类似使用subString方法来对String对象进行分割处 ...
- SpringBoot引入第三方jar的Bean的三种方式
在SpringBoot的大环境下,基本上很少使用之前的xml配置Bean,主要是因为这种方式不好维护而且也不够方便. 因此本篇博文也不再介绍Spring中通过xml来声明bean的使用方式. 一.注解 ...
- vue项目中使用 SheetJS / js-xlsx 导入文件
原表格样式; 导入效果: 1. 安装 npm install xlsx 2. 在App.vue 中引入xlsx import * as XLSX from 'xlsx'; // 数据导出导入所需要的 ...
- Oracle JDK 下载、配置与验证
# 1. 解决官网下载JDK需要登录Oracle账号问题(JDK 8) JDK 1.8 官网下载地址: https://www.oracle.com/java/technologies/javase/ ...