一 概述
??? 集成細節,本文不再復述,請參考之前的quartz1.8.6單機版的集成文章
quartz系列(一)spring3.2.5與quartz1.8.6單機版集成詳細說明 http://phl.iteye.com/blog/906313
,本文側重講解與quartz2.1.7集群版的集成?,F今互聯網“高端大氣上檔次”的應用,都會避免單點故障,提供集群方案。
??? 集群版的功能如下:
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的集成
??? 項目結構,先上圖
除了參考之前的集成文章以外,需要注意以下幾點:
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引用如下
四 附錄
??? 由于terracotta-toolkit-1.6-runtime-5.5.0.jar文件超過了10m,無法上傳,所以附件中不包含此包,請讀者們自行下載。
??? 精力有限,只能根據本人的理解寫出文章,如果朋友們有需要,請跟帖留言,或者有錯誤的地方,請大家一起勘誤,我會整合到我的文章當中,謝謝。
作者簡介
昵稱:澳洲鳥
姓名:樸海林
QQ:85977328
MSN:6301655@163.com
轉載請注明出處
??? 集成細節,本文不再復述,請參考之前的quartz1.8.6單機版的集成文章
quartz系列(一)spring3.2.5與quartz1.8.6單機版集成詳細說明 http://phl.iteye.com/blog/906313
,本文側重講解與quartz2.1.7集群版的集成?,F今互聯網“高端大氣上檔次”的應用,都會避免單點故障,提供集群方案。
??? 集群版的功能如下:
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的集成
??? 項目結構,先上圖

除了參考之前的集成文章以外,需要注意以下幾點:
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
轉載請注明出處
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
