Задать вопрос
Tpona
@Tpona
Ужасный перфекционист

Nodejs — и все же как решается задача с многопоточностью?

Сразу оговорюсь я вообще не работал с NodeJS.
Как пример: задача организовать сервис по телефонии на asterisk (работа через AGI).
Исходящие и входящие звонки.

У меня еще стойкое не понимание принципов построения приложений с использованием NodeJS. Прочитал несколько статей, в голове засели слова про блокирующие операции, однопоточность.
Как я понял, с реляционными БД вообще не стоит работать на NodeJS.

Вопрос: сможет ли NodeJS обрабатывать параллельно множество звонков?
Более общий вопрос: стоит ли использовать NodeJS, если необходимо обрабатывать длительные операции. На сколько длительные они могут быть?
  • Вопрос задан
  • 4460 просмотров
Подписаться 4 Оценить 2 комментария
Решения вопроса 1
@MrCheater
Full-Stack JS. В прошлом программист-олимпиадник
Многопоточность решается так - поднимается кластер из нескольких Node.js контейнеров, а перед ним ставится балансировщик.

Практически всё кодится на асинхронных функциях без блокировок

БД можно подключить практически любую. К ним написаны асинхронные либы без блокировок

NodeJS может всё (а чего не может - можно сделать через внешние программы)
Длительность операций любая
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
edli007
@edli007
full stack, team lead
Вы прочитали сильно устаревшие статьи (очень сильно)
https://nodejs.org/api/cluster.html
Ответ написан
atlantech
@atlantech
Full Stack Software Developer
Нода хорошо справляется с сетевыми/файловыми операциями, заточена на поддержание большого количества соединений и хорошо уживается с реляционками. Просто при разработке следите за тем, чтобы ваш код не блокировал основной поток. Не пытайтесь руководствоваться "синхронным" подходом, как, например, в php. NodeJS это callback-ориентированная архитектура, если так можно выразиться.
Ответ написан
@maddimons
Инженер связи
Посмотрите в сторону FastAGI + Twisted. Фастом разгрузите свой мощности, а Twisted решит проблему блокировок.
Почему вы смотрите в сторону Nodejs?
Ответ написан
Ваш ответ на вопрос

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

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