Задать вопрос
ILE-Salim
@ILE-Salim
Web-developer

Взаимодействие мастер процесса и воркеров в nodejs?

Добрый вечер!
Хотел спросить про обмен сообщениями между мастером и воркерами в NodeJS.
Зачем мне это?
Например, у меня есть чат на websockets, и при многопоточном режиме, например с модулем cluster, клиенты теряются и это очевидно.
Я не хочу использовать Redis или аналогичную базу данных, а хотел бы сделать это с встроенными средствами NodeJS.
В NodeJS есть возможность общаться между процессами.

СОБСТВЕННО ВОПРОС:
Когда клиент подключается то текущий воркер отправляет мастеру сокет объект клиента, а мастер закидывает этого клиента в свой глобальный объект, а потом отправляет этот объект обратно текущему воркеру. А если у меня онлайн 10k клиентов, то тогда при подключении других клиентов отправляется очень большой объект с 10k клиентами, плохо ли это? Лучше ли это, чем использования например Redis?
  • Вопрос задан
  • 1665 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
redis с его механизмом pub/sub будет проще, быстрее и удобнее
А так, общаться между воркером и мастером можно
самое простое - это через встроенное в child_process/cluster ipc - тормознуто, но работает без лишних заморочек
вариант посложнее - tcp/upd/unix сокет
Ответ написан
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
Я рекомендую все же TCP, потому, что на стандартном IPC решение не будет масштабируемым, его нельзя будет размазать на несколько серверов. А если у Вас не стоит задача подключать много клиентов, например, будет 10-50к подключений, то это и один процесс может обработать, тут даже кластера из мастера/воркера не нужно, это очень маленькие цифры. Один сервер может потянуть до 2-3млн соединений даже (в зависимости от интенсивности обмена, конечно). Я не понял фразу "клиенты теряются и это очевидно", не понятно, куда теряются и это не очевидно. И еще вот примеры мои дам, которые я студентам на лабы даю по IPC и TCP: https://github.com/HowProgrammingWorks/InterProces...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы