我有一个 webapp,它将在 2 台不同的机器上运行。从 webapp 可以“订购”石英在特定时间执行的作业。石英在 webapp 内运行。因此,石英在两台机器上运行。我正在使用 JDBC 数据存储来持久化作业、触发器等。
然而,这个想法是只有一台机器会运行作业,而另一台机器只会使用石英来安排作业。因此,调度程序只会在其中一台机器上启动(scheduler.start())。
在文档中它说
永远不要在单独的机器上运行集群,除非它们的时钟使用某种形式的时间同步服务(守护程序)进行同步,这种服务非常有规律地运行(时钟必须在一秒内)。如果您不熟悉如何执行此操作,请参阅http://www.boulder.nist.gov/timefreq/service/its.htm 。
永远不要针对任何其他实例正在运行 (start()ed) 的同一组数据库表启动 (scheduler.start()) 非集群实例。您可能会遇到严重的数据损坏,并且肯定会遇到不稳定的行为。
而且我不确定运行我的 webapp 的两台机器的时钟是否同步。
我的问题是:当只有一个石英实例将启动并运行作业而另一个实例仅用于调度作业以由第一个实例执行时,我是否仍应在集群模式下运行该设置。