Quartz与Terracotta的集成
• 综述
• 配置模块
• 支持的功能
• 与基于数据库的Quartz集群的对比
• 公开源代码库
• 内部源代码库(为代码提交者使用)
综述
Quartz是开源Java任务调度系统,它可以与几乎所有的J2EE或者J2SE应用整合在一起使用。Quartz可以用来调度执行几十、成百甚至上万个任务。任务里面的具体工作则可以用标准的Java空间或者EJB构成。
Quartz和Terracotta的整合使得Quartz可以基于RAMJobStore来构建集群。与现有的JobStoreTx或者JboStoreCMT等基于数据库的Quartz集群相比,Terracotta实现的基于RAMJobStore的集群具有更高的效率和易用性。
配置模块
最快、最简单配置Quartz集群的方式就是在您Terracotta XML配置文件中包含Quartz配置模块。只需要从Terracotta Forge中下载如下Quartz相关的jar包,并且把它加到配置文件中:
Code:
<clients> <modules> <repository>./modules</repository> <module name="tim-quartz-1.5.1" version="1.2.0"/> </modules> </clients>
* 模块位置
要注意确认模块放置在正确的位置。模块位置是在<repository>元素中配制的。最简单的办法是把模块的jar包拷贝到TC_INSTALL_DIR/modules目录下,这样您就不需要配置<repository>了。如果您要把模块放在自定义的位置,就一定要配置<repository>。
比如上面的配置文件就假定模块放在当前目录的modules子目录下。
* 模块名
注意模块的jar文件名和配置文件中的模块名有相关性。jar文件名一定要符合 <模块名>-<版本>的格式。
有关模块配置的详细信息可以参考:
http://www.terracotta.org/web/display/docs/Configuration+Guide+and+Reference#ConfigurationGuideandReference-configmodules
支持的功能
1. 在Terracotta中使用tim-quartz,提供了一个Quartz RAMNJobStore的集群话的版本。
2. 调度任务的执行负载被均衡分配到整个集群中:集群中每一个调度器(Scheduler)都视图根据调度器的权限触发调度任务触发器(trigger)。所有的调度器实例都争抢触发调度任务的权利。当一个任务被触发以后,其它的调度器在下次调度时间到来之前,就不能触发相同的触发器了。
3. 从失败的调度器实例中回复:当调度器实例出现故障时,Terracotta能够自动检测到故障,并且将自动恢复任务,使得它能够被其它的调度器在他们下一次执行时间得到执行。
4. 任务和触发器信息在节点发生故障时不会丢失:如果Terracotta服务器配置为持久化模式(persistent mode),这些信息将在服务器启动过程部得以保留。比如:A任务在一个节点上被激活,当当前节点宕机或者死机的时候,它可以在其它节点上继续执行。
5. 被恢复的任务立即被执行。如果他们的调度器出现故障,他们将在集群中其它调度器上被立即执行。
与基于数据库的Quartz集群的对比
1. 与基于数据库的JobStoreTx或JobStoreCMT实现的Quartz集群相比较,Terracotta基于内存的实现执行起来会快很多。Terracotta基于字段的数据变化处理使得任务和触发器的修改速度超快。
2. 简单易用。不需要任何数据库的安装配置。
3. 失败的任务可以立即被恢复。而基于数据库的实现则需要在制定的时间间隔内对调度器作检查才能完成恢复。
4. 不需要JGroups或者其它集群配置。
公共源代码库
SVN: http://svn.terracotta.org/svn/forge/projects/tim-quartz
内部源代码库(为代码提交者使用)
SVN: https://svn.terracotta.org/svn/forge/projects/tim-quartz
相关推荐
首先,Terracotta Job Store for Quartz是Quartz与Terracotta集成的一种解决方案,它允许Quartz作业和触发器存储在内存中,从而实现跨多个节点的集群。Terracotta是一个提供统一的内存数据网格的平台,能够确保所有...
在"quartz系列(三)terracotta2.3.5详细安装教程"中,我们将探讨如何集成Terracotta来实现Quartz集群,提高任务调度的可用性和可扩展性。 Quartz本身支持多线程和并发,但在大型系统中,单个服务器可能无法满足高...
1. **Quartz_Scheduler_Developer_Guide.pdf**:开发者指南为程序员提供了详细的 API 使用说明,涵盖了如何配置 Quartz,如何创建作业和触发器,以及如何与应用集成。它还解释了如何自定义 Quartz 的行为,如实现...
此外,书中可能还会涉及其他相关技术,如Ehcache(一个常用的Java缓存解决方案,也支持与Terracotta的集成)、Quartz(一个强大的任务调度框架)等,以及如何解决在集群环境中可能出现的问题,如性能调优、故障恢复...
不过,需要注意的是,Quartz本身并不直接支持分布式调度,但可以通过与其他工具(如Terracotta)集成来实现。 在选择分布式调度框架时,你可以对比不同框架的特点。比如Quartz具有与Spring的天然集成,但缺乏友好的...
Quartz可以集成到几乎所有的Java应用程序——从简单的独立应用程序到大型电子商务系统。它提供了广泛的作业调度特性,包括支持J2SE和J2EE环境,支持集群,以及支持多种不同类型的作业执行机制。 **Quartz调度器的...
Quartz是功能强大的开源作业调度库,几乎可以集成到任何Java应用程序中-从最小的独立应用程序到最大的电子商务系统。Quartz可用于创建简单或复杂的计划,以执行数以万计,数以万计的工作。任务定义为标准Java组件的...
作为Spring默认的调度框架,Quartz很容易与Spring集成实现灵活可配置的调度功能。通过Spring的依赖注入机制,可以轻松地将Quartz集成到Spring应用程序中。 三、配置定时任务 配置定时任务需要实现以下几个步骤: ...
Ehcache支持内存和磁盘存储,还可以与其他缓存系统集成,如Terracotta,以实现分布式缓存。 在“SH”压缩包中,可能包含了这些技术的配置文件、源代码、测试案例等资源,帮助开发者快速搭建和理解这个整合项目。...
第6章 将Spring与其他Web框架集成 209 6.1 在一般Web应用中访问Spring 209 6.1.1 问题 209 6.1.2 解决方案 210 6.1.3 工作原理 210 6.2 在你的Servlet和过滤器中使用Spring 214 6.2.1 问题 214 6.2.2...
第6章 将Spring与其他Web框架集成 209 6.1 在一般Web应用中访问Spring 209 6.1.1 问题 209 6.1.2 解决方案 210 6.1.3 工作原理 210 6.2 在你的Servlet和过滤器中使用Spring 214 6.2.1 问题 214 6.2.2...