NodeJS однопоточный, как тогда на нём строят масштабные проекты?
Добрый день.
NodeJS однопоточный, как тогда на нём строят масштабные проекты?
Достаточно добавить код в API авторизации:
for (let i = 0; i <= 1000000000; i++) {
console.log(i);
}
Пример надуманный. Но тоже самое может быть при долгом запросе в базу данных на получения пользователя при авторизации.
И уже ни один пользователь не сможет авторизоваться.
И всё, весь сервис недоступен.
> Но тоже самое может быть при долгом запросе в базу данных на получения пользователя при авторизации.
Не может. Смысл как раз том, что ожидание ответа от БД/сети/диска и т.п. не требует от ноды никаких действий и она в это время может заниматься другими вещами.
Как очень упрощённый пример, запустите у себя в консоли браузера setTimeout(() => console.log('готово'), 5000); Через 5 секунд вы получите в консоли надпись «готово», но всё это время вы без проблем могли пользоваться сайтом.
Андрей Рудаков, да.
Но, когда у вас будет 10000 пользователей, то наверное вы уже научитесь собирать кластеры и вот эти вот все сложные слова типа облаков, кубернетисов и т.п.
Alexandroppolus, коннектов да. А вот какой-то реальной обработки уже не факт.
Но в любом случае, это всё зависит от ситуации и кучи других неозвученных параметров.