NodeJs的cluster模塊練習

單個 Node.js 實例運行在單個線程中。 爲了充分利用多核系統,有時需要啓用一組 Node.js 進程去處理負載任務。

cluster 模塊可以創建共享服務器端口的子進程。

具體代碼如下圖所示:

// const 定義常量,var定義變量
const cluster = require("cluster");
const http = require("http");

const numCpus = require("os").cpus().length;
console.log(numCpus + ", 幾個都會執行");



const name = '描述';
console.warn(`警告${name}`);

if (cluster.isMaster) {
    console.log(`進程${process.pid}正在運行`);

    // 衍生工作進程,主進程執行完之後還會再執行numCpus次
    for (var i = 0; i< numCpus; i++) {
        cluster.fork();
    }

    cluster.on("exit", function (worker, code, singal) {
        console.log("工作進程${worker.process.pid}已退出")
    });
} else {
    // 工作進程可以共享任何TCP鏈接,本例子中共享的http服務器
    http.createServer(function (request, response) {
        // 返回200代碼正常響應
        response.writeHead(200);
        response.end("Htllo World!\n");
    }).listen(8080);

    console.log(`工作進程 ${process.pid} 已啓動`);

}

最終的執行結果爲:
 

4, 幾個都會執行
警告描述
進程15544正在運行
警告描述
4, 幾個都會執行
工作進程 16532 已啓動
4, 幾個都會執行
工作進程 16388 已啓動
4, 幾個都會執行
警告描述
警告描述
工作進程 16600 已啓動
4, 幾個都會執行
警告描述
工作進程 11068 已啓動

從上面我們可以看得出來,cpu爲4核,下面的cluster的fork方法讓程序多打印了4次。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章