Как стать автором
Обновить

Комментарии 5

В этом посте я собираюсь показать вам, как потенциально утроить производительность вашего приложения Node за счет управления несколькими потоками

Но не показал.

Я надеюсь, что это руководство дало вам представление об управлении несколькими потоками в вашем приложении Node

Представление дало, а вот пруфов того, что это ускоряет вычисления, нет.

В моем случае имеется 6 физических ядер с гиперпоточностью, это означает, что у меня в распоряжении 12 логических ядер. Поэтому при значении minWorkers равном "max", Worker Pool будет создавать и управлять 11 потоками. Наконец, последний фрагмент кода - это запуск нашего сервера и прослушивание порта 6000.

Ещё больше интересно сравнение работы этого модуля с банальным запуском нескольких инстансов ноды под супервайзером и раскидыванием через тот же nginx.

Для этого экспресс надо чтоб на разных портах стартанул, что есть задача нетривиальная, но невыполнимая. Плюс в конфиге супервизора самому указать 11 придется. Тут уже кто во что лучше умеет. Да и к тому же это совершенно разные архитектуры получатся, с одной стороны работа процессора с памятью, с другой транспорт по TCP, пусть и по локалхосту. В зависимости от теста будут различные результаты. Более сложный алгоритм сжатия при небольшой сетевой нагрузке будет лучше на воркер пул работать, что то более простое, но при высоком числе запросов будет лучше с 11 инстансами экспресса.

Зачем это если есть docker, docker swarm/k8s?

Вот так, на пустом месте, вместо легковесного потока исполнения поднять Docker, образ OS, ещё один экземпляр Node.js, связать это всё сокетами вместо прямой пересылки сообщений... Облачные провайдеры любят вас.

Почти не в тему:

Поделитесь пожалуйста примером/туториалом создания многопоточного демона на Node.js, естественно, без этого вашего web/express, но чтоб задачи (не на 10 миллисекунд) брал из sql и долго и успешно их выполнял... Crawler какой-нибудь...

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.