如何实现自己的任务调度系统?–开源软件诞生18

作者 : 开心源码 本文共1703个字,预计阅读时间需要5分钟 发布时间: 2022-05-13 共251人阅读

任务调度与ERP难舍难分–第18篇

用日志记录“开源软件”的诞生

【点亮星标】—-祈盼着一个鼓励

博主开源地址:

码云:https://gitee.com/redragon/redragon-erp

GitHub: redragon1985/redragon-erp

什么是任务调度?

任务调度这个词貌似很高大上,其实不难了解。我们知道一个应用它执行任务的方式默认是实时且同步的,而所谓的任务调度就是让任务非实时的或者异步的进行。换一个词也可以把它了解成计划任务或者定时任务。

它处理了什么问题

要分析任务调度所处理的问题,先要看这个任务的特点以及需要如何执行。首先这类任务一般是系统根据肯定的预设逻辑去代替人工完成的一件事。其次这类事无需实时完成或者需要在某个特定时间完成,任务启动后只要在后端静默执行,执行完成后有条件的通知客户或者客户自主查询执行结果就可。由此可见,以上需求是传统的应用无法做到的,所以就需要任务调度系统去实现它。

为什么单独研发调度系统?

从Java技术角度有很多定时任务的实现方式,比方Timer、ScheduledExecutor、Quartz,无论是哪种方式都可以简单的在一个项目中去集成定时任务的功能,而无需单独开发项目。那为什么我们在进行系统设计时,要提出任务调度系统这一思路呢?

那就需要先来分析下信息化系统的特点,首先信息化系统从功能设计的角度是分散的,即一个项目或者模块一般只完成一件事的情况下,我们从需要设计很多很多的应用才能满足客户需求。就拿ERP举例,ERP包含计划预算、订单管理、库存管理、财务管理等一系列的模块或者系统,而这些系统都是与业务直接关联的,所以哪个系统也离不开计划任务的功能,假如按照上述方式,我们必不可少的要将每个项目中都整合一套完整的计划任务组件才能满足我们的需求。这种做法不仅开发时更加麻烦、同时也带来了维护或者扩展复杂度的指数提升,这种设计的风险可想而知。所以独立的任务调度系统就应运而生。

设计思路讨论

那么我们如何设计这个系统呢?我们来重点关注一下几点。

1、统一灵活的任务配置

(1)任务实现可配置:任务的具体逻辑可以通过方法或者存储过程去实现,而后通过配置方式根据不同参数去自己设置不同的任务需求。

(2)定时执行配置:定义好任务的逻辑后我们就需要配置执行逻辑,什么时间执行,是固定时间还是循环,何时开始何时结束,单次执行还是屡次执行都需要详细的配置。

(3)线程配置:任务需要同步执行还是异步执行,是守护线程还是非守护线程。异常解决机制等都需要分别配置好。

(4)任务流程配置:有的时候我们不仅仅需要执行一个任务,可能需要执行一系列的任务,而任务的执行又是有先后之分的,这时候我们可以将一个一个配置好的任务串联成一个流程去执行。

2、便捷的任务启动和反馈

(1)启动任务:所有的任务配置好以后我们就需要启动任务,通过API的方式启动是最优的选择。

(2)反馈机制:对于任务的执行效果要对客户有一个反馈机制,给客户通知、直接回调或者反写都是可以选择的方式。

3、监控任务执行情况和日志追踪

(1)任务监控:任务的执行过程不是一帆风顺的,可能成功,也可能出现执行异常、意外终止、人工终止等多种情况,所以需要根据任务的执行情况显示执行状态,并根据需要,让客户可重启或者继续任务。

(2)日志追踪:假如出现重新执行依然无法成功的情况,那么多数肯定是出现了程序异常,所以日志的记录就必不可少,可让维护人员根据日志解决问题并处理问题。

抛砖引玉的分布式

当一个任务调度系统研发完成后,随着使用频率的添加,肯定会遇到瓶颈,所以我们就会考虑到部署多个任务调度系统形成分布式,但部署多个系统,就会涉及到注册中心、负载、路由、数据同步等各种问题。本文只是在探讨如何设计任务调度系统的功能,并不涉及分布式调度的思路。在此不开展谈,只是抛砖引玉,有兴趣的朋友可以深入探究。

后记

假如您对我们正在做的开源软件感兴趣,欢迎各种形式的合作,作为贡献者或者直接加入我们!让我们一起打造一套开源的信息化处理方案。

【码云】或者【GitHub】搜索“赤龙ERP”点击星标,亦可加入我们! 让我们从小开始做点伟大的事!

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 如何实现自己的任务调度系统?–开源软件诞生18

发表回复