Я новичок в Node.js и Socket.io, и для моего текущего проекта веб-разработки у меня есть настройка в Socket.io, и мне нужно быть в состоянии сделать много и много (Потенциально сотни) отдельных экземпляров. Есть какой-либо способ сделать это?Как дублировать сервер Node.js/Socket.io
ответ
Порождение дочернего процесса в узле довольно просто, особенно если это другой процесс узла.
child_process.fork является одним из возможных вариантов
import cp = require('child_process');
var proc = cp.fork('path/to/module');
proc.on('error', function(err) {
console.error('The process failed to start');
console.error(err);
});
proc.on('exit', function(code, signal) {
console.log('The process was terminated by ' + signal + ' and exited with code ' + code);
});
Вы также можете посмотреть на cluster, он использует child_process.fork
нереститься детей, но дополнительные функциональные возможности построены на вершине, чтобы автоматически обмениваться ресурсами между процессами, например, с дескриптором сервера.
Хотя я точно не знаю, как вы планируете использовать сотни детей, я бы рекомендовал ограничить детей количеством ядер, доступных на машине. Нерест сотен детей может помешать работе. Вы должны полагаться на асинхронную природу узла, чтобы справляться с масштабируемостью, нерестовые работники не очень помогают значительно балансировать нагрузку на обработку доступных процессоров.
Хотя это технически является ответом на создание множества экземпляров, это, вероятно, не то, что должен делать OP. Вероятно, у них должно быть много пользователей, использующих один сервер, а не много серверов. – jfriend00
О, и вы также не можете иметь все эти экземпляры сервера, которые слушают один и тот же порт. – jfriend00
Лучше вам следует объяснить, в чем ваш прецедент, поэтому мы можем посоветовать вам больше. По сути, у вас должен быть один экземпляр на сервер, поэтому, если вы хотите сотню экземпляров, затем создайте сотни серверов. Но нет ничего естественного в том, чтобы иметь сотни экземпляров socket.io. – Hosar
Почему бы вам просто не использовать один сервер и не использовать его много клиентов? На сервере чата не должно быть проблем с масштабированием. Вы должны иметь возможность размещать тысячи пользователей с одним сервером. Это обычный вариант использования для сервера. – jfriend00