2013-01-10 388 views
0

我正在研究使用Quartz來調度作業的應用程序。要安排的作業是通過讀取屬性文件以編程方式創建的。我的問題是:如果我有幾個節點的集羣這些應該創建時間表編程?其中只有一個?或者,也許所有?集羣石英調度程序配置

回答

1

我在一個網絡應用程序中使用石英,其中用戶可以創建執行特定任務的石英工作。

我們對該應用程序沒有任何問題,前提是至少每個作業的作業名稱不同。你也可以有不同的組名,如果我沒記錯的話,jobgroup + jobname組合形成一個工作鍵。

無論如何,我們在創建一個來自不同節點的作業時沒有問題,但當時的石英(大約6個月前,我不相信這已經改變,但我不確定)沒有提供停止集羣中的作業,它只能停止執行停止命令的節點上的作業。

如果您只是想在應用程序啓動時創建固定數量的作業,則最好將該作業委託給其中一個節點,因爲將從每個節點的相同屬性文件讀取作業名稱/組,並且衝突將會出現。

0

你有沒有試過在它們上面創建它們?我想你會因爲重複的名字而發生衝突。 所以我認爲其中一個成員應該在啓動過程中創建時間表。

0

如果集羣中的預定義屬性像您說的那樣,那麼您應該只有一個系統爲該集羣安排作業。如果所有系統都這樣做了,那麼如果每臺服務器都創建或刪除了相同的作業和觸發器,則可能會不必要地重新創建作業,並且可能會將其置於奇怪的狀態。

您只需將作業的屬性部署到一臺服務器,然後只有一臺服務器會嘗試創建它們。

您可以製作一個單獨的應用程序,其目的是安排作業並只運行一次。

如果這些是Web服務器,您可以製作一個簡單安全的REST API來觸發調度過程。然後,您可以編寫一個自動腳本來訪問該API,並啓動作爲部署的一部分或任何其他需要的時間安排作業。如果負載平衡器後面有多個服務器,則應該只有一臺服務器,並計劃將石英保存到數據庫支持的作業庫的作業。羣集中的其他節點將在下一次從數據庫更新時接收它們。