मेरे पास node.js. में एक एप्लिकेशन हैNode.js: क्लस्टर में differents कोड के साथ वर्कर?
यह आवेदन 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();
}
क्लस्टर के साथ अच्छी बात यह है कि वे लांचर के समान प्रक्रिया में हो रहा है, तो मैं (बस बुला एप्लिकेशन को पुनः प्रारंभ करने के लिए बिना कुछ त्रुटि संभाल कर सकते हैं ऐप के अंदर एक सही "सॉफ्ट रीबूट" के लिए सही कार्य), और सब कुछ एक ही प्रक्रिया में रखें।
निष्पादन के साथ, मैं सर्वर को पुनरारंभ करने के साथ अटक गया हूं, कभी-कभी यह जानने के बिना कि क्या गलत हो गया है, और इसका मतलब यह है कि एक सबहेल है, जिसे मैं नापसंद करता हूं।
क्या क्लस्टर को फोर्क करने का कोई तरीका है, लेकिन एक अलग कोड शुरू करें?
आप 'की आवश्यकता होती है ('child_process') कार्यकारी क्यों शामिल किया,' पहले कोड उदाहरण में।? मैंने यह नहीं देखा कि आपने इसे कहीं भी इस्तेमाल किया है – qodeninja
@qodeninja: उदाहरण को कम करने में त्रुटि जब यह बाद में कोड में उपयोग किया जाता है, लेकिन इसके लिए नहीं, धन्यवाद, यह आपको इंगित करने के लिए धन्यवाद:) – DrakaSAN