क्या MQTT 1000+ क्लाइंट के साथ स्केलेबल है?


10

परिदृश्य
IoT डिवाइस (वर्तमान में IPv4 डिवाइस) जो टीसीपी सॉकेट के माध्यम से प्रति दिन एक बार सर्वर पर पेलोड भेजता है। सर्वर में एक सार्वजनिक आईपी पता है, डिवाइस एक राउटर / एनएटी के पीछे है। मैं ईएसपी 8266 (यानी ओलीमेक्स वन) पर आधारित एक मॉड्यूल का उपयोग करने जा रहा हूं

लक्ष्य सर्वर जब भी यह करने की जरूरत है किसी भी ग्राहक को डेटा भेजने के लिए सक्षम होना चाहिए। मुझे डायरेक्ट क्लाइंट-टू-क्लाइंट कम्युनिकेशन (यानी मेरे स्मार्टफोन से डिवाइस से कनेक्ट करने) में कोई दिलचस्पी नहीं है, जैसे कि छेद पंचिंग करना है।

अन्य आवश्यकताएं
IoT डिवाइस कई हजारों तक बढ़ सकते हैं। उनका इंटरनेट कनेक्शन कई 4 जी-सक्षम राउटर / मोडेम द्वारा प्रदान किया जाता है। हर एक 10-20 क्लाइंट को हैंडल करेगा।

प्रस्तावित समाधान
जहां तक ​​मैं समझता हूं कि एक सामान्य समाधान MQTT है। क्लाइंट समय-समय पर ब्रोकर को डेटा भेजते हैं (यानी होस्टिंग सर्वर पर चल रहा मच्छर), जो बदले में मुख्य वेब ऐप को अपडेट करता है जो उसी सर्वर पर चलता है।

प्रश्न
क्या MQTT उपकरणों में से एक "बड़ी" संख्या (1000+) के लिए उपयुक्त है जो उनमें से अधिकांश 4 जी राउटर के पीछे है?


प्रश्न (1) को अलग से पूछना बेहतर होगा और केवल प्रश्न (2) पूछें, जो प्रश्न शरीर में आपके शीर्षक से मेल खाता हो। इस प्रकार, हम आपके प्रत्येक प्रश्न को अलग-अलग विस्तार से संबोधित कर सकते हैं। यदि यह मदद करता है तो आप अपने संदर्भ को नए प्रश्न में फिर से शामिल कर सकते हैं।
Aurora0001

1
सवाल बदला और दूसरा जोड़ा।
मार्क

इसकी ध्वनि से, भले ही आप खुले कनेक्शन की उच्च संख्या रखने के साथ सर्वर लोड के मुद्दों में चले गए हों, आपका सिस्टम एक पेड़ प्रकार के टोपोलॉजी के साथ काफी संगत होगा जहां ग्राहक मध्यवर्ती सर्वर से जुड़ते हैं जो संबंधित सत्रों को पकड़ते हैं और उन्हें पास करते हैं प्रत्येक पाइप में उच्चतर सर्वरों के लिए ऊपर और नीचे ट्रैफ़िक। आप शायद स्थानीय स्तर पर अपने 4 जी राउटर्स में इसका पहला टियर भी कर सकते हैं।
क्रिस स्ट्रैटन

जवाबों:


7

1,000 ग्राहकों को आसानी से किसी भी सभ्य MQTT ब्रोकर द्वारा नियंत्रित किया जा सकता है; स्कैलेगेंट से एक बेंचमार्क है जो दिखाता है कि एक पीसी के साथ:

  • 3 गीगाहर्ट्ज इंटेल कोर 2 डुओ प्रोसेसर
  • 4 जीबी की रैम

मोस्किटो चलाने वाले 60,000 प्रकाशकों को संभाल सकता था। यह आपके आवश्यक 1,000 प्रकाशकों से अधिक है, इसलिए अपेक्षाकृत कमजोर सर्वर पर भी, आपको अभी भी आवश्यक संख्या को संभालने में सक्षम होना चाहिए।

कुछ अन्य ब्रोकर भी बेहतर प्रदर्शन का दावा करते हैं (निश्चित रूप से अधिक से अधिक सर्वर शक्ति के साथ), जैसे कि HiveMQ , जिसने 10 मिलियन प्रकाशकों को संभालने का दावा किया था।

MQTT ब्रोकर आम तौर पर एक स्थायी कनेक्शन की उम्मीद करते हैं, और समय-समय पर पिंग प्रतिक्रियाओं (या अन्य गतिविधि) को न भेजने वाले ग्राहकों को टाइमआउट करेंगे। आप प्रकाशन के बाद नेटवर्क से डिस्कनेक्ट कर सकते हैं, लेकिन, जाहिर है, यदि आप डिस्कनेक्ट करते हैं तो आप कुछ भी प्राप्त नहीं कर पाएंगे।

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


मैंने निश्चित रूप से इसे गलत बताया। केवल सर्वर (वाणिज्यिक होस्टिंग सेवा) को 1000+ क्लाइंट को संभालना चाहिए। विभिन्न स्थानों पर कई 4 जी राउटर हैं, और प्रत्येक में केवल 10-20 ग्राहक होंगे।
मार्क

ओह, मैं गलत था - मेरी गलती, @ मर्क, मैंने मान लिया कि आप उन सभी का मतलब एक 4 जी राउटर के पीछे हैं । मैं इसे उस मामले में संपादित करूंगा।
Aurora0001

मुझे अभी तक MQTT के अंतर्निहित कोड की पूरी तरह से समझ नहीं है - मुझे 4G कनेक्शन के बारे में डर था: क्या MQTT को लगातार इंटरनेट कनेक्शन की आवश्यकता है? संभवतः नेटवर्क अस्थिर होगा ...
मार्क

मैंने कुछ सुझावों के साथ संपादित किया है, @ मर्क; मुझे बताएं कि क्या यह आपको सही दिशा में इंगित करता है।
Aurora0001

1
हां, यह अब स्पष्ट है। मैं इस विषय के बारे में कुछ और खोज करने जा रहा हूं और अगर मुझे अभी भी कुछ मदद चाहिए तो मैं एक और प्रश्न पूछूंगा। बहुत बहुत धन्यवाद।
मार्क

5

आप क्लाइंट से लगातार सत्रों का उपयोग कर सकते हैं, जैसे कि कनेक्ट करने के लिए गलत पर सेट किए गए स्वच्छ ध्वज। उस परिदृश्य में जब आपका ग्राहक ऑफ़लाइन होता है, तो वह उसके लिए कैश में संदेश भेजेगा और डिवाइस कनेक्ट होते ही उसे डिलीवर कर देगा।

मात्रा के बारे में - 10K एक सर्वर के लिए भी अपेक्षाकृत कम राशि है। आप 500K सक्रिय कनेक्शन रखने के लिए लिनक्स सर्वर को कॉन्फ़िगर कर सकते हैं और यदि आपका ब्रोकर क्लाउड-आधारित होगा, जैसे कि कुछ प्रदाता द्वारा सेवा प्रदान की जाती है, तो आप इसके लिए लाखों सक्रिय कनेक्शन भी रख सकते हैं।

वैसे, मुझे लगता है कि मॉस्किटो या कोई अन्य स्थानीय स्थापना विकास और परीक्षण के लिए एकदम सही विकल्प है, लेकिन जब आप उत्पादन में जाएंगे, तो आपको हा, अतिरेक, असफलता आदि जैसी सभी विशेषताओं के साथ सास एमक्यूटीटी ब्रोकर की आवश्यकता होगी।


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

हमेशा की तरह दोनों विकल्पों के पक्ष और विपक्ष हैं। यह स्पष्ट है कि किसी भी सास ब्रोकर को सही संचार टीम, उत्पाद विकास के शुरुआती चरण में दीर्घकालिक परीक्षण, स्पष्ट अपटाइम गारंटी और विभिन्न एसएलए की आवश्यकता होती है। अपने ब्रोकर को बनाए रखना भी अच्छा तरीका है, लेकिन दुनिया सेवाओं में आगे बढ़ रही है। या तो आप प्रयास करेंगे और अपने उत्पाद के साथ सबसे अधिक सक्षम होंगे जो ब्रोकर के हिस्से के रूप में उपयोग करता है या आप सुपर अनुभवी MQTT- ब्रोकर प्रशासक होने पर समय और पैसा खर्च करेंगे (और कभी भी इसके डेवलपर नहीं होंगे!)। बस पसंद की बात +)
शाल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.