"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > क्लस्टर मॉड्यूल के साथ Node.js को स्केल करना

क्लस्टर मॉड्यूल के साथ Node.js को स्केल करना

2024-11-04 को प्रकाशित
ब्राउज़ करें:353

Scaling Node.js with the Cluster Module

क्लस्टर मॉड्यूल नोड.जेएस को मल्टी-कोर सिस्टम का लाभ उठाने की अनुमति देता है, जिससे ऐप के प्रदर्शन में सुधार होता है। आइए जानें कि इसे प्रभावी ढंग से कैसे उपयोग किया जाए।

क्लस्टर क्यों?

  1. सभी सीपीयू कोर का उपयोग करें
  2. ऐप प्रतिक्रियाशीलता में सुधार करें
  3. कर्मचारी अतिरेक के माध्यम से विश्वसनीयता बढ़ाएँ

बुनियादी उपयोग

const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);

  // Fork workers
  for (let i = 0; i  {
    console.log(`Worker ${worker.process.pid} died`);
  });
} else {
  // Workers can share any TCP connection
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end('Hello World\n');
  }).listen(8000);

  console.log(`Worker ${process.pid} started`);
}

भार का संतुलन

Node.js राउंड-रॉबिन दृष्टिकोण का उपयोग करके स्वचालित रूप से लोड संतुलन को संभालता है।

अंतर-प्रक्रिया संचार (आईपीसी)

if (cluster.isMaster) {
  const worker = cluster.fork();
  worker.send('Hi there');
} else {
  process.on('message', (msg) => {
    console.log('Message from master:', msg);
  });
}

शून्य-डाउनटाइम पुनरारंभ

if (cluster.isMaster) {
  cluster.on('exit', (worker, code, signal) => {
    if (!worker.exitedAfterDisconnect) {
      console.log('Worker crashed. Starting a new worker');
      cluster.fork();
    }
  });

  process.on('SIGUSR2', () => {
    const workers = Object.values(cluster.workers);
    const restartWorker = (workerIndex) => {
      const worker = workers[workerIndex];
      if (!worker) return;

      worker.on('exit', () => {
        if (!worker.exitedAfterDisconnect) return;
        console.log(`Exited process ${worker.process.pid}`);
        cluster.fork().on('listening', () => {
          restartWorker(workerIndex   1);
        });
      });

      worker.disconnect();
    };

    restartWorker(0);
  });
}

सर्वोत्तम प्रथाएं

  1. सीपीयू-गहन कार्यों के लिए वर्कर_थ्रेड्स का उपयोग करें
  2. कर्मचारियों में उचित त्रुटि प्रबंधन लागू करें
  3. कर्मचारी के स्वास्थ्य की निगरानी करें और यदि आवश्यक हो तो पुनः आरंभ करें
  4. उत्पादन के लिए PM2 जैसे प्रक्रिया प्रबंधक का उपयोग करें

बचने के लिए ख़तरे

  1. सर्वर हैंडल को स्पष्ट रूप से साझा करना (Node.js यह स्वचालित रूप से करता है)
  2. आईपीसी का अत्यधिक उपयोग (एक बाधा बन सकता है)
  3. कार्यकर्ता दुर्घटनाओं को संभालने की उपेक्षा करना

क्लस्टर मॉड्यूल क्षैतिज स्केलिंग के लिए शक्तिशाली है, लेकिन विवेकपूर्ण तरीके से उपयोग करें। यह सुनिश्चित करने के लिए हमेशा प्रोफ़ाइल बनाएं कि यह आपकी विशिष्ट प्रदर्शन आवश्यकताओं को हल कर रहा है।

प्रोत्साहित करना?

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/sarvabharan/scaleing-nodejs-with-the-cluster-module-5dm9?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3