2012-11-12 13 views
9

मैं कुछ समय के लिए एक रूबी/PHP वेब एप्लिकेशन डेवलपर रहा हूं और मुझे अधिक अनुरोधों को संभालने के लिए सर्वर उदाहरणों के क्षैतिज स्केलिंग के विचार के लिए उपयोग किया जाता है। क्षैतिज स्केलिंग - जिसका मतलब लोड-बैलेंसर के पीछे बैठे एक आवेदन के अलग-अलग उदाहरण हैं जो कुछ साझा नहीं करते हैं और एक-दूसरे से अनजान हैं।नोडजेएस क्षैतिज स्केलिंग

मेरे पास मुख्य प्रश्न है, क्योंकि नोड.जेएस और इवेंट-आईओ पर इसका जोर एक बॉक्स के लिए एक नोड.जेएस सर्वर को 'हजारों' अनुरोधों को संभालने के लिए चलाता है - लोड-बैलेंसिंग/क्षैतिज स्केलिंग का उपयोग किया जाता है नोडजे अनुप्रयोगों को स्केल करने के लिए? एक नोड ऐप को ऊर्ध्वाधर स्केलिंग तक सीमित कर रहा है (समस्या पर अधिक रैम/प्रसंस्करण शक्ति फेंक रहा है)?

मेरा दूसरा प्रश्न node.js क्षैतिज स्केलिंग और websockets के साथ करना है। मैंने वहां कुछ नोड.जेएस 'चैट' ट्यूटोरियल देखे हैं जो websockets का उपयोग करते हैं। (पसंदीदा: http://martinsikora.com/nodejs-and-websocket-simple-chat-tutorial)

के बाद से WebSockets प्रभावी रूप से संचार के लिए एक ब्राउज़र और एक सर्वर के बीच खुला का एक खुला लाइन रखने के लिए, एक क्षैतिज बढ़ाया वास्तुकला PHP/रूबी दुनिया के विशिष्ट एक की तरह एक चैट आवेदन का कारण होता है लिंक में विस्तार से बताया तोड़ने के लिए - क्योंकि नए वेबसाइकिल कनेक्शन अनुरोध विभिन्न प्रक्रियाओं/सर्वरों को आवंटित किए जाएंगे और सभी जुड़े ग्राहकों को ट्रैक करने वाला कोई भी केंद्रीय संसाधन नहीं होगा?

उत्तर

8

Node.js अंतर्निहित cluster मॉड्यूल के माध्यम से वर्णन करने के तरीके में क्षैतिज स्केलिंग का समर्थन करता है।

इस माहौल में websockets/socket.io के उपयोग के बारे में आपके दूसरे प्रश्न के बारे में, आपको here वर्णित अनुसार अपने आवेदन के कई उदाहरणों में साझा राज्य को स्टोर करने के लिए रेडिस जैसे कुछ का उपयोग करना होगा।

+0

यह एक पुराना सवाल है, लेकिन मैं अपने सभी चैट एप्लिकेशन डेटा को स्टोर और पुनर्प्राप्त करने के लिए मोंगोडब का उपयोग कर रहा हूं। चूंकि मैं क्षैतिज रूप से अपना आवेदन स्केल करना चाहता हूं क्योंकि मेरे चैट एप्लिकेशन काम नहीं करते हैं जब मेरे पास एक से अधिक सर्वर होते हैं। मुझे पूरी तरह से मोंगोड को हटा देना चाहिए और रेडिस का उपयोग करना चाहिए? या क्या एक बेहतर समाधान है। – DragonBorn

1

नोड.जेएस की क्लस्टर कार्यक्षमता एकाधिक प्रोसेसर वाले एकल सर्वर तक सीमित है। मुख्य रूप से यह सर्वर में प्रोसेसर की संख्या का लाभ उठाता है। मुझे लगता है कि अगर परिदृश्य के बारे में अधिक जानकारी है तो हम लोड बैलेंसर मुखौटा के साथ कई सर्वरों के साथ क्षैतिज पैमाने पर स्केल करना चाहते हैं।

+0

और सॉकेट के बारे में सवाल का जवाब देने के लिए, किसी भी सर्वर कॉल की तरह, सॉकेट निर्माण कॉल संतुलित लोड हो जाएगी और वेब सॉकेट के जीवनकाल के लिए नोड एनएक्स पर पहुंचने के लिए कहा जाएगा, यह टीसीपी कनेक्शन खुला रखा गया है। यानी ब्राउज़र से सर्वर तक सभी संचार, वेब सॉकेट के माध्यम से ब्राउज़र से सर्वर हमेशा एनएक्स द्वारा परोसा जाएगा। – Pramma

0

यदि आपके पास node.js उदाहरण बहु सर्वर (क्षैतिज स्केलिंग) में फैले हैं, तो यह उसी उद्देश्य की सेवा करेगा, आपको इस प्रकार के सेटअप का समर्थन करने के लिए इसे ठीक से प्रोग्राम करने की आवश्यकता है।

संबंधित मुद्दे