Node.js
क्लस्टर मॉड्यूल
खोज…
वाक्य - विन्यास
- const क्लस्टर = आवश्यकता ("क्लस्टर")
- cluster.fork ()
- cluster.isMaster
- cluster.isWorker
- cluster.schedulingPolicy
- cluster.setupMaster (सेटिंग)
- cluster.settings
- कार्यकर्ता में क्लस्टर.वर्कर //
- मास्टर में क्लस्टर.वर्कर्स //
टिप्पणियों
ध्यान दें कि cluster.fork()
एक बच्चे की प्रक्रिया को शुरू करता है जो सी में fork()
सिस्टम कॉल के विपरीत शुरुआत से वर्तमान स्क्रिप्ट को निष्पादित करना शुरू करता है जो वर्तमान प्रक्रिया को क्लोन करता है और दोनों माता-पिता में सिस्टम कॉल के बाद निर्देश से जारी रहता है बच्चे की प्रक्रिया।
Node.js डॉक्यूमेंटेशन में यहां क्लस्टर्स के लिए एक अधिक संपूर्ण मार्गदर्शिका है
नमस्ते दुनिया
यह आपका cluster.js
:
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
// Fork workers.
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {
// Workers can share any TCP connection
// In this case it is an HTTP server
require('./server.js')();
}
यह आपका मुख्य server.js
:
const http = require('http');
function startServer() {
const server = http.createServer((req, res) => {
res.writeHead(200);
res.end('Hello Http');
});
server.listen(3000);
}
if(!module.parent) {
// Start server if file is run directly
startServer();
} else {
// Export server, if file is referenced via cluster
module.exports = startServer;
}
इस उदाहरण में, हम एक बुनियादी वेब सर्वर की मेजबानी करते हैं, हालांकि, हम अंतर्निहित क्लस्टर मॉड्यूल का उपयोग करके श्रमिकों (बाल प्रक्रियाओं) को स्पिन करते हैं। फोर्क की प्रक्रियाओं की संख्या उपलब्ध सीपीयू कोर की संख्या पर निर्भर करती है। यह Node.js एप्लिकेशन को मल्टी-कोर CPU का लाभ उठाने में सक्षम बनाता है, क्योंकि Node.js का एक भी उदाहरण एक ही थ्रेड में चलता है। आवेदन अब सभी प्रक्रियाओं में पोर्ट 8000 साझा करेगा। डिफ़ॉल्ट रूप से राउंड-रॉबिन विधि का उपयोग करने वाले श्रमिकों के बीच लोड स्वचालित रूप से वितरित किए जाएंगे।
क्लस्टर उदाहरण
Node.js
का एक एकल उदाहरण एक ही थ्रेड में चलता है। मल्टी-कोर सिस्टम का लाभ उठाने के लिए, लोड को संभालने के लिए Node.js प्रक्रियाओं के क्लस्टर में एप्लिकेशन लॉन्च किया जा सकता है।
cluster
मॉड्यूल आपको आसानी से बच्चे की प्रक्रिया बनाने की अनुमति देता है जो सभी सर्वर पोर्ट को साझा करते हैं।
उदाहरण के बाद मुख्य प्रक्रिया में कार्यकर्ता बाल प्रक्रिया बनाएं जो कई कोर के भार को संभालती है।
उदाहरण
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length; //number of CPUS
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork(); //creating child process
}
//on exit of cluster
cluster.on('exit', (worker, code, signal) => {
if (signal) {
console.log(`worker was killed by signal: ${signal}`);
} else if (code !== 0) {
console.log(`worker exited with error code: ${code}`);
} else {
console.log('worker success!');
}
});
} else {
// Workers can share any TCP connection
// In this case it is an HTTP server
http.createServer((req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(3000);
}