क्या मच्छर कई दलालों का समर्थन कर सकता है?


20

मैं एक घर IoT नेटवर्क के लिए एक MQTT संदेश ब्रोकर के लिए Mosquitto पर विचार कर रहा हूं, लेकिन मुझे चिंता है कि ब्रोकर विफलता का एक एकल बिंदु हो सकता है जो मेरे पूरे नेटवर्क को नीचे ला सकता है अगर यह विफल हो गया, क्योंकि सभी संदेशों को गुजरना है यदि किसी कारण से ब्रोकर ऑफ़लाइन हो जाता है, तो ब्रोकर और कोई संदेश प्रसारित नहीं किया जा सकता है (जैसे आकस्मिक अनप्लगिंग, हार्डवेयर विफलता, आदि)।

नेटवर्क की विश्वसनीयता को बेहतर बनाने के लिए मस्किटो के साथ कई दलालों का उपयोग करना संभव होगा? यदि यह संभव है, तो क्या कई दलालों का उपयोग करने के लिए कोई नुकसान / महत्वपूर्ण ओवरहेड्स हैं?

जवाबों:


12

हां, मॉस्किटो कई दलालों का समर्थन करता है।

मॉस्किटो कई दलालों को जोड़ने के लिए MQTT ब्रिज का उपयोग करता है, इस प्रकार इन मच्छरों के दलालों के बीच संदेश को रूट करता है। इस तरह से आपके प्राथमिक ब्रोकर से लेकर फॉलबैक सिस्टम के बीच एक पुल स्थापित किया जा सकता है। हालांकि लूप बनाने से बचें। यदि दोनों ब्रोकर आपके क्लाइंट को प्राइमरी ब्रोकर को प्रकाशित करते हैं, जो तब ब्रिड्ड सेकेंडरी ब्रोकर सहित प्रत्येक और किसी भी सब्सक्राइबर को विषय प्रकाशित करता है। यदि प्राथमिक विफल रहता है तो आपके ग्राहक नोट करेंगे (कनेक्शन अस्वीकृत, सर्वर अनुपलब्ध) और सीधे माध्यमिक में प्रकाशित करने के लिए वापस आ सकते हैं। (मुझे अब तक यकीन नहीं है कि इसे दूसरे तरीके से कैसे ठीक किया जाए।) जैसा कि आप ग्राहक से यह उम्मीद नहीं कर रहे हैं कि वह अनजाने में डिस्कनेक्ट कर देगा, मुझे लगता है कि "लास्ट विल एंड टेस्टामेंट" यहां लागू नहीं होता है (इसका उपयोग ब्रोकर को सूचित करने के लिए किया जाएगा। डिस्कनेक्ट क्लाइंट की ओर से)।

हालाँकि यह पोस्ट इस दृष्टिकोण की कमियों को विशेष रूप से स्केलेबिलिटी और उपलब्धता के संबंध में सूचीबद्ध करता है:

  • यदि आप अन्य पुलों के लिए सभी संदेशों को अग्रेषित करते हैं, तो पुल मार्ग तंत्र अच्छी तरह से पैमाने पर नहीं है
  • पुलों के बीच संचार ओवरहेड महत्वपूर्ण है यदि आप पुलों के बीच QoS 2 का उपयोग कर रहे हैं (जो आपको विभिन्न पुलों से जुड़े ग्राहकों के बीच संदेशों को प्रचारित करने के लिए करना होगा)
  • कोई विफलता और उच्च उपलब्धता नहीं है। यदि कोई ब्रोकर ब्रिज क्रैश हो जाता है, तो संदेश खो सकते हैं
  • MQTT क्लाइंट को अन्य ब्रिज नोड्स में माइग्रेट नहीं किया जा सकता है। MQTT सत्र को पुलों पर दोहराया नहीं जाता है, इसलिए यदि आप MQTT लगातार सत्रों का उपयोग कर रहे हैं तो आप अपने सभी कतारबद्ध संदेशों और सदस्यता को खो देंगे।

10

.NET में कार्यान्वयन एक क्लाइंट को एक ब्रोकर से कनेक्ट करने की अनुमति देता है, इसलिए मैं कहूंगा कि क्यों नहीं ...

MqttClient mqtt;
string broker = ini.getData("MQTT", "hostname");
mqtt = new MqttClient(broker);
mqtt.MqttMsgPublishReceived += mqtt_received;
mqtt.Connect(Guid.NewGuid().ToString());

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

कई संभावनाएं हो सकती हैं जैसे प्रत्येक दलाल एक-दूसरे की सदस्यता लेते हैं और खुद को और अपने ग्राहकों को चेतावनी देने के लिए एक अंतिम इच्छा और वसीयतनामा निर्धारित करते हैं कि एक कमबैक होगा!


एक ब्रोकर कैसे सदस्यता ले सकता है या अधिक किसी अन्य ब्रोकर से कनेक्ट कर सकता है?
बेंस कौलिक्स

1
मैं एक ग्राहक को दलाल के सर्वर पर नेस्टेड के बारे में सोच रहा था।
गौफलाइट १४'१६

@Goufalite, यह सामान्य रूप से MQTT के लिए उपयोगी है, धन्यवाद। क्या आप मस्किटो के बारे में और कुछ जानना चाहेंगे , जिस ब्रोकर से मैंने सवाल किया था?
Aurora0001

यह सबसे कम चीज है जो मुझे MQTT के बारे में पता है (मुझे एहसास नहीं था कि IoT SE पर आने से पहले HiveMQ जैसे अन्य ब्रोकर थे)। तुम और क्या जानना चाहोगे? आप कार्यान्वयन का मतलब है?
गौफालिट

@Goufalite सिर्फ दिलचस्पी है कि क्या Mosquitto समानांतर में कई दलालों को चलाने का एक तरीका है। यदि आप इसे Mosquitto या लिंक प्रलेखन के साथ करने का एक तरीका सुझा सकते हैं जो बहुत अच्छा होगा।
Aurora0001
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.