[英]How work when a lot of requests arrive at the web server at the same time? NODEJS
在NODEJS中:如果節點不使用多個線程,那么我們只能同時運行一個函數。 當許多請求同時到達Web服務器時,該如何工作?
可以清除有關線程和進程的全景嗎?
從理論上講,如果大量請求在同一秒內發生-或每個請求都需要花費一些時間(例如硬數學),則服務器可能會陷入癱瘓。 要么不響應熱線“末端”的人員(以毫秒為單位),要么永不完成Node所需要做的所有事情,以響應熱線“末端”的那些請求。
總的來說,Node采取的策略是,如果您要執行長時間的操作(例如查詢數據庫),則程序的執行不應該處於等待狀態,而應在數據庫查詢到時“回調”其他功能。最終完成了。
我在另一個SO答案中進一步討論了這一點。 您可以使用Google“ node.js致癌”獲取有關您正在談論的內容的其他示例。
但是這種策略的普遍存在是Node與其他語言/框架之間的主要區別之一:這就是Javascript的處理方式。
現在,在實踐中,實際上發生了幾件事。
首先,任何生產節點應用程序實際上都應該與群集或提供負載平衡的某種解決方案一起運行。 由於您的應用程序要經歷多個流程,因此您的解決方案可以一次完成多個任務。
其次,一般而言,Node.js保持良好狀態,因為不等待所有內容的想法。 它使您的服務器保持繁忙,而不是冷卻噴氣機,等待完成某件事。
第三,是的,您必須小心在服務器中執行的操作。 如果某件事將花費太長時間(修改數據庫中的所有記錄),則明智的做法是通過某種類型的工作人員隊列系統在后台執行此操作:“嘿,我需要在所有(這些)記錄中更新此人的用戶名在數據庫中”可能應該由另一個Node.js進程作為工作進程來發生。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.