कैसे डिज़ाइन करें मुझे लगता है कि मुझे एक ऐसे वेब एप्लिकेशन को लागू करने की आवश्यकता है जिसमें समवर्ती उपयोगकर्ताओं की उच्च मात्रा होगी। मैं node.js का उपयोग करने का फैसला करता हूं क्योंकि यह बहुत अच्छी तरह से स्केल करता है, इसमें अच्छा प्रदर्शन, ओपन सोर्स समुदाय इत्यादि है। फिर, बाधाओं से बचने के लिए, क्योंकि मुझे एक ही घटना में उपयोगकर्ताओं के गैज़िलियन मिल सकते हैं, मैं क्लस्टर का उपयोग करने का निर्णय लेता हूं मल्टी-कोर सीपीयू का लाभ लेने के लिए प्रक्रियाएं। इसके अलावा, मेरे पास 3 मशीनें हैं (मुख्य + 2) क्योंकि मुझे कैसंद्रा के साथ बड़े डेटा में हेरफेर करने की आवश्यकता है। बहुत बढ़िया, इसका मतलब है कि मेरे पास 3 * n node.js प्रक्रियाएं हैं जहां n cpu के कोर की संख्या है (मशीन समान हैं)।एक वितरित node.js वेब सर्वर
ठीक है, तो मैं एक शोध शुरू करते हैं और मैं निम्नलिखित स्कीमा के साथ समाप्त:
- Nginx पोर्ट 80 पर सुनने और केवल इस्तेमाल किया स्थिर सामग्री (img, सीएसएस, जे एस, आदि) की सेवा के लिए।
आगे बढ़ने के लिए गतिशील यातायात। मुझे पता है कि nginx को कैसे कॉन्फ़िगर करना है, लेकिन मुझे अभी भी हैप्रोक्सी को देखना है, इसलिए मैं कहूंगा कि हैपरॉक्स पोर्ट 4000 पर सुन रहा है। मुख्य मशीन (प्रवेश बिंदु) में Nginx और haproxy स्थापित हैं। - 3 मशीनों के बीच हैप्रोक्सी लोड संतुलन। यह बंदरगाह 4001 के लिए यातायात अग्रेषित करता है, कि है, Node.js प्रक्रियाओं n प्रक्रियाओं का एक समूह 4001.
को सुनने गया है 4001.
एक सत्र बनाना काफी सामान्य है, है ना? एक सत्र सिर्फ एक नक्शा है, और यह नक्शा एक वस्तु है, और यह वस्तु node.js प्रक्रिया में रहती है। हैप्रोक्सी को राउंड-रॉबिन शेड्यूलर के साथ कॉन्फ़िगर किया जाएगा, इसलिए उसी उपयोगकर्ता को विभिन्न node.js प्रक्रियाओं में अग्रेषित किया जा सकता है। मैं सभी node.js प्रक्रियाओं में एक ही सत्र ऑब्जेक्ट को कैसे साझा कर सकता हूं? मैं एक वैश्विक वस्तु कैसे साझा कर सकता हूं (इसमें एक ही मशीन (नोड.जेएस क्लस्टर) और नेटवर्क में शामिल है)? मुझे वितरित वेब ऐप को node.js के साथ कैसे डिज़ाइन करना चाहिए? क्या कोई मॉड्यूल है जो सिंक्रनाइज़ेशन कार्यों को कम करता है?
हैप्रोक्सी में चिपचिपा सत्रों को संभालने के कई तरीके हैं, http: // stacko verflow.com/questions/6498030/load-balancing-haproxy-or-other-sticky-sessions। वैश्विक वस्तु के लिए, रेडिस या कुछ का उपयोग करें। – numbers1311407
http://stackoverflow.com/questions/5398209/scaling-node-js-across-multiple-cores-servers के समान ही 3 सर्वर भी। –