Senior
29
Node.js — однопоточное приложение. Как оно обслуживает множество одновременных запросов?
Сұралған компаниялар
Zuru Tech
AI-дан жауап
sobes.tech AI
Node.js работает на однопоточном Event Loop, который позволяет эффективно обрабатывать множество одновременных запросов без создания новых потоков для каждого.
Основные механизмы:
- Асинхронные операции ввода-вывода (I/O) не блокируют Event Loop. Например, чтение файлов, запросы к базе данных, сетевые операции выполняются в фоне.
- Когда операция завершается, вызывается callback или промис, и Event Loop продолжает обработку.
Таким образом, Node.js не создаёт новый поток на каждый запрос, а использует неблокирующий асинхронный подход, что позволяет обслуживать тысячи одновременных соединений с минимальными накладными расходами.
Пример:
const http = require('http');
const server = http.createServer((req, res) => {
// Асинхронная операция, например чтение из базы
someAsyncOperation().then(data => {
res.end(data);
});
});
server.listen(3000);
Здесь сервер не блокируется на время операции, а продолжает принимать новые запросы.