NodeJS Cluster Process Module In Hindi : NodeJS Cluster Module Example

Other Blogs

Blogs ❯❯ NodeJS

Image could not load

Node.js एक popular JavaScript runtime है जो server-side applications बनाने के लिए use किया जाता है। हालांकि, Node.js single-threaded है, जिसका मतलब है कि एक समय में यह केवल एक ही operation perform कर सकता है। इस limitation को overcome करने के लिए, Node.js में एक powerful feature है जिसे Cluster Module कहते हैं।

इस blog में हम Node.js Cluster Process Module के बारे में detail में जानेंगे।

What is cluster module In NodeJS ?

Node.js Cluster Module allow करता है कि आप multiple child processes को create करें, जो एक ही server port को share करते हैं। इसका मतलब है कि आप अपने Node.js application को multi-core systems पर efficiently run कर सकते हैं।

How Cluster Module works ?

जब आप Cluster Module का use करते हैं, तो Node.js automatically आपके application के multiple instances create करता है। ये instances अलग-अलग processes में run होते हैं और ये सभी एक master process द्वारा manage किए जाते हैं।

Master process child processes के बीच incoming requests को distribute करता है।

Advantages of Cluster Module

  • Increased Performance : Multiple processes होने की वजह से requests को parallel में handle किया जा सकता है, जिससे throughput बढ़ता है।

  • Better Resource Utilization : Multi-core systems पर सभी cores का उपयोग होता है।

  • Reliability : अगर कोई एक process fail हो जाता है, तो अन्य processes बिना interruption के काम करते रहते हैं।

NodeJS Cluster Module Example

Cluster module को use करना बहुत simple है। नीचे एक basic example दिया गया है -

const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if (cluster.isMaster) { console.log(`Master ${process.pid} is running`); // Worker processes ko fork karen 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 the TCP connection http.createServer((req, res) => { res.writeHead(200); res.end('Hello World\n'); }).listen(8000); console.log(`Worker ${process.pid} started`); }

Explanation

  • Master Process : Master process checks करता है कि अगर cluster.isMaster true है तो यह system के available CPUs की संख्या के अनुसार workers को fork करता है।

  • Worker Processes : Worker processes HTTP server को create करते हैं और requests को handle करते हैं।

  • Request Handling : जब कोई request आती है, तो master process उस request को workers में से किसी एक को forward कर देता है।

Use of Cluster Module In Production

Production में cluster module का use करते समय कुछ बातों का ध्यान रखना ज़रूरी है -

  • Load Balancing : अच्छी load balancing के लिए reverse proxy server का use करें जैसे NGINX या HAProxy. ये servers incoming traffic को efficiently distribute करते हैं multiple worker processes के बीच।

  • Graceful Shutdown : Ensure करें की worker processes gracefully shutdown हो, ताकि किसी भी data loss से बचा जा सके। इसके लिए आप SIGTERM signal handle कर सकते हैं और ongoing requests को complete hone का time दे सकते हैं।

  • Monitoring and Logging : Processes को monitor और log करें ताकि issues को जल्दी से identify किया जा सके। Monitoring tools जैसे की PM2 या New Relic आपको real-time insights दे सकते हैं आपकी application performance के बारे में।

  • Sticky Sessions : अगर आपकी application session-specific data handle करती है जो same worker process में ही stay करना चाहिए, तो sticky sessions का use करें। ये ensure करता है की specific user requests हमेशा same worker process के पास जाएँ।

इन बातों का ध्यान रखने से आपका Node.js application production environment में ज़्यादा reliable, efficient और secure ban सकता है।

NodeJS Cluster Module Methods

Node.js Cluster Module के कुछ key methods और properties को detail में समझते हैं।

  • cluster.fork([env]) : ये method एक नया worker process create करने के लिए use होता है। आप optional env parameter के साथ environment variables specify कर सकते हैं जो new worker process को मिलेगा।

  • cluster.isMaster : ये property true होती है अगर current process master process है। इसका use करके आप check कर सकते हैं की क्या आपका code master process में execute हो रहा है।

  • cluster.isWorker : ये property true होती है अगर current process worker process है। इसका use करके आप verify कर सकते हैं की क्या current process एक worker है।

  • cluster.setupMaster([settings]) : ये method master process के behavior को configure करता है. आप settings object provide कर सकते हैं, जैसे exec (worker script का path), args (arguments का array), और silent (output silent रखने के लिए)

  • cluster.disconnect([callback]) : ये method सारे worker processes को gracefully disconnect करता है , जब सारे workers disconnect हो जाते हैं, तब optional callback function execute होता है।

  • worker.send(message, [sendHandle], [options], [callback]) : ये method specific worker process को message भेजने के लिए use होता है , Optional sendHandle और options specify कर सकते हैं message के साथ।

  • worker.on('message', listener) : ये event listener worker process से आने wale messages को listen करता है, आप इससे use करके workers से communication establish कर सकते हैं।

  • worker.process : ये property worker के child process object को reference करती है , इसका use करके आप worker के underlying process पर operations perform कर सकते हैं।

Conclusion

Node.js Cluster Module आपके applications के performance और reliability को significantly improve कर सकता है। यह आपके applications को efficiently run करने में help करता है, especially multi-core systems पर।

Production environments में cluster module का सही implementation करके आप scalability और fault tolerance को ensure कर सकते हैं।

Cluster module के साथ experiment करें और देखें कि यह कैसे आपके application के performance को boost कर सकता है!

Related Topic

Recent Blogs

Loading ...

Hey ! I'm Rahul founder of learnhindituts.com. Working in IT industry more than 4.5 years. I love to talk about programming as well as writing technical tutorials and blogs that can help to others .... keep learning :)

Get connected with me - LinkedIn Twitter Instagram Facebook

Your Thought ?

Please wait . . .

    0 Comment(s) found !