Sobes.tech
Senior

Node.js je aplikacija sa jednom niti. Kako obrađuje mnogo istovremenih zahteva?

sobes.tech АИ

Одговор од АИ

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

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