Это хороший способ создать высоконагруженный сервер на node.js? Мне нужно запустить высоконагруженный (1-3k запросов) http-сервер для обработки почтовых запросов. В качестве бэкэнда я выбрал node.js с экспрессом. Я создал один общий http-сервер для всех разветвленных процессов. Локальные тесты дают мне результат в 3,75 секунды на 3000 запросов.
const cluster = require('cluster');
const port = 3000;
var express = require('express');
var cors = require('cors');
var queryController = require('./controllers/queryController');
var app = express();
app.set('view engine', 'ejs');
app.use(cors());
if (cluster.isMaster) {
const cpuCount = require('os').cpus().length;
// Forking.
for (let i = 0; i < cpuCount; i++) {
cluster.schedulingPolicy = cluster.SCHED_NONE;
cluster.fork();
}
cluster.on('fork', (worker) => {
console.log(Worker #${worker.id} is up!);
});
cluster.on('listening', (worker, address) => {
worker.on('message', (msg)=>{
...
} );
});
cluster.on('disconnect', (worker) => {
console.log(The worker #${worker.id} has disconnected);
});
cluster.on('exit', (worker) => {
console.log(Worker ${worker.id} is dead);
cluster.fork();
});
} else {
//All forks listen 3000 port and each uses own controller to handle a requests
queryController(app,cors);
app.listen(port, function(){
// console.log("Listening on port 3000!");
});
process.on('uncaughtException', (err) => {
console.error(err.message);
console.error(err.stack);
process.exit(1);
});
}