quartz系列(二)spring3.2.5与quartz2.1.7集群

系统 1562 0
一 概述
    集成细节,本文不再复述,请参考之前的quartz1.8.6单机版的集成文章
quartz系列(一)spring3.2.5与quartz1.8.6单机版集成详细说明 http://phl.iteye.com/blog/906313
,本文侧重讲解与quartz2.1.7集群版的集成。现今互联网“高端大气上档次”的应用,都会避免单点故障,提供集群方案。
    集群版的功能如下:
1)部署多台服务器,同一时间有且只有一台服务器触发定时任务;
2)可以提供任务恢复机制,如果某一时,段所有集群都宕机,那么启动的时候,可以选择是否恢复继续执行没有执行到的定时任务;
3)可以避免单点故障,如果某一节点执行作业一半的时候失败,则其可以配置他节点重新执行这个作业;
4)如果一个任务执行时间过长,可以设置下一个任务执行的策略,并发执行,还是串行执行;
5)作业集群的服务端本质上是一个锁服务器,可以使用mysql,也可以使用terracotta;
6)quartz集群版,去掉定时的特性也可以理解为分布式线程池;
7)客户端的策略是抢占式锁,所以有一定的负载均衡的功能。

    terracotta与mysql服务器锁实现比较
1)与基于数据库的JobStoreTx或JobStoreCMT实现的Quartz集群相比较,Terracotta基于内存的实现执行起来会快很多。Terracotta基于字段的数据变化处理使得任务和触发器的修改速度超快;
2)简单易用。不需要任何数据库的安装配置;
3)失败的任务可以立即被恢复。而基于数据库的实现则需要在制定的时间间隔内对调度器作检查才能完成恢复;
4)不需要JGroups或者其它集群配置;
5)terracotta和quartz是一家公司的技术,高度集成;同时terracotta提供了GUI管理界面,运维人员可以方便的管理集群;
6)基于数据库的实现,由于使用select for update语句,所以经常造成死锁,影响集群运行。
   
二 与spring的集成
    项目结构,先上图
quartz系列(二)spring3.2.5与quartz2.1.7集群版集成简要说明
除了参考之前的集成文章以外,需要注意以下几点:
1)增加包
quartz-terracotta-2.3.5.jar
${terracotta_home}/common/terracotta-toolkit-1.6-runtime-5.5.0.jar

2)增加配置文件
quartz.properties

3)修改并扩展spring源码
quartz2.1和1.8接口发生了很大的变化,单机版集成没有问题,如果想集成集群版,则需要自己扩展。
xorg.springframework.scheduling.quartz.JobWrapper.java

4)启动调试:在java客户端使用quartz集群时
问题一
Caused by: java.lang.NoClassDefFoundError: org/terracotta/express/ClientFactory
把common目录下的terracotta-toolkit-1.0-runtime-1.0.0.jar文件拷贝到classpath就可以了。

问题二
terracotta客户端与com.googlecode.jmockit的JAR包不能一起使用,否则报错

三 terracotta
安装参考
quartz系列(三)terracotta2.3.5详细安装教程 http://phl.iteye.com/blog/1993833
比较好用的是
1)主备配置
2)GUI集群管理界面
3)maven引用与集成
http://terracotta.org/documentation/more/apache-maven
pom.xml引用如下
            <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.1.7</version>
        </dependency>
        <dependency>
            <groupId>org.terracotta.quartz</groupId>
            <artifactId>quartz-terracotta</artifactId>
            <version>2.3.5</version>
        </dependency>
        <dependency>
            <groupId>org.terracotta.toolkit</groupId>
            <artifactId>terracotta-toolkit-1.6-runtime</artifactId>
            <version>5.5.0</version>
        </dependency>
  



四 附录
    由于terracotta-toolkit-1.6-runtime-5.5.0.jar文件超过了10m,无法上传,所以附件中不包含此包,请读者们自行下载。
    精力有限,只能根据本人的理解写出文章,如果朋友们有需要,请跟帖留言,或者有错误的地方,请大家一起勘误,我会整合到我的文章当中,谢谢。


作者简介
昵称:澳洲鸟
姓名:朴海林
QQ:85977328
MSN:6301655@163.com

转载请注明出处

quartz系列(二)spring3.2.5与quartz2.1.7集群版集成简要说明


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论