基于quartz的企业任务调度平台的设计与实现

来源 :科技尚品 | 被引量 : 0次 | 上传用户:duyalengp
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:本文在阐述quartz解释、技术要素和优势的基础上,探索在J2EE架构下使用quartz技术实现企业任务调度平台的途径。
  关键词:quartz;企业任务调度平台
  1 前言
  随着大数据时代的来临以及商业应用地飞速发展,利用java API实现的传统离散的任务调度应用已无法满足企业在动态定制、工作效率以及统一、集中管控等方面提出的需求。企业任务调度平台(Enterprise task scheduling platform,以下称ETSP)正是在这样的背景下提出,该平台充分利用quartz开源框架功能强大,应用灵活,易于集成的特点,适应企业任务多而杂的现状,将企业中诸如消息发送、数据备份、挖掘、报表分析、数据采集、同步、迁移、加工等一系列任务集中管控,并让用户可根据需要定制个性化任务调度,有效监管任务调度运行,降低出错概率,提高运行效率,减轻企业IT人员的开发与维护工作。
  2 Quartz任务调度的基本实现原理
  传统离散的企业任务调度或使用Java SDK Timer和 TimerTask类,或使用Crontab+SQL来达到目的,这类任务调度使配置和代码分散在多处,难以维护和监控,执行过程没有保证,缺失错误恢复,在一些步骤复杂、分散,任务量大的情况下,很难进行扩展。这些局限恰恰是Quartz的优势。
  Quartz完全基于Java实现。它有强大的调度功能,支持丰富多样的调度方法,并具有以下特点:具有强大容错及负载均衡能力,能被集成到任何独立的应用中,可在servlet容器或应用服务器中实例化,甚至成为独立程序为集群;程序员可通过RMI运用Quartz。
  Quartz的核心三要素是trigger、job和scheduler,其中scheduler为执行调度的实际控制器,trigger、job是任务调度的元数据。trigger用于定义调度规则,即按照什么时间或周期去执行任务。一个job可被多个trigger关联,但是一个trigger只能关联一个job。Scheduler定义了很多接口和方法,它表示一个Quartz独立的运行容器,Trigger和JobDetail可以在Scheduler中被注册,并许可外程序部通过组及名称访问、控制容器中Trigger和JobDetail。
  Quartz拥有完备的事件和事件监听体系,大部分组件都拥有触发后事件、调度器开始事件、关闭事件任务执行前事件、任务执行后事件、触发器触发前事件等等。
  3 企业任务调度平台的设计与实现
  3.1 平台功能设计
  根据Quartz特性,企业任务调度系统包括这些模块:控制台、任务调度、工作管理、运行规则管理等,用户使用企业任务调度平台管控所有需要调度的任务,结合上文提到的scheduler与job的关联来理清任务与工作之间的关系,其中,一个任务包含N个工作,需要通过系统界面将N个工作进行工作编排,每个任务都基于一条运行规则按照工作编排的顺序执行。所以,要新建一个调度任务,必须经过以下步骤:
  首先,在运行规则管理模块编排运行规则。经过规则测试成功之后再生成一条新的运行规则,如用户确定运行规则为“每1个月的第10个工作日,在0时0分0秒执行”,则规则编排器自动生成Quartz cron表达式“0 0 0 10W 1/1 ?”。用户可以选择该运行规则基于普通日历还是工作日历生成,如果基于工作日历生成,则在之后的调度任务配置功能里可以设置遇到企业非工作日或者假期是否顺延。工作日历的管理功能在工作管理模块中。
  其次,在工作管理模块新建任务所需要执行的各项工作。每项工作生成一条新的工作项。这些工作项可以是企业其他系统提供的接口,也可以是一些用于数据处理的存储过程或者是用于数据加工的ETL(Extract-Transform-Load)工具提供的工作流。新建工作项时,需要配置该工作所属的工作组,工作组的概念是为了更好的管理各项工作,理清该工作属性,可以按照用途、类别或者系统界限区分,比如所有涉及存储过程的工作项归为一类、系统接口归为一类,或者涉及数据库处理的归为一类、程序执行归为另一类等。
  最后,利用已新建的运行规则及所需工作项,可以选择N个工作项来编排一个调度任务,并设置该任务的出错处理、节假日处理等事项。
  3.2 平台实现
  对于一些复杂的企业级任务调度应用来说,建议在程序的开发阶段将整个Quartz的源代码复制至开发环境中。一方面可以通过修改或扩展Quartz一部分类来实现某些更为复杂的、Quartz本身尚不提供的接口功能;另一方面,通过阅读源码,我们可以迅速了解Quartz的实现原理,更加熟悉接下来的开发过程。下面我们通过创建数据关系与整合Quartz的方法来概述平台的实现逻辑。
  Quartz依赖于一个关系型数据库管理系统(RDMS)来持久化存储。本平台使用JDBC来持久化Scheduler状态到数据库中。为了实现任务调度管控功能,在本平台中,首先引入Quartz数据库结构建立数据库。
  在Quartz中,任务本身实际的运行时间和耗费在每个监听器上的时间都会直接记入到任务的执行时间上,使用大量的监听器,如JobListeners、SchedulerListeners或TriggerListeners会影响Quartz执行效率。再者,Quartz在与数据库交互方面本身实际上只做很少的处理,差不多所有的时间都花费在数据库上,因为基于JDBC的JobStore的速度很大程度上取决于对数据库连接的速度。所以,在本平台实施过程中,为提高平台性能,一是为Quartz表建立索引;二是避免创建大量全局监听器。
  接下来,我们需要在项目中整合Quartz,具体做法为:将quartz.properties文件放置到classes目录下即可。至此,Quartz已经完整合到了企业任务调度平台项目中,并建立了任务调度数据库。接下来,我们需要利用Quartz框架的重要组件来实现任务调度功能,这些组件包括Trigger、Scheduler、Job、JobDetail,以及SchedulerContext和JobDataMap等,限于篇幅,我们不再一一累述。Quartz框架的jar包中有名为examples的文件夹,其中有很多个基础实例可供开发者参照。
  4 结语
  企业的调度任务规模越大、越复杂、越被频繁地执行,那么能从信息化、自动化中获益也越大。通过本文对Quartz特性、企业任务调度平台设计与实现的阐述,我们可以看出,更高的资源使用效率、伸缩性,更少的出错几率使得利用Quartz来实现企业任务调度平台是不二选择。
  参考文献
  [1]耿勇,薛胜军.J2EE應用中任务的动态调度[J].开发研究与设计技术,2007,(6):1589-1674.
  [2]王崟,董志勇.基于Quartz的网管系统任务调度的实现[J].电脑开发与应用,2011,24(7):23-24.
  (作者单位:同济大学软件学院)
其他文献
摘 要:计算机已成为了社会发展不可或缺的助手,而计算机网络的不断更新和技术的发展,也造福了社会。因此,本文主要针对计算机网络发展的历程进行阐述,并且对计算机网络的发展进程进行分析。并且对计算机网络对社会经济发展的积极影响进行了简单的阐述,同时也期待计算机网络能够在社会发展中,能够起到更大的作用,可以造福人类社会。  关键词:计算机网络;发展进程;历程  计算机是一项划时代的发明,计算机网络经过4个
摘 要:随着我国教育的不断改革,培养应用型人才已经成为教育部的首要任务之一,尤其是培养信息与计算机科学专业应用型人才,更是教育研究者不断探索与分析的主要内容。因此,本文对现阶段信息与计算机科学专业应用型人才培养模式的现状进行深入分析,并对学生实践问题解决能力进行探讨,进而提出应用型人才培养的新模式,以此确保实践教学与社会实践紧密相连,做到学以致用。  关键词:信息与计算科学;应用型人才;培养模式 
摘 要:随着信息技术的进步,云计算的发展为医疗行业带来了新的生机。为了消除医疗信息孤岛,进一步开发医疗资源,提出了云计算技术下的医疗大数据平台构建模型。分析将云计算应用于医疗行业的优势,设计了平台的基础架构模型,并对平台各功能层进行详细阐述,最后对运行机制展开探讨,为医疗大数据的采集、管理与分析、服务共享提供支持,旨在提供更灵活的信息共享方式和更高效的数据分析方法,为改进医疗信息共享模式,发展医疗