【问题标题】:Spring schedulers in a load balanced environment负载平衡环境中的 Spring 调度程序
【发布时间】:2010-04-11 07:48:39
【问题描述】:

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

【问题讨论】:

    标签: quartz-scheduler load-balancing


    【解决方案1】:

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

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

    例如 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 布尔成员。然后我会公开 2 个 [restricted-access] Web 服务调用:makeMaster 和 makeSlave,它们将分别调用 Scheduler.resume() 或待机/暂停。

    最后,最大的问题是您如何确定另一个节点“崩溃”了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      相关资源
      最近更新 更多