Sobes.tech
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);

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