1、उपयोग के परिदृश्य
1.RabbitMQ:
ऐसे उपयोगों के लिए उपयुक्त जहाँ उपयोग में आसानी और लचीलेपन की अपेक्षा अधिक हो
अतुल्यकालिक कार्य प्रसंस्करण:RabbitMQ विश्वसनीय संदेश वितरण तंत्र प्रदान करता है, जो अतुल्यकालिक कार्यों के लिए उपयुक्त है। उदाहरण के लिए, समय लेने वाले कार्यों को संदेश कतार में डालकर उपभोक्ता से अतुल्यकालिक रूप में संसाधित कराया जा सकता है, जिससे सिस्टम की प्रतिक्रिया गति और विस्तार क्षमता बढ़ती है।
सिस्टम घटकों की निर्भरता कम करना:RabbitMQ को संदेश मिडलवेयर के रूप में उपयोग करके, विभिन्न सिस्टम घटक संदेशों के माध्यम से अपनी पारस्परिक निर्भरता कम कर सकते हैं। इससे कम निर्भरता वाली संरचना बनती है और सिस्टम का रखरखाव तथा लचीलापन बेहतर होता है।
घटना संचालित वास्तुकला:RabbitMQ के प्रकाशन-सदस्यता मॉडल का उपयोग घटना संचालित वास्तुकला बनाने के लिए किया जा सकता है,जिसमें सिस्टम की घटनाएँ संबंधित विषयों पर संदेशों के रूप में प्रकाशित होती हैं,और विभिन्न उपभोक्ता अपनी रुचि के विषयों की सदस्यता लेकर उपयुक्त प्रसंस्करण कर सकते हैं।
2.RocketMQ:
बड़े पैमाने पर डेटा प्रसंस्करण और उच्च थ्रूपुट वाले परिदृश्यों के लिए उपयुक्त
वितरित लेन-देन:RocketMQ वितरित लेन-देन संदेशों का समर्थन करता है। यह कई व्यावसायिक प्रणालियों से जुड़े वितरित लेन-देन के परिदृश्यों के लिए उपयुक्त है, संदेशों की संगतता और विश्वसनीयता सुनिश्चित करता है तथा साथ ही उच्च थ्रूपुट वाली संदेश वितरण क्षमता प्रदान करता है।
वास्तविक समय में लॉग प्रसंस्करण:RocketMQ की उच्च थ्रूपुट और कम विलंबता के कारण, इसका उपयोग वास्तविक समय में लॉग प्रसंस्करण के लिए किया जा सकता है, जैसे लॉग संग्रह और विश्लेषण तथा लॉग एकत्रीकरण।
स्ट्रीम प्रसंस्करण:RocketMQ स्ट्रीम प्रसंस्करण मोड का समर्थन करता है, जिसमें उत्पन्न डेटा स्ट्रीम को संदेश कतार के माध्यम से स्ट्रीम प्रसंस्करण फ़्रेमवर्क(जैसे Flink、Spark Streaming)तक पहुँचाकर वास्तविक समय में डेटा प्रसंस्करण और विश्लेषण किया जा सकता है।
3.Kafka:
उच्च प्रवाह क्षमता वाले वास्तविक समय के डेटा स्ट्रीम प्रसंस्करण और स्ट्रीम प्रसंस्करण परिदृश्यों के लिए उपयुक्त
डेटा पाइपलाइन और वास्तविक समय में डेटा प्रसंस्करण:Kafka की उच्च थ्रूपुट और स्थायी भंडारण की विशेषताएँ इसे विश्वसनीय डेटा पाइपलाइन तथा वास्तविक समय में डेटा प्रसंस्करण प्रणालियाँ बनाने के लिए आदर्श विकल्प बनाती हैं,जिनका उपयोग स्ट्रीमिंग डेटा एकत्र करने、स्थानांतरित करने और संसाधित करने में होता है।
लॉग और इवेंट स्ट्रीम प्रसंस्करण:Kafka की विभाजन और क्रम की गारंटी देने वाली विशेषताएँ इसे लॉग और इवेंट स्ट्रीम प्रसंस्करण के लिए आदर्श समाधान बनाती हैं, जैसे एप्लिकेशन लॉग संग्रह, इवेंट सोर्सिंग, व्यावसायिक निगरानी आदि।
वास्तविक समय की स्ट्रीम विश्लेषण और मशीन लर्निंग:Kafka को स्ट्रीम प्रोसेसिंग फ़्रेमवर्क(जैसे Flink, Spark Streaming)के साथ मिलाकर उपयोग करने से वास्तविक समय की स्ट्रीम विश्लेषण और मशीन लर्निंग के कार्य संभव होते हैं। यह वास्तविक समय की डेटा स्ट्रीम को संसाधित करके तत्काल अंतर्दृष्टि और निर्णय लेने में सहायता प्रदान करता है।
2、सेवा वास्तुकला
RabbitMQ
Channel(चैनल):Channel, RabbitMQ और अनुप्रयोग के बीच एक आभासी कनेक्शन है। एक भौतिक कनेक्शन(connection)पर कई चैनल बनाकर अनुप्रयोग एक साथ संदेश प्रेषण संबंधी कार्य कर सकता है। चैनल संदेश भेजने और प्राप्त करने के साथ उनसे जुड़े कुछ कार्य भी करता है, जैसे कतार घोषित करना, एक्सचेंज परिभाषित करना और बाइंडिंग बनाना। चैनल को एक हल्का सत्र माना जा सकता है, जो एक भौतिक कनेक्शन के माध्यम से RabbitMQ से संवाद करता है।
Exchange(एक्सचेंज):एक्सचेंज संदेश प्राप्त करने और आगे भेजने का केंद्र है। RabbitMQ को भेजे गए संदेश एक्सचेंज के माध्यम से रूट होते हैं। एक्सचेंज अपने प्रकार और बाइंडिंग नियमों के अनुसार संदेश को एक या अधिक कतारों में भेजता है। सामान्य एक्सचेंज प्रकारों में प्रत्यक्ष एक्सचेंज(direct)、विषय एक्सचेंज(topic)、प्रसारण एक्सचेंज(fanout)और हेडर एक्सचेंज(headers)शामिल हैं।
Queue(कतार):कतार RabbitMQ का संदेश संग्रहित करने वाला बफ़र है। जब संदेश को तुरंत उपभोक्ता तक रूट नहीं किया जा सकता, तो उसे कतार में रखा जाता है, जहाँ वह उपभोक्ता द्वारा प्राप्त और संसाधित किए जाने की प्रतीक्षा करता है। हर कतार का एक अद्वितीय नाम होता है, और संदेशों की डिलीवरी तथा उपभोग FIFO(पहले आया, पहले गया)क्रम में होता है।
Virtual Host(वर्चुअल होस्ट):वर्चुअल होस्ट तार्किक रूप से अलग किया गया परिवेश है, जिसका उपयोग RabbitMQ सर्वर को कई स्वतंत्र भागों में बाँटने के लिए किया जाता है। प्रत्येक वर्चुअल होस्ट के अपने एक्सचेंज, क्यू, बाइंडिंग और अनुमति संबंधी सेटिंग होती हैं। वर्चुअल होस्ट अलग-अलग अनुप्रयोगों या सेवाओं को एक-दूसरे से अलग रखने में मदद करते हैं तथा सुरक्षा और संसाधन प्रबंधन पर नियंत्रण प्रदान करते हैं।
Broker(मध्यस्थ):Broker, RabbitMQ संदेश कतार सर्वर का एक इंस्टेंस है, जो संदेशों को प्राप्त करने, संग्रहीत करने और उनका मार्ग निर्धारित करने के लिए ज़िम्मेदार होता है। यह मध्यस्थ की भूमिका निभाते हुए उत्पादक द्वारा भेजे गए संदेश उपभोक्ता तक पहुँचाता है। एक RabbitMQ इंस्टेंस में कई Broker हो सकते हैं, और प्रत्येक Broker कई वर्चुअल होस्ट तथा कतारें संभाल सकता है।
RocketMQ
NameServer(नाम सर्वर):NameServer, RocketMQ का नाम सेवा घटक है, जो Broker की रूटिंग जानकारी का प्रबंधन करता और उसे उपलब्ध कराता है। यह मेटाडेटा के केंद्र के रूप में कार्य करता है और Broker की पंजीकरण जानकारी, Topic की रूटिंग जानकारी आदि बनाए रखने के लिए ज़िम्मेदार है। संदेश भेजने और प्राप्त करने से पहले Producer और Consumer को सही Broker जानकारी प्राप्त करने के लिए NameServer से संवाद करना होता है।
Controller(नियंत्रक):Controller,RocketMQ का नियंत्रक घटक है,जो पूरे RocketMQ क्लस्टर के काम का समन्वय और प्रबंधन करता है。यह Broker की स्थिति में बदलाव की निगरानी करता है,क्लस्टर का आकार बढ़ाने और घटाने का काम संभालता है,और लोड संतुलन जैसे कार्य करता है。Controller,RocketMQ क्लस्टर के प्रमुख घटकों में से एक है,जो क्लस्टर का विश्वसनीय संचालन और स्वचालित प्रबंधन सुनिश्चित करता है。
Broker(मध्यस्थ):Broker, RocketMQ में संदेशों के भंडारण और प्रसंस्करण का नोड है। यह Producer से संदेश प्राप्त करता है और उन्हें डिस्क पर सहेजता है। Broker, Consumer के संदेश खींचने के अनुरोध भी संभालता है और संदेशों के उपभोग के लिए उन्हें Consumer तक पहुँचाता है। एक RocketMQ क्लस्टर में कई Broker हो सकते हैं, और हर Broker कुछ Topic का संदेश डेटा सहेजने के लिए ज़िम्मेदार होता है।
KafkaMQ
Broker(मध्यस्थ):Broker Kafka क्लस्टर का एक नोड है, जो संदेशों के भंडारण और प्रसंस्करण के लिए ज़िम्मेदार होता है। हर Broker एक स्वतंत्र Kafka सर्वर इंस्टेंस है। यह अलग भौतिक सर्वर, वर्चुअल मशीन या कंटेनर हो सकता है। एक Kafka क्लस्टर में कई Broker हो सकते हैं, जो मिलकर उच्च उपलब्धता और उच्च थ्रूपुट वाला संदेश वितरण उपलब्ध कराते हैं।
Topic(विषय):Topic संदेशों का तार्किक वर्गीकरण या विषय है। यह संदेश प्रकाशित करने और उनकी सदस्यता लेने की इकाई है। Producer किसी निर्दिष्ट Topic पर संदेश प्रकाशित करता है, जबकि Consumer अपनी रुचि के Topic की सदस्यता लेकर संदेश प्राप्त करता है। Topic को संदेशों का एक पात्र समझा जा सकता है, जो संबंधित संदेशों को श्रेणियों और समूहों में व्यवस्थित करता है।
Partition(विभाजन):Topic को एक या अधिक विभाजनों में बाँटा जा सकता है, और प्रत्येक विभाजन Topic का एक उपसमुच्चय होता है। विभाजन संदेश भंडारण और प्रेषण की सबसे छोटी इकाई है। भौतिक रूप से हर विभाजन की अपनी स्वतंत्र लॉग फ़ाइल होती है, और ये अलग-अलग Broker पर वितरित होते हैं। विभाजन Kafka को क्षैतिज विस्तार और समानांतर प्रसंस्करण करने में सक्षम बनाते हैं, साथ ही अधिक थ्रूपुट प्रदान करते हैं। प्रत्येक विभाजन के संदेश पहले आओ, पहले जाओ के क्रम में संग्रहीत और प्रेषित किए जाते हैं।
3、स्थायित्व और विश्वसनीयता:
RabbitMQ:RabbitMQ संदेश स्थायीकरण तंत्र अपनाता है, जिसमें संदेश डिस्क पर स्थायी रूप से लिखे जाते हैं, जिससे उनकी विश्वसनीयता सुनिश्चित होती है। यह संदेश पुष्टि के कई तंत्र और लेनदेन समर्थित करता है, जिससे संदेशों का विश्वसनीय वितरण सुनिश्चित किया जा सकता है।
RocketMQ:RocketMQ में स्थायी भंडारण और विश्वसनीयता की मज़बूत विशेषताएँ हैं। यह सिंक्रोनस डिस्क लेखन और असिंक्रोनस प्रतिलिपि तंत्र का समर्थन करता है, जिससे संदेश वितरण की उच्च विश्वसनीयता सुनिश्चित की जा सकती है।
Kafka:Kafka संदेशों को स्थायी रूप से संग्रहीत करता है;संदेश डिस्क पर लॉग फ़ाइलों में लिखे जाते हैं। विभाजन और प्रतिकृति तंत्रों के माध्यम से यह उच्च विश्वसनीयता और स्थायी भंडारण की क्षमता प्रदान करता है।
4、प्रसंस्करण क्षमता
RabbitMQ:RabbitMQ का थ्रूपुट आमतौर पर कम होता है,और यह छोटे तथा मध्यम स्तर के अनुप्रयोगों के लिए उपयुक्त है। RabbitMQ छोटे तथा मध्यम स्तर के अनुप्रयोगों के लिए उपयुक्त है,और आमतौर पर दस हज़ार से एक लाख के स्तर तक संदेश संभाल सकता है। इसका मुख्य ध्यान संदेशों की विश्वसनीय डिलीवरी और संदेशों को स्थायी रूप से सहेजने पर है,उच्च थ्रूपुट की आवश्यकताओं के लिए अनुकूलन और समायोजन करने पड़ सकते हैं।
RocketMQ:RocketMQ की संदेश प्रसंस्करण दर काफ़ी ऊँची है और इसकी प्रसंस्करण क्षमता दस लाख संदेशों के स्तर तक पहुँच सकती है। यह वितरित लेनदेन और बड़े पैमाने पर संदेश भेजने के परिदृश्यों में उत्कृष्ट प्रदर्शन करता है।
Kafka:Kafka उच्च थ्रूपुट के लिए प्रसिद्ध संदेश कतार प्रणाली है, जो लाखों या उससे भी अधिक संदेशों को संभाल सकती है। Kafka बड़े पैमाने पर डेटा प्रसंस्करण, रीयल-टाइम स्ट्रीम प्रसंस्करण और लॉग प्रसंस्करण जैसे उच्च थ्रूपुट वाले परिदृश्यों के लिए उपयुक्त है।
5、प्रतिक्रिया समय
6、समुदाय और पारिस्थितिकी तंत्र
RabbitMQ:RabbitMQ के पास प्लगइन और टूल का समृद्ध पारिस्थितिकी तंत्र है, साथ ही व्यापक डेवलपर समुदाय का समर्थन भी है।
RocketMQ:RocketMQ का चीन में व्यापक उपयोग होता है और इसे Alibaba के समृद्ध पारिस्थितिकी तंत्र तथा समुदाय का समर्थन प्राप्त है।
Kafka:Kafka का सक्रिय मुक्त स्रोत समुदाय और व्यापक पारिस्थितिकी तंत्र है, और अनेक बड़ी कंपनियाँ इसका व्यापक उपयोग करती हैं।
Github स्टार
Github योगदानकर्ता
कुल मिलाकर:rabbitmq<rocketmq<kafka
7、डिज़ाइन की अवधारणा
RabbitMQ:RabbitMQ,AMQP(उन्नत संदेश कतार प्रोटोकॉल)पर आधारित एक मुक्त स्रोत संदेश मिडलवेयर है,जो उपयोग में आसानी और लचीलेपन पर ज़ोर देता है,कई संदेश प्रतिरूपों और विश्वसनीय संदेश वितरण का समर्थन करता है।
RocketMQ:RocketMQ Alibaba का मुक्त-स्रोत वितरित संदेश मिडलवेयर है। इसे मूलतः Alibaba की आंतरिक विशाल डेटा प्रसंस्करण आवश्यकताओं को पूरा करने के लिए डिज़ाइन किया गया था और इसमें उच्च थ्रूपुट तथा कम विलंबता की विशेषताएँ हैं। 2016 में Alibaba ने RocketMQ को Apache Software Foundation को दान कर दिया।
Kafka:Kafka, LinkedIn द्वारा विकसित एक वितरित स्ट्रीम प्रोसेसिंग प्लेटफ़ॉर्म है,जिसका मुख्य उपयोग उच्च थ्रूपुट वाली वास्तविक समय की डेटा धाराओं के प्रसंस्करण में होता है,यह डेटा को स्थायी रूप से संग्रहीत और संसाधित करता है। 2011 में Kafka, Apache की एक मुक्त स्रोत परियोजना बन गया।
8、डेटा मॉडल
RabbitMQ:RabbitMQ कतार(Queue)मॉडल अपनाता है, संदेश कतार में भेजे जाते हैं, और उपभोक्ता कतार से संदेश प्राप्त करके उन्हें संसाधित करते हैं।
RocketMQ:RocketMQ टॉपिक(Topic)और टैग(Tag)का मॉडल अपनाता है। संदेश टॉपिक पर प्रकाशित किए जाते हैं, और उपभोक्ता टॉपिक तथा टैग के आधार पर सदस्यता लेकर संदेशों को छाँट सकते हैं।
Kafka:Kafka प्रकाशन-सदस्यता मॉडल अपनाता है, जिसमें संदेश किसी विषय पर प्रकाशित होते हैं और कई उपभोक्ता एक ही विषय की सदस्यता लेकर स्वतंत्र रूप से संदेशों का उपभोग कर सकते हैं।
9、वेब प्रबंधन उपकरण
RabbitMQ
RabbitMQ वेब प्रबंधन इंटरफ़ेस:RabbitMQ के साथ एक वेब प्रबंधन इंटरफ़ेस मिलता है, जिसे ब्राउज़र से खोला जा सकता है। यह एक सहज उपयोगकर्ता इंटरफ़ेस प्रदान करता है, जिससे RabbitMQ सर्वर के विभिन्न पहलुओं को देखा और प्रबंधित किया जा सकता है, जिनमें कतारें, एक्सचेंज, बाइंडिंग और उपयोगकर्ता अनुमतियाँ शामिल हैं। डिफ़ॉल्ट रूप से यह वेब प्रबंधन इंटरफ़ेस 15672 पोर्ट पर चलता है।
RokcetMQ
RocketMQ Console:RocketMQ आधिकारिक रूप से RocketMQ Console नामक एक वेब कंसोल प्रदान करता है। इसमें RocketMQ क्लस्टर के विभिन्न पहलुओं के प्रबंधन और निगरानी के लिए दृश्य इंटरफ़ेस मिलता है, जिसमें Topic, उपभोक्ता समूह, संदेश खोज और प्रदर्शन आँकड़े आदि शामिल हैं। इस उपकरण का उपयोग कंसोल के URL पर जाकर किया जा सकता है।
Kafka
Kafka Manager:Kafka Manager, Yahoo द्वारा विकसित एक मुक्त स्रोत ग्राफ़िकल प्रबंधन उपकरण है, जिसका उपयोग Apache Kafka क्लस्टर के प्रबंधन के लिए होता है। यह क्लस्टर की स्थिति की वास्तविक समय में निगरानी, टॉपिक और पार्टिशन का प्रबंधन, उपभोक्ता समूहों का प्रबंधन जैसी सुविधाएँ प्रदान करता है।
10、संदेश मॉडल
मुख्यधारा के संदेश मिडलवेयर के संचार मॉडल मुख्यतः पॉइंट-टू-पॉइंट मॉडल और प्रकाशन-सदस्यता मॉडल हैं। विशेष रूप से:
RabbitMQ:
प्रकाशन-सदस्यता पैटर्न:RabbitMQ प्रकाशन-सदस्यता पैटर्न का समर्थन करता है, जिसमें उत्पादक संदेशों को एक्सचेंज(Exchange)पर प्रकाशित करता है, फिर एक्सचेंज संदेशों को उससे बँधी(Binding)कई कतारों तक पहुँचाता है। उपभोक्ता कतारों से स्वतंत्र रूप से संदेश प्राप्त कर सकते हैं।
पॉइंट-टू-पॉइंट मॉडल:RabbitMQ पॉइंट-टू-पॉइंट मॉडल का भी समर्थन करता है,जिसमें उत्पादक संदेशों को एक निर्दिष्ट कतार में भेजता है,और फिर उपभोक्ता उस कतार से संदेश प्राप्त करता है।हर संदेश को केवल एक उपभोक्ता ही प्राप्त और संसाधित कर सकता है।
2.RocketMQ:
प्रकाशन-सदस्यता पैटर्न:RocketMQ प्रकाशन-सदस्यता पैटर्न का समर्थन करता है, जिसमें उत्पादक निर्दिष्ट विषय(Topic)पर संदेश भेजते हैं, और उपभोक्ता अपनी रुचि के विषयों की सदस्यता लेते हैं। RocketMQ का सदस्यता पैटर्न प्रसारण मोड और क्लस्टर मोड जैसी कई सदस्यता विधियों का समर्थन करता है, जिनसे संदेशों का बहुप्रेषण या भार संतुलित उपभोग किया जा सकता है।
कतार मोड:RocketMQ कतार मोड का भी समर्थन करता है,इसमें उत्पादक संदेशों को निर्दिष्ट कतार में भेजते हैं,फिर उपभोक्ता निर्दिष्ट कतार से संदेश प्राप्त करते हैं। कई उपभोक्ता एक ही कतार से समानांतर रूप से संदेश ग्रहण कर सकते हैं।
3.Kafka:
प्रकाशन-सदस्यता पैटर्न:Kafka प्रकाशन-सदस्यता पैटर्न अपनाता है, जिसमें उत्पादक निर्दिष्ट विषय(Topic)पर संदेश प्रकाशित करते हैं और उपभोक्ता अपनी रुचि के विषयों की सदस्यता लेते हैं। Kafka की सदस्यता प्रणाली कई उपभोक्ता समूहों का समर्थन करती है। हर उपभोक्ता समूह स्वतंत्र रूप से संदेशों का उपभोग कर सकता है, जिससे उच्च थ्रूपुट और क्षैतिज विस्तार संभव होता है।
विभाजन मॉडल:Kafka किसी टॉपिक को कई विभाजनों में बाँटता है;हर विभाजन भौतिक रूप से एक स्वतंत्र लॉग फ़ाइल के अनुरूप होता है। उत्पादक संदेशों को निर्दिष्ट विभाजन में भेजते हैं, और उपभोक्ता अलग-अलग विभाजनों से समानांतर रूप से संदेश ग्रहण कर सकते हैं। इस विभाजन मॉडल से Kafka क्षैतिज विस्तार और उच्च थ्रूपुट प्राप्त कर सकता है।