पर लोड को वितरित कैसे कर सकता हूं RabbitMQ क्लस्टर स्केलेबिलिटी में सुधार के लिए डिज़ाइन किए गए हैं, लेकिन सिस्टम पूरी तरह से स्वचालित नहीं है।
जब आप क्लस्टर में किसी नोड पर कतार घोषित करते हैं, कतार केवल उस नोड पर बनाई गई है। इसलिए, यदि आपके पास एक कतार है, भले ही आप जिस नोड को प्रकाशित करते हैं, संदेश नोड पर समाप्त होगा जहां कतार रहती है।
ठीक से RabbitMQ समूहों का उपयोग करने के लिए आपको आप निम्नलिखित बातें करते हैं सुनिश्चित करने की आवश्यकता:
- कई कतारों नोड्स भर में वितरित कर दिया है, ऐसी है कि काम कुछ हद तक समान रूप से वितरित किया जाता है,
- अपने ग्राहकों से कनेक्ट अलग-अलग नोड्स (अन्यथा, आप एक नोड के माध्यम से सभी संदेशों को फ़नल करना समाप्त कर सकते हैं), और
- यदि आप कर सकते हैं, तो प्रकाशक/उपभोक्ता नोड से कनेक्ट होने का प्रयास करें, जिसमें वे कतार रख रहे हैं (संदेश स्थानान्तरण को कम करने के लिए क्लस्टर के भीतर)।
वैकल्पिक रूप से, High Availability Queues पर एक नज़र डालें। वे सामान्य कतार की तरह हैं, लेकिन कतार सामग्री कई नोड्स में प्रतिबिंबित होती है। तो, आपके मामले में, आप एक नोड पर प्रकाशित होंगे, RabbitMQ प्रकाशन को अन्य नोड में दर्पण करेगा, और उपभोक्ता आंतरिक स्थानांतरण के साथ क्लस्टर को घुमाने के बारे में चिंता किए बिना या तो नोड से कनेक्ट करने में सक्षम होंगे।
हैलो, स्कैलेक्स। "नोड्स में वितरित कई कतारें हैं, जैसे कि काम कुछ हद तक वितरित किया जाता है", क्या प्रोग्राम को हल करने के लिए लोड बैलेंसर प्रोग्राम चलाने के लिए लिनक्स सर्वर जोड़ना आवश्यक है? या लोड संतुलन के लिए कार्यक्रम में सभी नोड्स नाम की जानकारी "rabbitmq" जोड़ने के लिए एप्लिकेशन के स्रोत कोड को बदलना होगा? –
मैं कहूंगा "लोड संतुलन के लिए कार्यक्रम में सभी नोड्स नाम की जानकारी 'rabbitmq' जोड़ने के लिए एप्लिकेशन के स्रोत कोड को बदलें", लेकिन कुछ ऐसे लोग हैं जिन्होंने सफलता के साथ लोड बैलेंसर्स का उपयोग किया है। – scvalex
अपनी पोस्ट ढूंढने से पहले, मुझे लगता है कि खरगोश बहुत शक्तिशाली है। लेकिन उसके बाद, मुझे लगता है कि यह स्वचालित नहीं है जैसा आपने कहा था। इसका उपयोग करना आसान नहीं है। –