के साथ एक उच्च प्रदर्शन node.js अनुप्रयोग का निर्माण करना मैं node.js मास्टर नहीं हूं, इसलिए मैं इसके बारे में और अधिक दृष्टिकोण देखना चाहता हूं।क्लस्टर और नोड-वेबवर्कर
मैं एक HTTP node.js वेब सर्वर बना रहा हूं जो न केवल समवर्ती कनेक्शनों को संभालना चाहिए बल्कि लंबे समय तक चलने वाली नौकरियों को भी संभालना चाहिए। डिफ़ॉल्ट रूप से node.js एक प्रक्रिया पर चलता है, और यदि कोड का एक टुकड़ा है जो किसी भी बाद के कनेक्शन को निष्पादित करने में लंबा समय लगता है, तब तक कोड को तब तक प्रतीक्षा करनी चाहिए जब तक वह पिछले कनेक्शन पर क्या कर रहा है।
उदाहरण के लिए:
var http = require('http');
http.createServer(function (req, res) {
doSomething(); // This takes a long time to execute
// Return a response
}).listen(1337, "127.0.0.1");
तो मैं node-webworker लाइब्रेरी का उपयोग कर अलग धागे में सभी लंबी चलने वाली नौकरियों को चलाने के लिए सोच रहा था:
var http = require('http');
var sys = require('sys');
var Worker = require('webworker');
http.createServer(function (req, res) {
var w = new Worker('doSomething.js'); // This takes a long time to execute
// Return a response
}).listen(1337, "127.0.0.1");
और पूरी बात अधिक performant बनाने के लिए, मैं प्रत्येक सीपीयू कोर के लिए एक नई नोड प्रक्रिया बनाने के लिए cluster का भी उपयोग करने के लिए सोचा।
इस तरह से मैं cluster
साथ विभिन्न प्रक्रियाओं के माध्यम से ग्राहक कनेक्शन को संतुलित करने की उम्मीद में (अगर मैं एक क्वाड-कोर पर चला की 4 नोड प्रक्रियाओं मान लीजिए), और फिर node-webworker
साथ अलग धागे पर लंबी चलने वाली नौकरी पर अमल।
क्या इस कॉन्फ़िगरेशन में कुछ गड़बड़ है?
अंतिम 2 साल पहले अपडेट किया गया –