在node.js上使用集群来实现多核

时间:2020-09-11 11:40:49

标签: node.js

我对node.js完全陌生,我们有一个可运行的预构建应用程序,但它不使用集群,因此仅在一个核心上运行,因此清除了服务器。运行Nodejs 10.22.0。

以下代码在原始app.js文件中运行

const express = require('express'),
      app = express();
const cors = require('cors');
const routeOne = require('./routeOne/routes');
const routeTwo = require('./routeTwo/routes/routes');
const port = process.env.PORT || 5000;

app.use(cors());

app.get('/', function (req, res) {
    res.send('Node Server Online');
});

app.use('/routeOne', routeOne);
    
app.use('/routeTwo', routeTwo);

server = app.listen(port, () => console.log(`Listening on port ${port}`));

let io = require('socket.io')(server);

//Edit socket routes
// io.on('connection', socketRoutes);
// io.on('connection');

我从Node.js on multi-core machines中发现了下面的集群代码,但是由于我不太了解它在做什么,所以我完全迷失了使用它的机会。

var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
    // Fork workers.
    for (var i = 0; i < numCPUs; i++) {
        cluster.fork();
    }

    cluster.on('exit', function(worker, code, signal) {
        console.log('worker ' + worker.process.pid + ' died');
    });
} else {
    // Workers can share any TCP connection
    // In this case its a HTTP server
    http.createServer(function(req, res) {
        res.writeHead(200);
        res.end("hello world\n");
    }).listen(8000);
}

尝试将应用程序/服务器代码包装在http.createServer函数中,但它会破坏服务器。尝试在if集群语句周围的get请求上输出res.send,只是回想它没有运行isMaster。

不知道我在做什么,但是现在当我与几个用户一起使用该应用程序时,它会锁定。有人可以帮忙吗?

0 个答案:

没有答案