稳定性: 2 - 稳定

    单个 Node.js 实例运行在单个线程中。 为了充分利用多核系统,有时需要启用一组 Node.js 进程去处理负载任务。

    cluster 模块可以创建共享服务器端口的子进程。

    1. const cluster = require('cluster');
    2. const http = require('http');
    3. const numCPUs = require('os').cpus().length;
    4. if (cluster.isMaster) {
    5. console.log(`主进程 ${process.pid} 正在运行`);
    6. // 衍生工作进程。
    7. for (let i = 0; i < numCPUs; i++) {
    8. cluster.fork();
    9. }
    10. cluster.on('exit', (worker, code, signal) => {
    11. console.log(`工作进程 ${worker.process.pid} 已退出`);
    12. });
    13. } else {
    14. // 工作进程可以共享任何 TCP 连接。
    15. // 在本例子中,共享的是 HTTP 服务器。
    16. http.createServer((req, res) => {
    17. res.writeHead(200);
    18. res.end('你好世界\n');
    19. }).listen(8000);
    20. console.log(`工作进程 ${process.pid} 已启动`);
    21. }

    运行代码,则工作进程会共享 8000 端口:

    1. $ node server.js
    2. 主进程 3596 正在运行
    3. 工作进程 4324 已启动
    4. 工作进程 4520 已启动
    5. 工作进程 6056 已启动
    6. 工作进程 5644 已启动

    在 Windows 上,尚无法在工作进程中设置命名管道服务器。