您好,登錄后才能下訂單哦!
下面的express程序可以看出nodejs單線程的缺陷,當訪問主頁面localhost:3000時,doWork(5000)方法會暫停5秒鐘。
由于長時間的等待時間會使得node陷入到停頓的狀態。當其他的請求來的時候,也只能夠等待。例如當訪問后立即訪問localhost:3000/fast,只能夠等待一段時間。
1 | const express = require('express'); |
使用nodejs內置的cluster module可以讓多個node實例同時運行,管理多個node實例。
cluster管理多個node實例。cluster manager實例與child實例都會調用此文件中的代碼。
通過cluster.isMaster將兩者區分開。
cluster manager 中cluster.isMaster為true。
child實例實例中cluster.isMaster為false。
cluster.fork()代表新開一個child 實例。
下面的代碼在一開始,cluster manager實例就新開了4個child 實例。
所以即便是一個child停頓不會影響其他child實例工作。
1 | const cluster = require("cluster"); |
并不是cluster創建的child實數越多越好。因為cluster會讓所有的請求都同時的結束。
想象一下我們fork了6個child,當6個請求來的時候,如果計算機沒有這個處理能力,只能處理兩個線程,但是6個請求又必須同時的時間結束,這反而拖慢了所有的速度。
這不如兩個兩個的執行好!
本文鏈接: https://dreamerjonson.com/2018/11/10/深度理解nodejs-4-cluster多線程node/
版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY 4.0 CN協議 許可協議。轉載請注明出處!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。