在我的node.js應用程序中,我有一個休息API,其中它有非常重的邏輯與循環,這需要超過7秒。未來循環次數可能會增加,並且時間會增加。使用羣集node.js rest api
爲了減少它的時間,我嘗試使用集羣。它根據提到的cpus no創建了一個單獨的工作人員。
但是在app.js頁面中實現了集羣之後,我發現其餘api已經採用了相同的時間。
我app.js頁:
// Include the cluster module
var cluster = require('cluster');
// Code to run if we're in the master process
if (cluster.isMaster) {
// Count the machine's CPUs
var cpuCount = require('os').cpus().length;
// Create a worker for each CPU
for (var i = 0; i < cpuCount; i += 1) {
cluster.fork();
}
// Listen for dying workers
cluster.on('exit', function (worker) {
// Replace the dead worker, we're not sentimental
console.log('Worker %d died :(', worker.id);
cluster.fork();
});
// Code to run if we're in a worker process
} else {
var express = require('express');
var app = express();
var sampleApi = require('./controllers/restApi.js');
app.post('/api/getResponse', sampleApi.getResponseMtd);
// Bind to a port
app.listen(8080);
console.log('Worker %d running!', cluster.worker.id);
}
我呼籲該服務是一個正常的服務連接蒙戈DB與循環的結果進行計算邏輯
難道集羣被用來處理無的請求是在特定的時間使用否的工作人員進行的,或者它將用於通過一個api服務(一次調用一次服務)來分割工作。
我想循環與服務中被分裂,並最終給出結果,以便所需的時間將減少。
請幫助解決關於羣集的這種混淆,以及如何使用羣集或任何其他方法來加速循環。
在此先感謝..
感謝您的答覆..是否有任何其他模塊像羣集來處理循環過程中的API? – user3211705
javascript是單線程的。你不能象在java中一樣創建線程來通過不同的進程執行你的代碼的不同部分 –
你可以做的是,將你的服務與其他技術如python,java結合起來,這樣node.js只處理服務請求部分,但其他技術處理廣泛的計算部分 –