@tiwana6

Как организовать сложные вычисления в NodeJS?

Нужно организовать сборку angular приложения на сервере (ssr). Задача сама по себе ресурсоемкая. Есть и другие сложные вычисления, которые не хотелось бы выполнять в основном потоке.

Есть варианты, но все с недостатками:
- MQ Message broker (Kafka, RabbitMQ). Из минусов, оверхед на обмен сообщениями, хотелось бы моментально отдавать ответ.
- Node Cluster. Тут непонятно, сколько потоков создавать? Что делать если все потоки заняты, а результат нужен?
- Worker Threads. Минус - все в одном потоке, вычисления нормально не параллелятся. На сколько это будет влиять на основной поток?

Из всех перечисленных вариантов, серьезного опыта нет нигде. Хотелось бы услышать мнения других. Поделитесь опытом, как вы решаете проблему сложных вычислений в NodeJS?
  • Вопрос задан
  • 253 просмотра
Пригласить эксперта
Ответы на вопрос 1
@twolegs
SSR не такая уж сложная задача. Если он выполняется очень долго - тут уже вопросы к оптимизации вашего приложения.
Вообще, в первую очередь вам нужно ответить на два вопроса:
1. На какую нагрузку вы рассчитываете? Сколько rps ожидается?
2. Проводили ли вы уже какое-то нагрузочное тестирование? Вы уверены, что сейчас вам не хватит одного инстанса ноды?
Если количество запросов велико и один инстанс не справляется - я бы использовал поднял пару инстансов ноды с помощью, например, pm2, который выступит в роли балансировщика.
Вообще, в случае веб разработки на node, не так часто в основном потоке выполняются какие-то действительно сложные вычисления, наибольшие задержки приходятся на IO/операции с БД и другие асинхронные штуки. Остальные ваши сложные вычисления действительно сильно забивают основной поток? В этом случае да, лучше использовать workers, они в отдельном потоке запускаются.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 13:31
10000 руб./за проект
19 апр. 2024, в 13:12
35000 руб./за проект
19 апр. 2024, в 13:06
6000 руб./за проект