在Node.JS中,集群(cluster)是个高端、强大的功能。

一般情况下,Node启动一个程序,就是一个进程,占用一定的内存,使用一个CPU资源。

而如果用集群,比如是8核的机器,则可启动8个进程,占用8倍的内存。

虽然对机器的资源占用的多了,但显然的,性能提升了。

不要担心资源占用问题,我们写程序,就是要让程序性能最优。

且看代码:

const cluster = require("cluster");
const os = require("os");

//主进程
if(cluster.isMaster){

    //cpu数量(几核)
    const cpus = os.cpus().length;
    console.log(`Clustering to ${cpus} CPUS`);

    for(let i=0i<cpusi++){

        //分派子进程
        cluster.fork();
    }
}else{
    //子进程执行内容

    const http = require("http");
    const pid = process.pid;
    
    http.createServer(function(req,res){
        console.log(`Handing request from ${pid}`);
        res.end(`Hello from ${pid}\n`);
    }).listen(8000,function(){
        console.log(`Started ${pid}`);
    })
}


这段代码的程序运行时,将启动机器CPU个数个进程。

而且访问时,同一机器发起的访问,会被同一子进程处理,这就实现了有状态通信

(在低版本的Node历史时期,这是未被实现的,在那时,如果使用集群,又要实现有状态通信,还需借助Redis等记录登录状态)