【发布时间】:2015-08-27 18:49:46
【问题描述】:
我们正在从单个 tomcat 转变为具有负载平衡和会话复制的两个集群 tomcat 实例。在我们这样做之前,我们必须对一些现有代码进行一些调整:我们有一些以不同间隔运行的后台作业,我们只希望这些作业运行一次(而不是在两个 tomcat 节点上)。有关如何解决此问题的任何建议?
【问题讨论】:
标签: java tomcat synchronization cluster-computing load-balancing
我们正在从单个 tomcat 转变为具有负载平衡和会话复制的两个集群 tomcat 实例。在我们这样做之前,我们必须对一些现有代码进行一些调整:我们有一些以不同间隔运行的后台作业,我们只希望这些作业运行一次(而不是在两个 tomcat 节点上)。有关如何解决此问题的任何建议?
【问题讨论】:
标签: java tomcat synchronization cluster-computing load-balancing
这可以通过Quartz framework 和使用 JDBCJobStore 的集群选项来完成。
“负载平衡自动发生,集群中的每个节点都尽可能快地触发作业。当触发器的触发时间发生时,第一个获取它的节点(通过对其加锁)就是将触发它。每次触发时只有一个节点会触发作业。"
您只需创建三个保存作业/任务信息的表。所有 Tomcat 节点都将访问这些表。一旦作业被触发,第一个能够执行的节点将执行任务,其他节点不会。如果一个节点任务失败,另一个节点可能会重试。
【讨论】: