2015-04-23 33 views
1

一旦用戶輸入網站地圖,以下是我希望我的節點應用程序執行的過程。如何讓我的節點應用程序同時執行1000次異步操作?

1)從網站地圖的所有URL抓起

2)每個URL被訪問和被提取的元數據(使用cheerio) - 並保存到分貝

3)的每一個的URL的社會計數是獲取並保存到數據庫

4)每個URL被再次訪問和鏈接從URL中

5)每一個網址給出來的鏈接被訪問和狀態檢查代碼並提取保存到db

我已經爲上述每個步驟(使用異步模塊)編寫了控制器操作,並且單獨地他們正常工作,雖然當有一個大網站時,步驟#4可以進入20k或30k不同的URL,然後執行步驟#5實際訪問它們會導致相當多的503錯誤,如果setTimeout速度不夠快,那麼我的問題是,執行上述過程的最佳方法是什麼?

正在和一位朋友交談,他建議我看看Kue或RabbitMQ,但是我從來沒有使用過任何這樣的基於隊列的模塊,所以給了我想要實現的功能,不太清楚最好的方法是什麼是上述

反饋將是非常美妙

+1

發佈您的代碼。 nodejs是完美的,你不需要一個隊列,但也許想看看集羣。 –

回答

2

編輯:我只是意識到你想添加到您的隊列中已經爲...前的長響應遺憾動態隊列。看看async.queue(),它可能會讓你朝着正確的方向前進。還可以看看有沒有子進程的Redis隊列(redis-dist-job-queue,也許?),可能看看kju,儘管Kue看起來也是一個很好的選擇。 RabbitMQ看起來像一個完整的消息服務,這可能是你想要的東西矯枉過正。

相關問題