根據我們所做的和看到的,一個好方法是在運行時分塊工作,而不是之前。換句話說,主/從模式是事件或時間驅動的,主模塊在隊列和運行時將工作/數據空間分割成細粒度的任務/塊。
這樣做的原因是,在粗糧級別完成時,查看計劃中的作業要容易得多。在此級別,作業對應於您正在跟蹤的單元(例如網頁,用戶配置文件或來自傳感器的流式傳輸數據)。
我們經常看到在精細粒度級別切片,但接着看到每個工作人員都在合理收集任務。我們發現,有每個工作進程多個任務(20-1000取決於任務的類型/長度?)提供之間的良好平衡:
- 優化設置(建立例如數據庫連接)
- 提供了良好的自省到工作
- 使重試和異常處理更易於管理
你會想爲每個工人的處理時間在幾分鐘而不是長時間運行的任務,只是讓你有更多的可視性工人表現等等重試隻影響有限的工作空間。使用NoSQL解決方案(尤其是像MongoHQ或MongoLabs這樣的數據庫即服務的解決方案)可以讓您輕鬆跟蹤和管理分塊和正在進行的工作。
另一個建議是創建獨立於您的應用程序環境的工作人員。這意味着要將每個工作人員編寫爲合理自包含的,以及使用回調函數,數據庫標誌和其他異步方法。它可能稍微有點多,但就像MVC應用程序設計一樣,它可以提供更大的靈活性,並允許將工作分佈在彈性工作系統上。
(全面披露:我對球隊在Iron.io,IronMQ,聯合衝剪機,並IronCache的製造商)
請問這個遠程網站對你的感覺讓20M的要求? – 2011-06-05 21:30:35
它在技術上是一個API,所以有堅持的限制。 – 2011-06-05 21:46:11