Sobes.tech
Back to questions
Senior
5

Node.js — однопоточное приложение. Как оно обслуживает множество одновременных запросов?

Companies where asked
Zuru Tech

Answer from 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);

Здесь сервер не блокируется на время операции, а продолжает принимать новые запросы.