Добрый день, я frontend разработчик. У меня несколько вопросов
1. Node js однопоточный, использует асинхронную модель ввода/вывода (I/O) и событийный цикл для обработки запросов. Представим такой сценарий есть клиентский часть. Одновременно 10 тыс пользователи делают запрос на node js с огромным массив данных и node js нужно обработать, сделать запрос на базу данных чтобы сохранить данные каждого пользователя. С помощью перебора каждого элемента и сохранить на базу данных, но так как JavaScrtipt однопоточный он может заблокировать поток к примеру в браузере если в консоль запустить вот такой цикл
for (let i = 0; i < 99999999999999; i++) {
console.log(i)
}
, то браузер заблокирует поток пока не закончится цикл и вовсе может сайт упасть. То как node js со своим однопоточным может обработать такие сложные запросы?
2. Память. Я недавно написал CRUD приложение на nest js. Собрал сервер в docker и вижу что image достигла больше 1 гигабайта памяти, тот же java достигает всего лишь 500 мегабайтов. Почему node js сжирает много памяти?
3. Сможет ли node js хорошо справится с работой сокетом?