2009-09-29 28 views
0

對於我正在處理的新項目,我需要建立一個具有主服務器(主站)和多個工作站(從站)的集中式計算環境。爲主人工作的從站 - 分發作業

主人將收到幾種類型的作業單與diferent間隔和到期日期,例如:

NAME  INTERVAL  EXPIRATION  OPERATIONS 
Job A  5 m    9 d    2592 
Job B  15 m   30 d    2880 
Job C  30 m   90 d    4320 
Job D  10 m   50 d    7200 
Job E  10 m   20 d    2880 
Job F  10 m   10 d    1440 

奴隸將要求新的就業機會通過API接口,一旦他們完成他們將發送處理將存儲在SQLite中的相關數據發送到服務器並請求新的作業。

我沒有看到奴隸部分沒有任何困難,但是我正面臨主服務器的一個小問題:爲奴隸服務的最佳選擇是什麼?我有以下幾種選擇:

  1. 預先計算並向數據庫添加作業執行的時間。
  2. 用某種邏輯叮噹每個工作(MOD操作員是否可能的解決方案)?
  3. 隨機提供工作。

這可能是一件好事情,說這最後一個選項真的不是一個選項,因爲我收取的操作數(過期/間隔),我認爲我的客戶不會太高興,如果他們會爲別人付錢。

我想聽聽你對我應該怎麼做的想法。

+0

我可能從我的理解錯誤如果一個工作有10個操作和間隔是5分鐘..任何客戶應該必須在5分鐘後運行該工作,然後剩下的操作將是9?並且這個循環一直持續到作業達到0爲止? – 2009-09-29 20:39:06

+1

你看看Gearman嗎?它是爲工作分配而建立的。沒有看到你如何安排任務,但一個cron會做。你如何計劃實施服務器?在一個連續的循環? – 2009-09-29 20:49:41

回答

1

通過允許從屬人員在有時間處理它時請求工作,您將獲得更好的通過量。

如果主人分配作業,一些奴隸可能會等待無所事事,而其他人則過載。

如果從站在一段時間內沒有回覆答案,您還需要添加一些功能以再次提供作業。

相關問題