मुझे समझ नहीं आ रहा है कि मैं SNS बनाम SQS का उपयोग कब करूंगा, और वे हमेशा एक साथ युग्मित क्यों होते हैं?
मुझे समझ नहीं आ रहा है कि मैं SNS बनाम SQS का उपयोग कब करूंगा, और वे हमेशा एक साथ युग्मित क्यों होते हैं?
जवाबों:
एसएनएस एक वितरित प्रकाशित-सदस्यता प्रणाली है। जब भी प्रकाशकों द्वारा एसएनएस को भेजा जाता है, तो संदेश ग्राहकों को धकेल दिए जाते हैं।
SQS वितरित किया जाता है कतार प्रणाली। संदेश प्राप्तकर्ताओं को नहीं धकेले जाते हैं। प्राप्तकर्ताओं को SQS के संदेशों को पराग करना या खींचना होता है । एक ही समय में कई रिसीवर द्वारा संदेश प्राप्त नहीं किया जा सकता है। कोई भी रिसीवर एक संदेश प्राप्त कर सकता है, प्रक्रिया कर सकता है और उसे हटा सकता है। अन्य रिसीवरों को बाद में एक ही संदेश नहीं मिलता है। मतदान स्वाभाविक रूप से एसएनएस के विपरीत एसक्यूएस में संदेश वितरण में कुछ विलंबता का परिचय देता है जहां संदेश तुरंत ग्राहकों को धकेल दिए जाते हैं। SNS कई अंतिम बिंदुओं जैसे ईमेल, sms, http एंड पॉइंट और SQS का समर्थन करता है। यदि आप संदेश प्राप्त करने के लिए अज्ञात संख्या और ग्राहकों के प्रकार चाहते हैं, तो आपको SNS की आवश्यकता है।
आपको एसएनएस और एसक्यूएस को हमेशा जोड़े रखने की जरूरत नहीं है। आप SQ के अलावा SNS को ईमेल, एसएमएस या http एंड पॉइंट पर संदेश भेज सकते हैं। एसक्यूएस के साथ एसएनएस को युग्मित करने के फायदे हैं। आप अपने मेजबानों से संबंध बनाने के लिए एक बाहरी सेवा नहीं चाहते हैं (फ़ायरवॉल बाहर से आपके मेजबान के लिए आने वाले सभी कनेक्शनों को अवरुद्ध कर सकता है)। संदेशों की भारी मात्रा के कारण आपका अंतिम बिंदु बस मर सकता है। ईमेल और एसएमएस शायद आपके संदेश को जल्दी से संसाधित करने का विकल्प नहीं है। एसएनएस के साथ एसएनएस को युग्मित करके, आप अपनी गति से संदेश प्राप्त कर सकते हैं। यह क्लाइंट को ऑफलाइन, नेटवर्क के प्रति सहिष्णु और मेजबान विफलताओं की अनुमति देता है। आप गारंटीकृत डिलीवरी भी प्राप्त करते हैं। यदि आप किसी http अंतिम बिंदु या ईमेल या एसएमएस पर संदेश भेजने के लिए SNS को कॉन्फ़िगर करते हैं, तो संदेश भेजने में कई विफलताएं संदेश को गिरा सकती हैं।
SQS का उपयोग मुख्य रूप से अनुप्रयोगों को डिकूप करने या अनुप्रयोगों को एकीकृत करने के लिए किया जाता है। संदेश कम अवधि (अधिकतम 14 दिन) के लिए SQS में संग्रहीत किए जा सकते हैं। SNS कई ग्राहकों को संदेश की कई प्रतियां वितरित करता है। उदाहरण के लिए, आप कई स्टोरेज सिस्टम के लिए एप्लिकेशन द्वारा उत्पन्न डेटा को दोहराने के लिए कहना चाहते हैं। आप SNS का उपयोग कर सकते हैं और इस डेटा को कई सब्सक्राइबर्स को भेज सकते हैं, प्रत्येक प्रत्येक संदेश को विभिन्न स्टोरेज सिस्टम (s3, आपके होस्ट, डेटाबेस आदि पर हार्ड डिस्क) को प्राप्त करता है।
यहाँ दो की तुलना है:
इकाई प्रकार
संदेश की खपत
उदाहरण
हठ
उपभोक्ता प्रकार
नमूना अनुप्रयोगों
डॉक्स से:
अमेज़ॅन एसएनएस एक "पुश" तंत्र के माध्यम से कई ग्राहकों को समय-महत्वपूर्ण संदेश भेजने की अनुमति देता है, अपडेट के लिए समय-समय पर जांच या "पोल" की आवश्यकता को समाप्त करता है।
अमेज़ॅन SQS एक संदेश कतार सेवा है जिसका उपयोग एक मतदान मॉडल के माध्यम से संदेशों का आदान-प्रदान करने के लिए वितरित अनुप्रयोगों द्वारा किया जाता है, और प्रत्येक घटक को समवर्ती उपलब्ध कराने की आवश्यकता के बिना घटकों को भेजने और प्राप्त करने के लिए उपयोग किया जा सकता है।
http://docs.aws.amazon.com/sns/latest/dg/SendMessageToSQS.html
इस धागे पर उत्तर थोड़े पुराने हैं, इसलिए मैंने इसमें अपने दो सेंट जोड़ने का फैसला किया है:
आप एसएनएस को एक पारंपरिक विषय के रूप में देख सकते हैं जिसमें आपके कई सदस्य हो सकते हैं। उदाहरण के लिए, आपके पास एक दिए गए SNS विषय के लिए विषम ग्राहक हो सकते हैं, उदाहरण के लिए लैम्ब्डा और SQS। आप SNS का उपयोग करके एसएमएस संदेश या ई-मेल भी बॉक्स से बाहर भेज सकते हैं। एसएनएस में विचार करने के लिए एक बात केवल एक संदेश (सूचना) प्राप्त होती है, इसलिए आप बैचिंग से लाभ नहीं उठा सकते हैं।
दूसरी ओर, SQS , एक कतार के अलावा कुछ भी नहीं है, जहां आप संदेशों को संग्रहीत करते हैं और एक उपभोक्ता की सदस्यता लेते हैं (हाँ, आपके पास एक SQS कतार में N उपभोक्ता हो सकते हैं, लेकिन यह बहुत तेज़ी से गड़बड़ हो जाएगा और सभी उपभोक्ताओं पर विचार करने का प्रबंधन करने के लिए कठिन रास्ता तय करेगा) संदेश को कम से कम एक बार पढ़ने की आवश्यकता है, इसलिए इस उपयोग के मामले के लिए एसक्यूएस के साथ संयुक्त एसएनएस के साथ एक बेहतर है, जहां एसएनएस इन संदेशों को संसाधित करने के लिए एन एसक्यूएस कतारों को सूचना धक्का देगा और हर कतार में एक ग्राहक होगा, केवल)। जून 28, 2018 तक, AWS ने SQS के लिए लैंबडा ट्रिगर का समर्थन किया है , जिसका अर्थ है कि आपको चुनाव नहीं करना हैसंदेशों के लिए अब और इसके अलावा, आप विफलता के मामले में संदेश भेजने के लिए अपने स्रोत SQS कतार पर DLQ कॉन्फ़िगर कर सकते हैं। सफलता के मामले में, संदेश स्वचालित रूप से हटा दिए जाते हैं (यह एक और महान सुधार है), इसलिए आपको पहले से संसाधित संदेशों को फिर से पढ़ने के बारे में चिंता करने की ज़रूरत नहीं है यदि आप उन्हें मैन्युअल रूप से हटाना भूल गए हैं। मैं सुझाव देता हूं कि एक बार देख लें लंबोदर रिट्री बिहेवियरयह समझने के लिए कि यह कैसे काम करता है। SQS का उपयोग करने का एक बड़ा लाभ यह है कि यह बैच प्रसंस्करण को सक्षम करता है। प्रत्येक बैच में 10 संदेश शामिल हो सकते हैं, इसलिए यदि आपकी SQS कतार में एक बार में 100 संदेश आते हैं, तो 10 लैम्ब्डा फ़ंक्शन स्पिन हो जाएंगे (लैम्ब्डा के लिए डिफ़ॉल्ट ऑटो-स्केलिंग व्यवहार को देखते हुए) और वे इन 100 संदेशों को संसाधित करेंगे (में रखें) मन यह अभ्यास के रूप में खुश रास्ता है, कुछ और लैंबडा फ़ंक्शन बैच में 10 संदेशों से कम पढ़ने को स्पिन कर सकते हैं, लेकिन आपको विचार मिलता है)। यदि आपने SNS को ये समान 100 संदेश पोस्ट किए हैं, तो, 100 लैंबडा फ़ंक्शंस खर्च होंगे, अनावश्यक रूप से बढ़ती लागत और अपने लैम्ब्डा कॉन्सैरेसी का उपयोग करना। हालाँकि, यदि आप अभी भी पारंपरिक सर्वर (जैसे EC2 इंस्टेंसेस) चला रहे हैं, तब भी आपको संदेशों के लिए चुनाव करने और उन्हें मैन्युअल रूप से प्रबंधित करने की आवश्यकता होगी।
आपके पास FIFO SQS कतारें भी हैं , जो संदेशों के वितरण क्रम की गारंटी देती हैं। यह लैम्ब्डा द्वारा समर्थित ट्रिगर नहीं है, इस प्रकार इस प्रकार की क्यू चुनते समय, ध्यान रखें कि संदेशों को मैन्युअल रूप से हटाने के लिए मतदान अभी भी आवश्यक है।
भले ही उनके उपयोग के मामलों में कुछ ओवरलैप हो, दोनों SQS और SNS की अपनी स्पॉटलाइट है।
एसएनएस का उपयोग करें यदि:
SQS का उपयोग करें यदि:
AWS SNS एक प्रकाशक सब्सक्राइबर नेटवर्क है, जहाँ सब्सक्राइबर विषयों की सदस्यता ले सकते हैं और जब भी कोई प्रकाशक उस विषय पर प्रकाशित करता है तो उसे संदेश प्राप्त होंगे।
AWS SQS एक कतार सेवा है, जो संदेशों को कतार में संग्रहीत करती है। SQS किसी भी संदेश को वितरित नहीं कर सकता है, जहां SQS को चुनने और SQS के संदेशों को हथियाने के लिए एक बाहरी सेवा (lambda, EC2 आदि) की आवश्यकता होती है।
एसएनएस और एसक्यूएस का उपयोग कई कारणों से एक साथ किया जा सकता है।
विभिन्न प्रकार के ग्राहक हो सकते हैं जहां कुछ को संदेशों की तत्काल डिलीवरी की आवश्यकता होती है, जहां कुछ को मतदान के माध्यम से उपयोग के लिए संदेश को जारी रखने की आवश्यकता होती है। इस लिंक को देखें ।
" फैनआउट पैटर्न ।" यह संदेशों के अतुल्यकालिक प्रसंस्करण के लिए है। जब कोई संदेश SNS में प्रकाशित होता है, तो वह इसे समानांतर में कई SQS कतारों में वितरित कर सकता है। समानांतर में एक आवेदन में थंबनेल लोड करते समय यह बहुत अच्छा हो सकता है, जब छवियों को प्रकाशित किया जा रहा है। इस लिंक को देखें ।
लगातार भंडारण । जब एक सेवा जो एक संदेश को संसाधित करने जा रही है, विश्वसनीय नहीं है। इस तरह के एक मामले में, यदि एसएनएस किसी सेवा को अधिसूचना को आगे बढ़ाता है, और वह सेवा अनुपलब्ध है, तो अधिसूचना खो जाएगी। इसलिए हम SQS को एक स्थिर भंडारण के रूप में उपयोग कर सकते हैं और फिर बाद में इसे संसाधित कर सकते हैं।
सरल शब्दों में, SNS - पुश तंत्र का उपयोग करके ग्राहक को संदेश भेजता है और खींचने की आवश्यकता नहीं होती है। SQS - यह एक संदेश कतार सेवा है जिसका उपयोग एक मतदान मॉडल के माध्यम से संदेशों का आदान-प्रदान करने के लिए वितरित अनुप्रयोगों द्वारा किया जाता है, और घटकों को भेजने और प्राप्त करने के लिए उपयोग किया जा सकता है।
एक सामान्य पैटर्न एसएनएस का उपयोग अमेज़ॅन एसक्यूएस कतारों को संदेशों को प्रकाशित करने के लिए एक या कई सिस्टम घटकों को अविश्वसनीय रूप से संदेश भेजने के लिए किया जाता है। Https://aws.amazon.com/sns/faqs/ से संदर्भ
visibilityTimeout
सेट किया गया है, तो अन्य सिस्टम द्वारा संसाधित किए जाने के बाद कोई भी अन्य सिस्टम संदेश का उपभोग नहीं कर पाएगा।