我在node.js中有一個應用程序。Node.js:集羣中有不同代碼的工人?
此應用程序分爲3種類型分爲:
launcher.js,它啓動其他兩個部分,清洗處理後重新啓動他們崩潰/更新。
app.js,它在計算機上工作。
server.js用於訪問日誌和不同的命令。
用於發射的簡化代碼:
var cluster = require('cluster'),
exec = require('child_process').exec,
server;
if (cluster.isMaster) {
cluster.fork();
server = exec('server.js');
cluster.on('exit', function(worker, code, signal) {
//Clean corrupted data, log crash if neccessary, reload source code for update ...
cluster.fork();
});
server.on('exit', function() {
//Same as for app, with a different handling of signal...
server = exec('node server.js');
});
} else {
var self = require('app.js);
self.start();
}
與集羣的好處是,他們是在同一個進程中啓動,這樣我就可以處理一些錯誤,而無需重新啓動應用程序(只調用應用程序內部的正確功能用於自身的「軟重啓」),並將所有內容保存在同一個進程中。
雖然與exec,我堅持重新啓動服務器,有時不知道出了什麼問題,這意味着有一個subshell,我不喜歡。
有沒有辦法分叉羣集,但啓動不同的代碼?
你爲什麼包括'需要( 'child_process')EXEC;'在第一個代碼示例?我沒有看到你在哪裏使用這個地方 – qodeninja
@qodeninja:錯誤whenb最小化示例,它在代碼中稍後使用,但不是爲此,感謝您指出此:)) – DrakaSAN