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次。

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