2011-06-09 47 views
3

我正在開發一個嚴重依賴作業調度的基於Web的應用程序。作業將會非常短暫,比如單個HTTP請求。但是,它們會有很多。可能每天都會安排數千個工作,但並非全部都在同一時間。我的第一個傾向是用crontab來安排這些工作,但我不確定這是否是最好的解決方案。作業調度 - crontab的最佳解決方案?

我看到crontab主要用於安排工作密集型管理任務,但不適用於非常短的工作。 crontab是否適合?它能處理如此多的工作嗎?我應該實施自定義解決方案嗎?有沒有任何服務可以提供更好的解決方案&的性能?

非常感謝!

+0

我會記住的一件事是,如果存在連接問題或其他問題,工作方式如何。如果有任何重疊的機會,你可能會想要提醒你或者採取其他行動,如果他們開始堆積。 – 2011-06-09 20:36:45

回答

0

這就是我用我的個人網站。當然,cron有能力運行長時間運行的任務,但絕不應該僅限於此。

0

克朗的分辨率爲一分鐘;它每分鐘只喚醒一次,看是否應該運行任何東西。如果您需要更緊密的解決方案,則需要定製解決方案。

此外,如果您在OS X上執行此操作,您將使用launchd而不是cron。 (但仍然支持cron)。

3

Cron將運行任何東西 - 長或短。但是,如果您每天要運行數千個工作,那麼您可能會遇到cron允許的最大頻率爲每分鐘一次的問題。如果您需要更高的費率,那麼您將不得不尋找其他解決方案。

Cron可能的替代方案是脂肪控制器,它的工作原理類似於cron,它基本上可以運行其他程序,但有一些優點。肥胖控制器可以做幾件事情:

  • Daemonise什麼 - 給它任何PHP,Python和任何腳本,甚至一個Java應用程序,它可以daemonised到一個後臺進程。

  • Mulitsk的任何東西 - 可以並行運行任何腳本/程序的許多實例。它甚至支持反饋,因此處理批量數據的腳本可以說,是否必須運行更多實例(即,還有更多數據仍然需要處理),或者沒有更多數據,因此無需運行腳本一段時間。

  • 重複任何事情 - 任何腳本在完成執行後都可以重新運行。您也可以指定一個時間間隔,以便在重新啓動前等待x秒(這可能對您的情況有用)。至關重要的是,它在腳本完成重新啓動之前等待x秒鐘,cron將在腳本啓動後等待x分鐘,因此有可能最終導致多個腳本同時運行的實例可能不是您想要的。

有正在醞釀更多的功能 - 該項目正在積極發展,我歡迎任何建議 - 如果他們是有趣的話,我會盡我所能將其納入!

的網址是:http://www.4pmp.com/fatcontroller/

我在改造現場的過程中,所以它目前是一個有點難看,但有大量的信息有關配置,入門和使用情況。

+0

看起來不錯!一個對我來說很有必要的功能就是複雜的調度,就像CRON表達式一樣。 – Denny 2011-06-10 02:22:44

+0

你可以做的是讓cron運行胖控制器的實例。通過在「應用程序模式」下運行,它將在批處理腳本報告它沒有任何工作要做時結束。我想在網站上有一個這樣的新聞通訊的例子。 – SlappyTheFish 2011-06-10 05:23:03

+0

另一種選擇是將你的工作安排到一個保存在數據庫表中的隊列中 - 也許你的UI正在創建這些工作?胖控制器然後可以定期運行一個腳本,檢查隊列中是否有任何工作,如果是,執行它們。 – SlappyTheFish 2011-06-10 07:50:57

0

我的公司生產CloudQuartz(www.thecloudblocks.com),它允許您通過API計劃作業,並在運行時得到回調。

我們是這樣做的,所以我們可以在使用CRON或Windows調度程序無法實現的服務器集羣上安排作業。