论坛首页 Java企业应用论坛

quartz和应用的集群问题

浏览 18751 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-09-04  
ahuaxuan 写道
cacodemon 写道
我所说的不是这几种,因为不会用到tomcat cluster,而是jvm cluster,也是quartz自己提供的,所以不存在servlet资源不能释放的问题。
既它的文档上说的
quartzServerC1.properties:
org.quartz.scheduler.instanceName = QuartzServer
org.quartz.scheduler.instanceId = ONE

quartzServerC2.properties:
org.quartz.scheduler.instanceName = QuartzServer
org.quartz.scheduler.instanceId = TWO
这样就是他的cluster最简单的配置,当然你还需要配置她的Datasource,如果你需要及时提交job,那你还需要加上
org.quartz.scheduler.rmi.export = true
org.quartz.scheduler.rmi.registryHost = localhost
org.quartz.scheduler.rmi.registryPort = 1198
org.quartz.scheduler.rmi.serverPort = 0
org.quartz.scheduler.rmi.createRegistry = true
之类的,然后自己写个web应用或其他的来call他的rmi接口


刚才google了一下,发现网上并没有quartz在jvm级别做集群得描述,
http://wiki.opensymphony.com/display/QRTZ1/ConfigRMI,这个页面是关于rmi配置的,在这里我丝毫没有看到cluster这个字眼。
http://wiki.opensymphony.com/display/QRTZ1/ConfigJDBCJobStoreClustering,这个页面是我所描述得关于jdbcjobstore的描述。
而且你说到
cacodemon 写道
当然你还需要配置她的Datasource

从上面那个连接来看,这个datasource的作用其实就是支持我说的第三种方案。
而且在用jdbcjobstore做集群的时候就是需要配置:
quartzServerC1.properties:
org.quartz.scheduler.instanceName = QuartzServer
org.quartz.scheduler.instanceId = ONE

quartzServerC2.properties:
org.quartz.scheduler.instanceName = QuartzServer
org.quartz.scheduler.instanceId = TWO
还有datasource,这些配置不是用到什么“jvm级别”的集群上的,却是在使用jdbcjobstore做集群时所需的配置
你说了用rmi做jvm级别的集群我认为并不存在,除非你拿出证据来,或者证明你确实这样做过

daquan198163 写道
jobserver作为hessian客户端,不需要是web容器吧?

你说的对,不过我是想如果可以的话可以做一个web端来监控quartz执行的状态,当然如果不需要这样做的话可以不用web容器。



我帮公司做了一个jvm cluster的,然后有一个web端通过rmi来新增job,
0 请登录后投票
   发表时间:2007-09-04  
cacodemon 写道

我帮公司做了一个jvm cluster的,然后有一个web端通过rmi来新增job,

之前由于我对quartz的经验不够,所以说出了表示怀疑的话。我很想详细的学习一下你的做法,你能否把你的做法仔细阐述一下呢。
通过jvm的custer来做的话,那么如何通知其他node哪个job已经被执行或者是没有执行,时间同步问题你又是如何解决的呢。
而且你说通过一个web应用来调用rmi对jobserver进行任务的添加,但是这个不是rmi在jvm的cluster中的主要用途吧?多个节点上的quartz需要进行通信,我想你是不是通过rmi来进行通信的呢
0 请登录后投票
   发表时间:2007-09-05  
ahuaxuan 写道

之前由于我对quartz的经验不够,所以说出了表示怀疑的话。我很想详细的学习一下你的做法,你能否把你的做法仔细阐述一下呢。
通过jvm的custer来做的话,那么如何通知其他node哪个job已经被执行或者是没有执行,时间同步问题你又是如何解决的呢。
而且你说通过一个web应用来调用rmi对jobserver进行任务的添加,但是这个不是rmi在jvm的cluster中的主要用途吧?多个节点上的quartz需要进行通信,我想你是不是通过rmi来进行通信的呢

1.如何通知其他node哪个job已经被执行或者是没有执行,多个节点上的quartz需要进行通信
  這個是quartz cluster自己實現的,文檔代碼比較長,我建議你先看一下他的文檔 "quartz job scheduling framework"。另外,cluster必須是使用db的,所以對任務的操作基本上是基於他的JobStore的。
2.而且你说通过一个web应用来调用rmi对jobserver进行任务的添加,但是这个不是rmi在jvm的cluster中的主要用途吧?
因爲目前我只發現他提供的rmi的接口可以對jvm server上的job作操作。
3.时间同步问题
quartz提供了一個的解決方案(http://tf.nist.gov/service/its.htm),我還沒有試過。
另外可以做硬件server的cluster。

0 请登录后投票
   发表时间:2007-09-05  
to cacodemon
我有两个问题
1,那你说你的rmi在集群中到底起到了什么样的作用呢
2,按照你的描述quartz在集群时好像有两种方式,第一种是我的文章中所说的第3种方案,第2种是你所谓的jvm级别的cluster,你不停的让我去看文章,可是找了很多文章都没有发现你所说的jvm级别的cluster。

我甚至下载了Quartz Job Scheduling Framework这本书,在第11章quartz集群中我甚至没有发现rmi在集群时起到什么重要作用,我所说的第三种方案在集群时根本就不需要rmi。rmi不是集群的必须条件

而且从你的回贴中我也不能想象出你的rmi在集群中到底起到了什么作用
0 请登录后投票
   发表时间:2007-09-05  
ahuaxuan 写道
to cacodemon
我有两个问题
1,那你说你的rmi在集群中到底起到了什么样的作用呢
2,按照你的描述quartz在集群时好像有两种方式,第一种是我的文章中所说的第3种方案,第2种是你所谓的jvm级别的cluster,你不停的让我去看文章,可是找了很多文章都没有发现你所说的jvm级别的cluster。

我甚至下载了Quartz Job Scheduling Framework这本书,在第11章quartz集群中我甚至没有发现rmi在集群时起到什么重要作用,我所说的第三种方案在集群时根本就不需要rmi。rmi不是集群的必须条件

而且从你的回贴中我也不能想象出你的rmi在集群中到底起到了什么作用



-0-我所有的回帖中都沒說rmi和集群有什麽關係!我都說了我只發現只有通過rmi接口來操作在jvm server上運行的job的
0 请登录后投票
   发表时间:2007-09-05  
我想你是不清楚如何來做jvm 的server吧
下面是個例子
quartzServerC1.properties:

#==============================================================
#Configure Main Scheduler Properties
#==============================================================
org.quartz.scheduler.instanceName = QuartzServer
org.quartz.scheduler.instanceId = ONE

# Configure RMI Properties ======================================================
org.quartz.scheduler.rmi.export = true
org.quartz.scheduler.rmi.registryHost = localhost
org.quartz.scheduler.rmi.registryPort = 1198
org.quartz.scheduler.rmi.serverPort = 0
org.quartz.scheduler.rmi.createRegistry = true

# Configure Logger(s)  ======================================================
org.quartz.logger.schedLogger.class = org.quartz.simpl.SimpleLogger
org.quartz.logger.schedLogger.loggingPriority = 3
org.quartz.logger.schedLogger.outputFile =
org.quartz.logger.jsLogger.class = org.quartz.impl.Log4jLogger
org.quartz.logger.jsLogger.categoryName = scheduler.persistence
#==============================================================
#Configure ThreadPool
#==============================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 5
#==============================================================
#Configure JobStore
#==============================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass =org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.useProperties=false
org.quartz.jobStore.dataSource = myDS

org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 20000
#==============================================================
#Non-Managed Configure Datasource
#==============================================================
org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@:1521:
org.quartz.dataSource.myDS.user =
org.quartz.dataSource.myDS.password =
org.quartz.dataSource.myDS.maxConnections =


quartzServerC1.bat:

@SET LOG4J_PROPS="-Dlog4j.configuration=log4j.properties"
@SET QUARTZ_PROPS="-Dorg.quartz.properties=quartzServerC1.properties"
@SET RMI_POLICY="-Djava.security.policy=rmi.policy"
@SET LIB=e:\lib
@SET CLASSPATH=%CLASSPATH%;%LIB%
"java"  -Dsun.net.client.defaultConnectTimeout=1200000 -Dsun.net.client.defaultReadTimeout=1200000 %RMI_POLICY% %LOG4J_PROPS% %QUARTZ_PROPS% com.scheduler.server.QuartzServer

以上是cluster中一個jvm server的配置
再次申明在其中配置rmi不是爲了cluster,是爲了web應用來操作job -0-


0 请登录后投票
   发表时间:2007-09-05  
cacodemon 写道
你想的太多了,其实quartz已经把很多事情作完了。
正如他的文档描述的
你可以做jvm级的,使用rmi的cluster server,只需要配置一下xml。

你的这句话很容易让人产生误会,使用rmi的cluster server让人以为做cluster一定需要用rmi,其实不一定需要。

你上面贴出来的那个配置我当然知道啊,而且它的相关地址我在第8楼就贴出来了
http://wiki.opensymphony.com/display/QRTZ1/ConfigJDBCJobStoreClustering,
其实我说的第3种方案指得就是这一种。这种方式怎么能叫jvm级别的集群呢。这个是通过db来保证任务的执行的,所以当你说到
cacodemon 写道

我所说的不是这几种,因为不会用到tomcat cluster,而是jvm cluster,也是quartz自己提供的

我就以为这个是另外一种集群方式,所以我就觉得自己对quartz的经验不够用了,居然还有基于rmi的quartz集群。

到现在我终于明白你说得集群就是我文中提到的第3种集群
0 请登录后投票
   发表时间:2007-09-05  
ahuaxuan 写道
cacodemon 写道
你想的太多了,其实quartz已经把很多事情作完了。
正如他的文档描述的
你可以做jvm级的,使用rmi的cluster server,只需要配置一下xml。

你的这句话很容易让人产生误会,使用rmi的cluster server让人以为做cluster一定需要用rmi,其实不一定需要。

你上面贴出来的那个配置我当然知道啊,而且它的相关地址我在第8楼就贴出来了
http://wiki.opensymphony.com/display/QRTZ1/ConfigJDBCJobStoreClustering,
其实我说的第3种方案指得就是这一种。这种方式怎么能叫jvm级别的集群呢。这个是通过db来保证任务的执行的,所以当你说到
cacodemon 写道

我所说的不是这几种,因为不会用到tomcat cluster,而是jvm cluster,也是quartz自己提供的

我就以为这个是另外一种集群方式。

到现在我终于明白你说得集群就是我文中提到的第3种集群


-0-那就是你的第3个图画错了,怎么也不是tomcat cluster
0 请登录后投票
   发表时间:2007-09-05  
cacodemon 写道
-0-那就是你的第3个图画错了,怎么也不是tomcat cluster

让你一提醒我才注意到,其实我的图画的不严谨,第3个图中使用tomcat不是必需的,我画的是一种具体情况,也就是在tomcat的web应用中quartz集群的情况,我的图已经是具体到某一个具体场景了。事实上比较highlevel的图应该是这样的。


谢谢指正
  • 大小: 2.7 KB
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics