2013-08-21 28 views

回答

0

理論上,如果大量請求在同一秒內發生 - 或者如果每個請求都需要花費一些時間,如硬性數學 - 您的服務器可能會陷入困境。無論是對線路「末端」的人(不論是以毫秒爲單位)做出響應,還是從不完成節點在線路「前端」處理這些請求所需的所有操作。

一般而言,Node採取的策略是,如果您要執行一個長操作 - 就像查詢數據庫一樣 - 程序的執行不應該等待,而應該「回調」其他函數數據庫查詢最終完成。

我在another SO answer中多說這個。您可以使用Google的「node.js是癌症」來了解您正在談論的其他示例。

但是這種策略的普遍性是Node和其他語言/框架之間的主要區別之一:這就是Javascript如何處理的。

現在,在實踐中,實際上發生了幾件事情。首先,任何生產Node應用程序都應該使用Cluster或某種提供負載平衡的解決方案運行。因爲您的應用程序需要多個進程才能工作,所以您的解決方案可以一次執行多個任務。其次,一般而言,Node.js保持得非常好,因爲不需要等待所有東西。它使您的服務器保持繁忙,而不是冷卻它的噴氣機,等待要完成的事情。

第三,是的,你必須小心你在服務器上做什麼。如果某些事情需要很長時間(修改數據庫中的所有記錄),可能明智地通過某種工作隊列系統在後臺執行:「嗨,我需要在所有(這些)記錄中更新此人的用戶名在數據庫中「可能應該由另一個Node.js進程作爲worker。

相關問題