2010-04-11 72 views
2

我在負載平衡的環境中有多個石英cron作業。目前這些作業正在每個節點上運行,這是不可取的。我想要一個節點只運行一個特定的調度器,並且如果該節點崩潰,另一個節點應該運行用於該崩潰節點的調度器。 這怎麼可以用spring 2.5.6/tomcat負載均衡器來完成。負載均衡環境中的彈簧調度器

回答

0

我認爲這個問題有幾個方面。

首先,石英具有用於暫停和恢復調度程序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()或standby/pause。

最後,最大的問題是如何確定&你確定另一個節點'崩潰'。

如果您使用硬件負載均衡器來管理此問題,您可以將其配置爲在新的「主」節點上調用「makeMaster」WS,該節點又調用Scheduler.resume()或類似的方法。

hth