2011-01-31 50 views
11

我对Quartz集群有一些疑问,特别是关于如何在集群内执行触发器触发/作业。选择Quartz集群中的节点来执行作业

  1. 当执行作业时,石英是否给予节点任何偏好?比如总是或从不是最后一次执行相同任务的节点,还是仅仅是首先获得工作的节点?

  2. 是否可以指定应执行作业的节点?

回答

9

对此的回答将是一个“取决于”的东西。

对于quartz 1.x,答案是作业的执行总是(仅)在一个或多或少的随机节点上。其中“随机性”实际上是基于哪个节点首先获得的。对于“繁忙”的调度程序(其中总是有很多作业要运行),这最终会在群集节点间提供相当均衡的负载。对于非繁忙的调度程序(只是偶尔的作业),它有时可能看起来像是一个单一的节点正在启动所有的作业(因为调度程序会在作业执行完成时寻找下一个要启动的作业 - 所以节点只需完成一次执行往往会找到下一份工作来执行)。

对于标准石英,石英2.0(测试版)的答案与上述相同。但是Terracotta人已经构建了他们的TerracottaJobStore企业版,它提供了更复杂的集群控制 - 当您安排作业时,您可以指定集群的哪些节点对作业的执行有效,或者您可以指定节点特性/必要条件等作为“至少有100 MB可用RAM的节点”。这也与ehcache一起使用,以便您可以指定要在“由X键入的数据在本地”的节点上运行的作业。

+0

感谢信息。 – ButterflyCoder 2011-02-02 01:25:04

相关问题