我对Quartz集群有一些疑问,特别是有关触发器/作业在集群中如何执行的问题.
在执行作业时,quartz会给节点优先吗?例如,总是或从不是最后一次执行相同作业的节点,还是只是首先到达作业的节点?
是否可以指定应该执行作业的节点?
jho*_*use 10
对此的答案将是"依赖于".
对于quartz 1.x,答案是作业的执行总是(仅)在一个或多或少的随机节点上."随机性"实际上是基于哪个节点首先获得它.对于"繁忙"调度程序(总是要运行大量作业),这最终会在集群节点上提供相当均衡的负载.对于非繁忙的调度程序(仅偶尔触发的作业),有时可能看起来单个节点正在触发所有作业(因为调度程序在作业执行完成时查找要触发的下一个作业 - 因此节点刚刚完成执行倾向于找到下一个要执行的工作).
对于标准石英,石英2.0(处于测试阶段)的答案与上述相同.但是Terracotta人员已经构建了他们的TerracottaJobStore企业版,它提供了更复杂的集群控制 - 当您调度作业时,您可以指定集群的哪些节点对作业的执行有效,或者您可以指定节点特征/必要条件,例如as"具有至少100 MB RAM可用的节点".这也与ehcache一起使用,这样您就可以指定作业"在由X键入的数据是本地的节点上"运行.
| 归档时间: |
|
| 查看次数: |
4940 次 |
| 最近记录: |