Я изучаю кластер. Мой учитель демонстрировал мне, почему использовать кластер. Например, учитель выполнил следующий код:
const cluster = require('cluster');
const express = require('express');
if (cluster.isMaster) {
for (let i = 5; i--;)
cluster.fork();
} else {
const app = express();
// Handling routes
app.get('/', (req, res, next) => {
const start = Date.now();
while ((Date.now() - start) < 4000);
return res.send('This route had taken almost 4s to load...')
})
app.get('/fast', (req, res) => res.send('I am fast'));
app.listen(3000);
}
Теперь, в машине учителя, когда Sir отправляет запрос в '/', он блокирует цикл обработки событий ... Я имею в виду, что Sir отправлял запрос в '/быстрый », но он не работал на компьютере учителя до тех пор, пока не завершился маршрут« / »(через 4 секунды) ...
Но на моей машине, когда я пытался запустить тот же код, это былоне тот случай, когда я отправил запрос на '/', он не заблокировал цикл обработки событий, и отправка запроса по другим маршрутам работала как обычно ... Я подумал, что может быть какое-то экспресс-обновление, которое делает все это заСцена, поэтому я попытался обработать запрос с использованием стандартного модуля http следующим образом:
const http = require('http');
const server = http.createServer((req, res) => {
if (req.url === '/') {
const start = Date.now();
while ((Date.now() - start) < 4000);
return res.end("Hello world");
}
if (req.url === '/fast') {
return res.end("This is fast...");
}
});
server.listen(3000);
Результат был таким же ...
Так что использование кластера бесполезно? Есть ли проблема в моем коде? Или есть какое-либо обновление nodejs, которое не блокирует цикл событий.