一 概述
??? 集成細(xì)節(jié),本文不再復(fù)述,請參考之前的quartz1.8.6單機版的集成文章
quartz系列(一)spring3.2.5與quartz1.8.6單機版集成詳細(xì)說明 http://phl.iteye.com/blog/906313
,本文側(cè)重講解與quartz2.1.7集群版的集成。現(xiàn)今互聯(lián)網(wǎng)“高端大氣上檔次”的應(yīng)用,都會避免單點故障,提供集群方案。
??? 集群版的功能如下:
1)部署多臺服務(wù)器,同一時間有且只有一臺服務(wù)器觸發(fā)定時任務(wù);
2)可以提供任務(wù)恢復(fù)機制,如果某一時,段所有集群都宕機,那么啟動的時候,可以選擇是否恢復(fù)繼續(xù)執(zhí)行沒有執(zhí)行到的定時任務(wù);
3)可以避免單點故障,如果某一節(jié)點執(zhí)行作業(yè)一半的時候失敗,則其可以配置他節(jié)點重新執(zhí)行這個作業(yè);
4)如果一個任務(wù)執(zhí)行時間過長,可以設(shè)置下一個任務(wù)執(zhí)行的策略,并發(fā)執(zhí)行,還是串行執(zhí)行;
5)作業(yè)集群的服務(wù)端本質(zhì)上是一個鎖服務(wù)器,可以使用mysql,也可以使用terracotta;
6)quartz集群版,去掉定時的特性也可以理解為分布式線程池;
7)客戶端的策略是搶占式鎖,所以有一定的負(fù)載均衡的功能。
??? terracotta與mysql服務(wù)器鎖實現(xiàn)比較
1)與基于數(shù)據(jù)庫的JobStoreTx或JobStoreCMT實現(xiàn)的Quartz集群相比較,Terracotta基于內(nèi)存的實現(xiàn)執(zhí)行起來會快很多。Terracotta基于字段的數(shù)據(jù)變化處理使得任務(wù)和觸發(fā)器的修改速度超快;
2)簡單易用。不需要任何數(shù)據(jù)庫的安裝配置;
3)失敗的任務(wù)可以立即被恢復(fù)。而基于數(shù)據(jù)庫的實現(xiàn)則需要在制定的時間間隔內(nèi)對調(diào)度器作檢查才能完成恢復(fù);
4)不需要JGroups或者其它集群配置;
5)terracotta和quartz是一家公司的技術(shù),高度集成;同時terracotta提供了GUI管理界面,運維人員可以方便的管理集群;
6)基于數(shù)據(jù)庫的實現(xiàn),由于使用select for update語句,所以經(jīng)常造成死鎖,影響集群運行。
???
二 與spring的集成
??? 項目結(jié)構(gòu),先上圖
除了參考之前的集成文章以外,需要注意以下幾點:
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接口發(fā)生了很大的變化,單機版集成沒有問題,如果想集成集群版,則需要自己擴展。
xorg.springframework.scheduling.quartz.JobWrapper.java
4)啟動調(diào)試:在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詳細(xì)安裝教程 http://phl.iteye.com/blog/1993833
比較好用的是
1)主備配置
2)GUI集群管理界面
3)maven引用與集成
http://terracotta.org/documentation/more/apache-maven
pom.xml引用如下
四 附錄
??? 由于terracotta-toolkit-1.6-runtime-5.5.0.jar文件超過了10m,無法上傳,所以附件中不包含此包,請讀者們自行下載。
??? 精力有限,只能根據(jù)本人的理解寫出文章,如果朋友們有需要,請跟帖留言,或者有錯誤的地方,請大家一起勘誤,我會整合到我的文章當(dāng)中,謝謝。
作者簡介
昵稱:澳洲鳥
姓名:樸海林
QQ:85977328
MSN:6301655@163.com
轉(zhuǎn)載請注明出處
??? 集成細(xì)節(jié),本文不再復(fù)述,請參考之前的quartz1.8.6單機版的集成文章
quartz系列(一)spring3.2.5與quartz1.8.6單機版集成詳細(xì)說明 http://phl.iteye.com/blog/906313
,本文側(cè)重講解與quartz2.1.7集群版的集成。現(xiàn)今互聯(lián)網(wǎng)“高端大氣上檔次”的應(yīng)用,都會避免單點故障,提供集群方案。
??? 集群版的功能如下:
1)部署多臺服務(wù)器,同一時間有且只有一臺服務(wù)器觸發(fā)定時任務(wù);
2)可以提供任務(wù)恢復(fù)機制,如果某一時,段所有集群都宕機,那么啟動的時候,可以選擇是否恢復(fù)繼續(xù)執(zhí)行沒有執(zhí)行到的定時任務(wù);
3)可以避免單點故障,如果某一節(jié)點執(zhí)行作業(yè)一半的時候失敗,則其可以配置他節(jié)點重新執(zhí)行這個作業(yè);
4)如果一個任務(wù)執(zhí)行時間過長,可以設(shè)置下一個任務(wù)執(zhí)行的策略,并發(fā)執(zhí)行,還是串行執(zhí)行;
5)作業(yè)集群的服務(wù)端本質(zhì)上是一個鎖服務(wù)器,可以使用mysql,也可以使用terracotta;
6)quartz集群版,去掉定時的特性也可以理解為分布式線程池;
7)客戶端的策略是搶占式鎖,所以有一定的負(fù)載均衡的功能。
??? terracotta與mysql服務(wù)器鎖實現(xiàn)比較
1)與基于數(shù)據(jù)庫的JobStoreTx或JobStoreCMT實現(xiàn)的Quartz集群相比較,Terracotta基于內(nèi)存的實現(xiàn)執(zhí)行起來會快很多。Terracotta基于字段的數(shù)據(jù)變化處理使得任務(wù)和觸發(fā)器的修改速度超快;
2)簡單易用。不需要任何數(shù)據(jù)庫的安裝配置;
3)失敗的任務(wù)可以立即被恢復(fù)。而基于數(shù)據(jù)庫的實現(xiàn)則需要在制定的時間間隔內(nèi)對調(diào)度器作檢查才能完成恢復(fù);
4)不需要JGroups或者其它集群配置;
5)terracotta和quartz是一家公司的技術(shù),高度集成;同時terracotta提供了GUI管理界面,運維人員可以方便的管理集群;
6)基于數(shù)據(jù)庫的實現(xiàn),由于使用select for update語句,所以經(jīng)常造成死鎖,影響集群運行。
???
二 與spring的集成
??? 項目結(jié)構(gòu),先上圖
除了參考之前的集成文章以外,需要注意以下幾點:
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接口發(fā)生了很大的變化,單機版集成沒有問題,如果想集成集群版,則需要自己擴展。
xorg.springframework.scheduling.quartz.JobWrapper.java
4)啟動調(diào)試:在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詳細(xì)安裝教程 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,無法上傳,所以附件中不包含此包,請讀者們自行下載。
??? 精力有限,只能根據(jù)本人的理解寫出文章,如果朋友們有需要,請跟帖留言,或者有錯誤的地方,請大家一起勘誤,我會整合到我的文章當(dāng)中,謝謝。
作者簡介
昵稱:澳洲鳥
姓名:樸海林
QQ:85977328
MSN:6301655@163.com
轉(zhuǎn)載請注明出處
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

