面向生产环节的分时任务调度技术硏究

2022-07-07 04:06廖一星綦云华徐亮杨政
科技研究·理论版 2022年11期

廖一星 綦云华 徐亮 杨政

摘要:任务调度是操作系统的重要组成部分,而对于实时操作系统,任务调度直接影响其实时性能。任务调度能够在约定的特定时刻去执行任务的过程。所以有了任务调度即可解放更多的人力,而是由系统自动去执行任务。因而任务调度具有非常重要的作用。本文立足于生产环节,浅析分时任务调度技术。

关键词:任务调度;分时任务;调度技术

随着经济的迅速发展,市场竞争日益激烈。各企业想要在理解的市场竞争中发挥独有的优势,提高企业市场竞争力,就必须加大研发力度,不断研究开发出新产品并成功投入市场。所谓新产品是指在原理、结构、材料、性能等某一方面或几方面有新的改进的产品。新产品试制是在动态状态下开展的,每时每刻生产进程都要发生变化。它的研究重点主要在于资源的协调利用和管理体系的优化上,而并不是研究实际应用中特别重要的动态排产、分批方法等。

因此,这不太符合现实条件。所以企業任务调度平台(Enterprise task scheduling platform,简称ETSP)正是在市场竞争激烈的背景下提出,力求推动企业发展。企业任务调度平台能够充分利用quartz开源框架功能强大,具有应用灵活,易于集成的特点。而且,该调度平台能够很快地适应企业任务多而杂的现状,将企业中一系列调度任务集中管控再分布。例如:消息发送、数据备份、挖掘、报表分析、数据采集、同步、迁移以及加工等。此外,该调度平台还能够满足用户的个性化需求,它能够让用户可根据需要定制个性化任务调度,有利于有效监管任务调度运行。进而提高任务调度的运行效率,减轻IT人员的开发与维护工作,提高企业整体工作效率。

一、Quartz任务调度的基本工作原理

传统的企业任务调度一般采用Java SDK Timer和TimerTask类,或者使用Crontab+SQL来达到目的。但是这类任务调度使配置和代码比较分散,难以对其进行维护和监控,在执行过程没有保证。而且还会缺失错误恢复,在一些步骤复杂、分散,特别是在任务量大的情况下,依靠Java SDK Timer和TimerTask类,或者使用Crontab+SQL是很难进行工作的,达不到工作目的。然而,Java SDK Timer和TimerTask以及Crontab+SQL这些局限恰好是Quartz的独特优势。Quartz具有核心三要素,缺一不可:trigger、job和scheduler。在这核心三要素中,其中scheduler为执行调度的实际控制器,trigger、job是任务调度的元数据。trigger用于定义调度规则,即按照什么时间或周期去执行任务。一个job可以被很多个trigger关联,但是一个trigger只能关联一个job。Scheduler定义了很多接口和方法,它表示一个Quartz独立的运行容器,Trigger和JobDetail可以在Scheduler中被注册,并许可外程序部通过组及名称访问、控制容器中Trigger和JobDetail。同时,Quartz拥有完备的事件和事件监听体系,大部分组件都拥有触发后事件、调度器开始事件、关闭事件任务执行前事件等。

二、企业任务调度平台的设计与实现

1.企业任务调度平台功能设计

根据Quartz的工作原理,企业任务调度系统主要包括控制台、任务调度、工作管理等模块。用户在使用企业任务调度平台的时候,能够管控所有需要调度的任务。其中,一个任务包含N个工作,需要通过系统界面将N个工作进行工作编排,每个任务都基于一条运行规则按照工作编排的顺序执行。所以,要新建一个调度任务,可以按照以下的步骤:

首先,用户先在运行规则管理模块编排运行规则。然后经过规则测试成功之后,生成一条新的运行规则。例如,用户确定运行规则为“每1个月的第10个工作日,在0时0分0秒执行”,则规则编排器自动生成Quartz cron表达式“0 0 0 10W 1/1 ?”。而且用户在使用的过程中还能够自主选择该运行规则基于普通日历还是工作日历生成。工作日历的管理功能在工作管理模块中。

其次,在工作管理模块新建任务所需要执行的各项工作。每项工作生成一条新的工作项。这些工作项可以是企业其他系统提供的接口,也可以是一些用于数据处理的存储过程或者是用于数据加工的ETL(Extract-Transform-Load)工具提供的工作流。特别是用户在新建工作项的时候,必须合理配置该工作所属的工作组。合理配置工作组目的是为了更好的管理各项工作,进而提高工作效率。在合理配置工作组的时候,可以依据用途、类别以及系统界限来合理配置。例如,把所有涉及存储过程的工作项归为一类、系统接口归为一类;把所有涉及数据库处理的归为一类、程序执行归为另一类等。

最后,用户再利用已新建的运行规则及所需工作项,可以选择N个工作项来编排一个调度任务,并设置该任务的出错处理、节假日处理等事项。

2.企业任务调度平台的实现

对于复杂的企业级任务调度应用来说,其应当在程序的开发阶段把整个Quartz的源代码复制到具体的开发环境中。这样一方面可以通过修改或扩展Quartz一部分类来实现某些更为复杂的、Quartz本身尚不提供的接口功能;另一方面,还能够通过阅读源码,让企业以及用户全面了解Quartz的实现原理,有利于更加熟悉整个开发过程。

Quartz主要是依赖于一个关系型数据库管理系统来持久化存储数据任务。在Quartz中,企业任务本身实际的运行时间和耗费在每个监听器上的时间都会被直接记入到任务的执行时间上,使用大量的监听器将会直接影响它的执行效率。例如JobListeners、SchedulerListeners以及TriggerListeners等都会影响到Quartz的工作效率。而且,Quartz在与数据库交互方面只是做了很少的处理,它几乎所有的时间都花费在数据库上。因为基于JDBC的JobStore的速度很大程度上取决于对数据库连接的速度。所以,在企业任务调度平台实施过程中,为了提高平台性能,就必须遵循两个工作原则:一是为Quartz表建立索引;二是避免创建大量全局监听器。

可见,企业的任务调度规模越大、越复杂、越被频繁地执行,其从信息化、自动化中获取的经济利益也越大。本文通过对Quartz企业任务调度平台设计与实现的介绍,显而易见:企业想要有更高的资源使用效率、伸缩性以及更少的出错几率,完全可以充分利用Quartz来实现企业任务调度,进而推动企业发展。

结束语 总之,大数据时代的来临以及商业应用飞速发展,企业在生产以及销售等各个环节的任务调度效率也至关重要,将会影响企业的经济。因此,相关人员还必须从产品的生产环节着手,深入研究企业分时任务调度,并提出行之有效的措施提高企业分时任务调度技术,为企业可持续发展奠定坚实的基础。

参考文献:

[1]胡茂集. 基于quartz的企业任务调度平台的设计与实现[J]. 科技尚品, 2017, (2):181.

[2]耿勇,薛胜军.J2EE应用中任务的动态调度[J].开发研究与设计技术,2007,(6):1589-1674.

[3]王崟,董志勇.基于Quartz的网管系统任务调度的实现[J].电脑开发与应用,2011,24(7):23-24.