负载平衡环境中的Spring调度程序

时间:2010-04-11 07:48:40

标签: quartz-scheduler load-balancing

我在负载均衡的环境中有多个石英cron作业。目前,这些作业正在每个节点上运行,这是不可取的。我希望节点只运行特定的调度程序,如果节点崩溃,另一个节点应该运行用于崩溃的节点的调度程序。 如何使用spring 2.5.6 / tomcat负载均衡器来完成。

1 个答案:

答案 0 :(得分:0)

我认为这个问题有几个方面。

首先,Quartz拥有用于暂停和恢复调度程序的API方法,甚至是单独的触发器和作业

e.g。 http://www.jarvana.com/jarvana/view/opensymphony/quartz/1.6.1/quartz-1.6.1-javadoc.jar!/org/quartz/Scheduler.html#standby()

我会创建一个带有Quartz调度器或触发器的spring bean,以及一个用于存储状态的简单isMasterNode boolean成员。然后,我将公开2个[限制访问] Web服务调用:makeMaster和makeSlave,它们将分别调用Scheduler.resume()或standby / pause。

Finall,最大的问题是如何&用你确定的另一个节点'崩溃'。

如果您正在使用硬件负载均衡器来管理它,您可以将其配置为在新的“主要”节点上调用“makeMaster”WS,后者又调用Scheduler.resume()或类似节点。

HTH