原諒我的無知,但來自Django/Python背景我可以看到讓Celery隊列通過後臺較慢的進程工作,同時Web界面儘可能快地更新的巨大好處。節點JS工作人員 - 他們需要什麼?
但是,在Node異步工作的情況下,隊列系統的用例是否大幅減少?
例如:
1 - 用戶發佈內容的網站, 2 - 網站的響應,則郵件管理員。
在Django中,您會將管理郵件發送給任務,稍後執行,然後響應請求。芹菜在後臺發送郵件。
在節點中,您打電話給您的郵件程序,然後回覆請求。然後郵件發送一個回叫來說明是否完成,在這一點上用戶已經在查看響應。
那麼,爲什麼我會使用一個隊列與節點?我猜測事情比這更復雜 - 似乎對於交易郵件這些微不足道的事情來說,沒有必要......
或者我誤解了它是如何工作的?
因此,如果我想要做一些像調用一個外部API來充實一個用戶信息 - 例如。通過對Google地理編碼器的請求調用進行反向地理編碼。這個請求不會讓我的節點進程停滯在下面的傳入請求中?但是如果有很多CPU使用它會.. ..? – 2013-02-21 10:03:36
你需要對它進行基準測試,但是。這大致是這個想法。看看這裏來了解在等待io操作時可以完成多少操作:http://www.eecs.berkeley.edu/~rcs/research/interactive_latency.html。節點一次只能處理一件事,所以如果數字處理的話,它不能處理請求。只要你做任何io,你就可以釋放節點去做其他的事情。 – AndyD 2013-02-21 10:44:51
(邊緣)清晰度的改寫:如果您的並行執行涉及大量等待HTTP或文件系統請求返回的請求,那麼節點的內置異步I/O將爲您提供足夠的並行性。如果您的並行執行涉及在本地運行大型計算(對視頻進行代碼轉換;運行仿真),那麼節點的單線程特性會使您停止工作,如果可能的話,您需要將工作轉移給工作人員。 – Dave 2013-11-13 00:32:54