Я не владелец node.js, поэтому я хотел бы получить больше точек зрения по этому поводу.
Я создаю веб-сервер HTTP node.js, который должен обрабатывать не только множество одновременных соединений, но и долго выполняющиеся задания. По умолчанию node.js запускается в одном процессе, и если есть фрагмент кода, который требует много времени для выполнения любого последующего соединения, необходимо дождаться, пока код завершит то, что он делает в предыдущем соединении.
Например:
var http = require('http');
http.createServer(function (req, res) {
doSomething(); // This takes a long time to execute
// Return a response
}).listen(1337, "127.0.0.1");
Итак, я подумал о том, чтобы запустить все длительные задания в отдельных потоках с помощью библиотеки node-webworker :
var http = require('http');
var sys = require('sys');
var Worker = require('webworker');
http.createServer(function (req, res) {
var w = new Worker('doSomething.js'); // This takes a long time to execute
// Return a response
}).listen(1337, "127.0.0.1");
И чтобы сделать все это более производительным, я подумал также использовать cluster , чтобы создать новый процесс узла для каждого ядра ЦП.
Таким образом, я рассчитываю сбалансировать клиентские соединения через разные процессы с cluster
(скажем, 4-узловым процессом, если я запустил его на четырехъядерном процессоре), а затем выполнить долгосрочное задание в отдельных потоках с node-webworker
.
Что-то не так с этой конфигурацией?