我有兩個 express 應用程式在不同的埠上運行,因為我們知道 express 在單個執行緒上運行,所以它們是否為自己分配了不同的內核?
Cluster 模塊復制 express 應用程式,使它們使用不同的核心。
但是假設如果我使用兩個或更多應用程式并將它們連接起來,這是否意味著我幾乎已經創建了一個集群模塊?
uj5u.com熱心網友回復:
在同一個 nodejs 行程中運行的兩個 express 應用程式將共享 nodejs 用于運行您的 Javascript 的一個執行緒。它們還將共享相同的事件佇列。因此,如果每個快速應用程式的請求幾乎同時到達,那么一個將首先運行,然后另一個將有機會運行。它們不會在不同的內核上并行運行。
cluster 模塊實際上啟動了額外的 nodejs 行程,然后將傳入連接路由到集群行程。在這種情況下,您擁有完全獨立的行程,這些行程彼此獨立運行并且可以使用不同的內核。
在同一個 nodejs 應用程式中運行的兩個 express 應用程式不會提供與集群相同型別的多核并發。
我有兩個 express 應用程式在不同的埠上運行,因為我們知道 express 在單個執行緒上運行,所以它們是否為自己分配了不同的內核?
不會。Nodejs 將有一個執行緒為這兩個 Express 應用程式提供服務。
但是假設如果我使用兩個或更多應用程式并將它們連接起來,這是否意味著我幾乎已經創建了一個集群模塊?
不會。同一個 nodejs 行程中的兩個或多個 Express 應用程式不會創建等效的集群。實際上,與僅在 nodejs 行程中由一個 Express 應用程式提供相同數量的請求相比,它根本沒有給您任何優勢。
如果您希望兩個 Express 應用程式每個都可以訪問自己的 CPU 內核,那么您應該將每個 Express 應用程式放在自己的 nodejs 行程中。然后,作業系統可以為每個 nodejs 行程分配一個單獨的核心。
另外,請記住,應用程式本身不會選擇核心。作業系統查看哪些行程正在等待運行的執行緒并分配一個核心。該分配甚至可能是動態的(隨著時間的推移改變它使用的核心)。雖然隨著時間的推移,作業系統會更喜歡對給定行程使用相同的內核(因為可能會有更好的快取),但它不會被迫只使用相同的內核。
CPU 內核管理和分配由作業系統根據競爭行程的需求進行管理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/447606.html
標籤:javascript 节点.js 表示
上一篇:帶有路由的快速req.params的html表單提交
下一篇:使用nodejs讀取串口資料
