乐趣区

关于java:如何实现自己的任务调度系统开源软件诞生18

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

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

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

博主开源地址:

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

GitHub:https://github.com/redragon1985/redragon-erp

什么是任务调度?

任务调度这个词貌似很高大上,其实不难理解。咱们晓得一个利用它执行工作的形式默认是实时且同步的,而所谓的任务调度就是让工作非实时的或异步的进行。换一个词也能够把它了解成打算工作或定时工作。

它解决了什么问题

要剖析任务调度所解决的问题,先要看这个工作的特点以及须要如何执行。首先这类工作个别是零碎依据肯定的预设逻辑去代替人工实现的一件事。其次这类事无需实时实现或须要在某个特定工夫实现,工作启动后只需在后盾静默执行,执行实现后有条件的告诉用户或用户自主查问执行后果即可。由此可见,以上需要是传统的利用无奈做到的,所以就须要任务调度零碎去实现它。

为什么独自研发调度零碎?

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

那就须要先来剖析下信息化零碎的特点,首先信息化零碎从功能设计的角度是扩散的,即一个我的项目或模块个别只实现一件事的状况下,咱们从须要设计很多很多的利用能力满足用户需要。就拿 ERP 举例,ERP 蕴含打算估算、订单治理、库存治理、财务管理等一系列的模块或零碎,而这些零碎都是与业务间接关联的,所以哪个零碎也离不开打算工作的性能,如果依照上述形式,咱们必不可少的要将每个我的项目中都整合一套残缺的打算工作组件能力满足咱们的需要。这种做法不仅开发时更加麻烦、同时也带来了保护或扩大复杂度的指数晋升,这种设计的危险可想而知。所以独立的任务调度零碎就应运而生。

设计思路探讨

那么咱们如何设计这个零碎呢?咱们来重点关注一下几点。

1、 对立灵便的工作配置

(1)工作实现可配置:工作的具体逻辑能够通过办法或存储过程去实现,而后通过配置形式依据不同参数去自定义不同的工作需要。

(2)定时执行配置:定义好工作的逻辑后咱们就须要配置执行逻辑,什么工夫执行,是固定工夫还是循环,何时开始何时完结,单次执行还是屡次执行都须要具体的配置。

(3)线程配置:工作须要同步执行还是异步执行,是守护线程还是非守护线程。异样解决机制等都须要别离配置好。

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

2、 便捷的工作启动和反馈

(1)启动工作:所有的工作配置好当前咱们就须要启动工作,通过 API 的形式启动是最优的抉择。

(2)反馈机制:对于工作的执行成果要对用户有一个反馈机制,给用户告诉、间接回调或反写都是能够抉择的形式。

3、 监控工作执行状况和日志追踪

(1)工作监控:工作的执行过程不是一帆风顺的,可能胜利,也可能呈现执行异样、意外终止、人工终止等多种状况,所以须要依据工作的执行状况显示执行状态,并依据须要,让用户可重启或持续工作。

(2)日志追踪:如果呈现从新执行依然无奈胜利的状况,那么少数肯定是呈现了程序异样,所以日志的记录就必不可少,可让保护人员依据日志解决问题并解决问题。

抛砖引玉的分布式

当一个任务调度零碎研发实现后,随着应用频率的减少,肯定会遇到瓶颈,所以咱们就会思考到部署多个任务调度零碎造成分布式,但部署多个零碎,就会波及到注册核心、负载、路由、数据同步等各种问题。本文只是在探讨如何设计任务调度零碎的性能,并不波及散布式调度的思路。在此不开展谈,只是抛砖引玉,有趣味的敌人能够深刻摸索。

后记

如果您对咱们正在做的开源软件感兴趣,欢送各种模式的单干,作为贡献者或间接退出咱们!让咱们一起打造一套开源的信息化解决方案。

【码云】或【GitHub】搜寻“赤龙 ERP”点击星标,亦可退出咱们!让咱们从小开始做点平凡的事!与开发者交换 kzca2000

退出移动版