#node.js #express #cluster-computing #load-balancing #node-cluster
#node.js #экспресс #кластерные вычисления #балансировка нагрузки #узел-кластер
Вопрос:
Я использую кластер и имею 2 запущенных узла. у каждого узла есть один API, который выполнял задачу около 5-6 секунд.
Например
в cluster.js
const cluster = require("cluster");
if (cluster.isMaster) {
for (let i = 0; i < 2; i ) {
cluster.fork();
}
} else {
require("./server");
}
и здесь в server.js
const express = require("express");
const app = express();
const port = 8080;
app.get("/", async (req, res) => {
await sleep(5000);
res.send('handled by process: ' process.pid);
});
async function sleep (ms){
if (ms <= 0) return;
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
};
app.listen(port, () => console.log(`port: ${port}`));
если я запрашиваю API. Первый узел получил запрос и обработал его примерно за 5-6 секунд. Прежде чем он завершит процесс и ответ, я отправляю второй запрос в API. Но запрос отправляется на первый узел, а не на второй узел. Как реализовать кластер узлов для этого?
Комментарии:
1. Как вы используете кластер? Можете ли вы опубликовать соответствующий код?
2. Хорошо, я только что отредактировал код.
3. Это нормально. Первый процесс не перегружен, поэтому он все еще может легко обрабатывать запрос. Согласно документам «». nodejs.org/api/cluster.html#cluster_how_it_works
4. Просто попробуйте перегрузить его, и вы увидите, что два узла приступят к работе.
5. Спасибо, но знаете ли вы какие-либо node.js функция или библиотека, которые могут сделать это без перегрузки?