मेरी स्थिति यह है कि हम वर्तमान में एक ऑनलाइन एप्लिकेशन लिखते हैं जो वेबसाकेट श्रोता के साथ सर्वर पक्ष पर Node.js का उपयोग करता है। हमारे पास दो अलग-अलग हिस्से हैं: कोई पृष्ठ परोसता है और node.js और express + ejs का उपयोग करता है, दूसरा एक पूरी तरह से अलग ऐप है जिसमें केवल websockets के लिए socket.io लाइब्रेरी शामिल है। तो यहां हम websockets भाग की स्केलेबिलिटी के इस मुद्दे पर आते हैं।वेबसाकेट के लिए कुकी आधारित लोड संतुलन?
एक समाधान जो हमने पाया है वह रेडिस का उपयोग करना और सर्वर के बीच सॉकेट जानकारी साझा करना है, लेकिन आर्किटेक्चर के कारण इसे अन्य जानकारी के भार को साझा करने की आवश्यकता होगी, जो सर्वर पर भारी ओवरहेड बनाने जा रहा है।
इस परिचय के बाद, मेरा सवाल है - क्या वेबसाइकिलों के लिए कुकी आधारित लोड संतुलन का उपयोग करना संभव है? तो आइए कहें कि कुकी सर्वर = सर्वर 1 के साथ उपयोगकर्ता से प्रत्येक कनेक्शन हमेशा सर्वर 1 पर अग्रेषित किया जाएगा और कुकी सर्वर = सर्वर 2 के साथ प्रत्येक कनेक्शन सर्वर 2 के लिए fw होगा और ऐसी कुकी के साथ कनेक्शन कम से कम व्यस्त सर्वर होगा।
अद्यतन: जैसा कि एक 'उत्तर' कहता है - हाँ, मुझे पता है कि यह अस्तित्व में है। बस याद नहीं आया कि नाम चिपचिपा सत्र है। लेकिन सवाल यह है - क्या यह websockets के लिए काम करेगा? क्या कोई संभावित जटिलताएं हैं?
यह एक प्रश्न है जिसमें मुझे बहुत दिलचस्पी है, केवल मुझे ब्राउज़र से आने वाले कनेक्शन लोड-बैलेंसिंग के साथ समस्या दिखाई नहीं दे रही है (यह केवल सर्वरों में से एक को हिट करेगा और इसके साथ चिपकेगा), मैं मैं वास्तव में उन बैकएंड से उन सर्वरों को कैसे दबाता हूं, इस बारे में अधिक रुचि रखता हूं। जैसे, मेरे पास बैकएंड सर्वर है जो वास्तविक काम करता है और फिर यह सॉकेट के माध्यम से संदेशों को websockets सर्वर पर धक्का देगा - मुझे कैसे पता चलेगा कि मेरे पास क्लस्टर होने पर किसको धक्का देना है? मेरा वर्तमान विचार केंद्रीय डीबी में कहीं भी सभी खुले कनेक्शनों की सूची रखना है, यह सुनिश्चित नहीं है कि यह जाने का सबसे अच्छा तरीका है या नहीं। – KOHb
@KOHb मेरे पास सॉकेट सर्वर के पीछे कोई अतिरिक्त बैकएंड नहीं है। तो यह मेरे मामले में बहुत आसान है। लेकिन आप जो कहते हैं उससे मैं इस उद्देश्य के लिए रेडिस सर्वर का प्रयास करूंगा। – AlexKey