我有一个webapp可以在两台不同的机器上运行。从web应用程序可以“定购”在特定时间由石英执行的工作。石英在webapp中运行。因此石英在两台机器的每一台上运行。 我正在使用JDBC数据存储来坚持作业,触发器等。在多台机器上运行在tomcat上的石英集群设置
但是,这个想法是,只有一台机器将运行作业,另一台将只使用石英来安排作业。因此,调度程序只会在其中一台机器上启动(scheduler.start())。
在本文档中,它说
切勿单独的机器上运行群集,除非它们的时钟正在使用某种形式的时间同步服务(守护进程)是很经常运行的同步(时钟必须在一秒钟内彼此的)。如果您不熟悉如何操作,请参阅http://www.boulder.nist.gov/timefreq/service/its.htm。
从不启动(scheduler.start())一个非集群实例针对同一组数据库表,而任何其他实例正在运行(start()ed)。您可能会受到严重的数据损坏,并且肯定会遇到不稳定的行为。
而且我不确定我运行webapp的两台机器的时钟是否同步。
我的问题是这样的:我还应该在集群模式下为此设置运行石英时,只有一个石英实例将启动并运行作业,而另一个实例仅用于调度第一个实例执行的作业。
如果将isClustered设置为true,它将自动打开。它确保了防止节点之间数据的并发修改。在JVM中,只有一个节点锁定在线程级完成。 – jhouse 2012-04-17 13:16:39