2014-07-04 60 views
0

我想用齒輪人作爲一個web項目的隊列系統。爲此,我嘗試了工程師和gearmanManager,這非常棒。但是請知道,我問自己,如果一個工作者,工作或服務器已經發生了什麼(例如php錯誤或任何原因可能)。Gearman和失去的工人

  • 如果我運行在客戶端(瀏覽器) 等待回調,工人/服務器崩潰的SYNCHRON工作,會發生什麼?
  • 如果有異步作業在工作時發生故障,會發生什麼情況?請問齒輪工再試一次(導致它在MySQL中作爲隊列存儲)還是齒輪人員會忽略它?如果它不會被忽略並且工人會一遍又一遍地崩潰,那麼會發生什麼?

我想知道系統是否是scalabel(例如通過NFS)。你是否有我可以獲得的經驗或實例?

謝謝大家,有一個非常愉快的週末......

菲爾

回答

2
  1. 如果服務器已經崩潰,你的客戶不會有任何連接。你如何處理,取決於你的應用程序。如果工作人員崩潰,並且您嘗試運行同步任務,則客戶端將等待,直到工作人員可用,除非您提供了超時值。

  2. 如果執行異步任務,並且工作人員,齒輪人員將重新執行任務。如果它使每個抓住它的工人崩潰,你可能沒有任何活躍的工人。 C-version/gearmand可以選擇調整此行爲:

    -j [--job-retries] arg(= 0)在作業服務器刪除它之前運行作業 的嘗試次數。這 是有用的,以確保不好的工作不 崩潰所有可用的工人。默認爲 不限。

如果您部署損壞或脆弱的代碼,您將遇到問題,無論您使用的是哪個系統。錯誤的代碼打破了應用:-)

Gearman設置是可擴展的,但請記住,如果您使用持久隊列支持,則每個服務器都需要擁有自己的後端。您不能在服務器實例之間共享相同的數據庫和表,因爲永久隊列僅作爲備用而保留,以防齒輪命令死亡並且必須重新啓動。如果需要,允許應用程序輕鬆地再次排列任務可能會更有用。

+0

你好fiskfisk,謝謝你回答我的問題。這幫助我擺脫困境:) :)。有一個很好的星期一親切的問候 – TheTom

+0

@ user3804760如果它解決了您的問題,請接受答案。 – MatsLindh