没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
32页
Quartz Job Scheduling Framework[翻译]第一章. 企业应用中的作业调度 2007年11月18日 星期日 下午 12:22第一章. 企业应用中的作业调度 ·什么是作业调度 ·作业调度为什么说是重要的 ·企业应用中的作业调度 ·非企业应用中的作业调度 ·作业调度与工作流 ·关于作业调度其他可选择方案 1. 什么是作业调度 “作业”,这一技术述语上的概念,又让我们回到了大型机的年代,那时候,用户/程序员提交一叠穿孔卡片或者纸带(上面描述了一个作业)给操作人员,由操作人员帮忙执行那些作业。用户等待作业执行完后,回到主机那边取自己的卡片和打印出来的输出结果。 因为不是每一个作业要求立即被执行,所以作业可以被安排在将来的某个时候执行。比如说,一个系统管理员每天晚上可能有一份要执行的作业列表: · 10:00 PM: 运行患者信息文件的上载作业 · 11:00 PM: 运行销售数据报表生成 · 11:59 PM: 进行数据库的备份
资源推荐
资源详情
资源评论
Quartz Job Scheduling Framework[翻译]第一章. 企业应用中的作业调度
2007 年 11 月 18 日 星期日 下午 12:22 第一章. 企业应用中的作业调度
·什么是作业调度
·作业调度为什么说是重要的
·企业应用中的作业调度
·非企业应用中的作业调度
·作业调度与工作流
·关于作业调度其他可选择方案
1. 什么是作业调度
“作业”,这一技术述语上的概念,又让我们回到了大型机的年代,那时候,用户/程序员提
交一叠穿孔卡片或者纸带(上面描述了一个作业)给操作人员,由操作人员帮忙执行那些作
业。用户等待作业执行完后,回到主机那边取自己的卡片和打印出来的输出结果。
因为不是每一个作业要求立即被执行,所以作业可以被安排在将来的某个时候执行。比如说,
一个系统管理员每天晚上可能有一份要执行的作业列表:
· 10:00 PM: 运行患者信息文件的上载作业
· 11:00 PM: 运行销售数据报表生成
· 11:59 PM: 进行数据库的备份
作 业调度通常是指运行一个批量的作业或称之谓批处理。这种批处理作业一般都是放在后
台运行并且不需要与用户交互。现在,显著增多的多样性的任务已代替了早先 的批量作业。
在一个大的组织中每天的每小时跑上百个作业已属普遍。并且作业的规模与复杂性仍在持续
的上扬,因此批量作业和作业调度器也就随需应生。
2. 作业调度为什么说是重要的
俗话说,“时间就是金钱。”,过高的资源投入到枯燥的任务中无疑是金钱和资源的浪费。随
着业务流程复杂性的提升,自动化流程也更能显现出它的有益之处来。图 1.1 说明了这一
问题。
图 1.1 任务规规模越大、越复杂、越频繁的被执行,那么能从自动化中获益也越大
人之所以称之为人,国为我们犯错误的频度远高于电脑。把一系列任务自动安置到一个作业
中,然后再为这个作业创建一个调度器,到时这个作业就会自动执行了。相对于人的手工处
理,我们可以减少大多数的出错机会。
作业调度器的另一个优点体现在伸缩性。我们也许能一个小时中手工完成 10 或 20 个作业,
但是随着每小时处理作业数量的增加,我们就更难杜绝不在作业中引入错误。但如果借助于
作业调度,只会受到硬件资源的影响了。
所以我们能着实的说通过作业调度那样自动化处理相对于手工来说,至少为我们提供了以下
三个优点:
·资源使用效率更高
·更少的出错机率
·更高的伸缩性
3. 企业应用中的作业调度
“企 业应用”一词,如今经常会被我们无意识间提及,然而似乎现在还没有对它一个准确
的定义。但对于在本书中这一词的意义,我们只要建立起这样一个概念:作为某 一组织的
一部份而存在的软件系统或程序。这个系统可以是一个大型机上的、或者是一个 C/S 结构的、
或者就是一个 J2EE 应用。真实世界中的例子就是,作业 调度器能在那个系统上大量的使
用。以下的几个场景,尽管没有详尽的进行描绘,也涉及到了现今应用软件常常遇到的场景。
场景 #1: 邮件提醒和告警
许 多网站(不管是商业的还是别的)允许用户提供用户名和密码注册一个帐户。出于安全
考虑,一个好的做法是让用户密码每隔一段时间过期失效,比如说 90 天的周 期。这种情况
下,你可以创建一个作业,让它每天午夜运行一次,并且向离过期时间不到三天的所有用户
发邮件提醒。这里可以恰到好处的用到作业调度器。图 1.2 描绘了密码这个提醒作业。
图 1.2 密码过期的作业每晚发送邮件给密码很快会过期的用户
除了发过期的密码信息,网站还可以发送其他的告警或提醒(可不是垃圾邮件哦)。一个作
业调度器还能够用在类似的其他方面。
场景 #2: 执行文件传输操作
许多商家需要和他们的供应商或客户作信息集成。一种集成的方式就是进行数据文件的交换。
可以采用实时的方式,例如 SOAP 协议,但是许多时候却不需要实时性,代之以异步的方
式,譬如用 FTP 协议来发出或取所要的文件。
下 图描绘了一个劳工补偿局每天早上收到一些包含患者及事故信息的文件。公司可以雇一
个人每天早上手工的检出 FTP 服务器上的文件。作为另一个更好的选择就是 可以写一个作
业,让它每天早上扫描 FTP 服务器,如果有文件的话,把文件内容处理后插入到患者数据
库中去。让作业调度器代劳后,这个职员再也不用手工去上 FTP 检查文件,而可以为公司
做更多别的更有意义的事情。图 1.3 描绘了文件传输的操作。
图 1.3. 文件传输的作业检查 FTP 站点,把患者信息文件处理到数据库中。
场景 #3: 创建销售报表
公 司经营由盈亏账目所驱动,其中一个很重要的事情就是经营管理者和财务人员需要拿到
最终收入和毛利数据进行分析。抽取销售报表数据可能非常的慢并且很耗资 源,因为这通
常需要联合多个表从中查询出上千条记录。一个更好的解决途径是在晚上计帐和计价结束后,
运行一个作业,让它去生成一些临时表或视图为报表程序 所用。创建临时表或视图的方式,
使报表生成更具动态特性,而且用户也用不着平白去等待报表的生成,一些报表工具,如水
晶报表 XI(Crystal Reports XI) 本身就包含了作业调度器(见图 1.4)。
图 1.4. 销售数据报表程序执行为销售团队产生收入和毛利信息
4. 非企业应用中的作业调度
Quartz 对于许多非企业环境的应用也是很有帮助的。例如,假定你有一个独立的应用程序,
事件是基于时钟而不是鼠标的点击激发的。这时候你就可以把 Quartz 构建到这个应用程序
中来,并且安排事件能周期性的被触发。
另一例子是,你也许正想查询数据库并发送邮件,而邮件接受者正是基于这些数据得到的。
(译者注:真有些搞不明白)
5. 作业调度与工作流
作业调度不是工作流,理解这一点很重的要。它们常被同时应用于一个方案中,但它们是两
个截然不同的解决办法,并且都可孤立使用。一个作业通常由几个步骤组成。我们回过头来
看前面提到的那个密码过期的作业,实质上它是由三个步骤所组成。
1. 获取到密码将要过期的用户列表
2. 为列表中的用户各自发送一个邮件
3. 更新记录,下次就能知道哪些邮件发送过
这 个作业可以使用工作流的优点,作业的每一部份恰好对应着工作流的每一个步骤。这并
非意味着离开了工作流,作业调度会有些糟。这是普通的下一步、下一步简单 操作。只要
作业调度框架与第三方工作流能轻便的解决问题,就是好的。更多的关于 Quartz 和工作流
的内容将会在第十四章,“使用 Quartz 和工作流” 详解。
6. 关于作业调度其他可选择方案
正如你所知,这本书是讲 Quartz 的,但是 Quartz 的可替代方案呢?当我们比较作业调度方
案的时候肯定要提到别的同类应用,那么现在就来简单介绍一下它们。
Java SDK Timer 和 TimerTask 类
java.util.Timer 和 java.util.TimerTask 这两个类是自 1.3 版本才加入到 JDK 中来的。这两个新
类可以实现一个最基本的调度器。也就只能作为我们理想的 完整调度器框架的一个小的部
件。任何严格意义的作业调度器都提供直接指定执行时间,存储作业信息到多种介绍和使用
钩子进行定制及其他更多的功能。单纯靠 JDK 的那两个类还不足以构建一个真正的作业调
度器。JAVA 的 Timer 类也没办法对作业和触发器作相应的组织,使用每任务一个线程,而
不是线程池的方 式,还有其他不足之处难以成全其实现一个完全意义的作业调度器。
本土方案
从前面提到的 Timer 和 TimerTask 类来看,我们很容易低估创建一个灵活的、并且日后可
扩展的作业调度器所作出的努力。创建一个作业调度器也不视之为微不足道的活儿。它需
要的不仅仅是 Java 线程方面的专业技术,还需要解决其他更复杂的课题。如果你没有这方
面成熟的专业知识,别想着作业调度器能直接随意一份草稿能一蹴而 就。
商业解决方案
现在市面上也能见到不少商业的作业调度产品。在本书中,我们不打算花功夫去了解和评估
那些商业化产品。表 1.1 中列出了当下流行的几个解决方案,你可以通过所给相应的 URL
获得更详尽的信息。
表 1.1 商业作业调度器
名称 网址
Flux Scheduler www.fluxcorp.com/
Enterprise Batching Queuing www.argent.com/p/qe/qe.html
Unicenter AutoSys Job Management 4.5 www.ca.com
BMC Software ControlM www.bmc.com
Cybermation ESP Espresso 4.2 www.cybermation.corly;9'm
Vexus consulting Avatar Job Scheduling Suite 4.5.5 www.vexus.ca
Argent software The Argent Job Scheduler 4.5A www.argent.com
Tidal Enterprise Scheduler www.tidalsoftware.com
Quartz Job Scheduling Framework[翻译]第二章. Quartz 起步 2007 年 11 月 18 日 星期日
下午 12:24 第二章. Quartz 起步
本章对 Quartz 框架一个快速的入门介绍,同时也大略指导你从哪里下载,构建和安装这个
框架
1. Quartz 框架的发展历程
和现今许多在用的开源项目一样,Quartz 之初也只是为个人开发者提供了一个简单的实现方
案。但是随着日益增多的关键人员的积极参与和慷慨的贡献,Quartz 已经成为了一个为众
人所知,并且能帮助人们解决更大问题的框架。
Quartz 项目 是由 James House 创立的,它在 1998 年就有该框架最初的构思。包括作业队
列的概念,使用线程池来处理作业,也许它最早的模型已不为现今的 Quartz 使用者所知了。
在接下来的数年中,House 自己说他一直在关注着同一个需求:需要一个灵活的作业调度
工具。他在找寻便宜且具有丰富特征的 Java 作业调度工具时,让他面临着以下几个选择:
·一个昂贵的商业化工具
·嵌入在大框架之中的,根本用不着这么一个大框架
·类似 Unix Cron 或者 Windows 的计划任务
·自己亲自定制的方案
House 有限的选择和在这个问题上的兴趣促成了他为作业调度器创建一个开源的项目。在
2001 年 春 天 , 他 在 SourceForge 上 创 立 了 该 项 目 , 这 一 网 址
http://sourceforge.net/projects/quartz 现在还是有效的,只是已经不再维护了。
自从 Quartz 的雏形一出来,众多的捐助者和开发人员加入到这个项目中来。然而应该说,
Quartz 能象今天这么存在还是要感谢 House 以及他在作业调度领域中的兴趣。在众多人眼
中,他那解决问题的决心很值得称颂的。
2. 下载和安装 Quartz
在 Quartz 的主页面 http://www.opensymphony.com/quartz 中有下载链接(由 OpenSymphony
提供的主机服务)。在这里你可获取到最新版,也有几个早期版本供下载。Quartz 下过来是
一个完整的发行版,其中包括源代码和已编译好可直接使用的 JAR 文件。Quartz 的 JAR
包还存在于 ibiblio (译者注:http://www.ibiblio.org/maven/) maven 仓库中,很方便于你用
Maven (译者注:一个比 ANT 更为强大的构建工具) 或者 Ivy(译者注:一个免费基于 Java
的依赖管理器) 来构建系统。
下载到的是一个 ZIP 格式文件,因此你需要一个像 WINZIP 那样的工具,你还可以用 Java
的 jar 命令来解压缩该文件:
jar -xvf quartz-1.5.0-rc1.zip
Quartz 发行包中的文件将会解压到当前目录中。
解开来的 Quartz zip 文件包含以下几个子目录。表 2.1 描述了每一个子目录的内容。
表 2.1 Quartz 的目录结构和内容 目录名 存放内容
Docs
docs/api Quartz 框架的 JavaDoc Api 说明文档
docs/dbTables 创建 Quartz 的数据库对象的脚本
docs/wikidocs Quartz 的帮助文件,点击 index.html 开始查看
Examples 多方面使用 Quartz 的例子
Lib Quartz 使用到的第三方包
src/java/org/quartz 使用 Quartz 的客户端程序源代码,公有 API
src/java/org/quartz/core 使用 Quartz 的服务端程序源代码,私有 API
src/java/org/quartz/simpl Quartz 提供的不衣赖于第三方产品的简单实现
src/java/org/quartz/impl 依赖于第三方产品的支持模块的实现
src/java/org/quartz/utils 整个框架要用到的辅助类和工具组件
src/jboss 提供了特定于 JBoss 特性的源代码
src/oracle 提供了特定于 Oracle 特性的源代码
src/weblogic 提供了特定于 WebLogic 特性的源代码
安装必要的 JAR 文件
如 果你急于想让 Quartz 工作起来,那么最快捷的方法是获取到已编译打包好的 Quartz JAR
剩余31页未读,继续阅读
资源评论
minmax329
- 粉丝: 1
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功