2012-11-21 11 views
18

documentation के अनुसार:अमेज़ॅन एसक्यूएस के साथ "सटीक-एक बार वितरण" व्यवहार प्राप्त करने के लिए एक अच्छा अभ्यास क्या है?

प्रश्न: मैं प्रत्येक संदेश कितनी बार प्राप्त होगा?

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

क्या वास्तव में एक बार वितरण प्राप्त करने के लिए कोई अच्छा अभ्यास है?

मैं वितरित लॉकिंग तंत्र के रूप में डायनेमो डीबी “Conditional Writes” का उपयोग करने के बारे में सोच रहा था लेकिन ... कोई बेहतर विचार?


इस विषय से कुछ संदर्भ:

+6

अंत में बीटीडब्ल्यू मैंने "डायनेमो डीबी सशर्त लेखन" –

उत्तर

3

फीफो कतार अब उपलब्ध हैं और बॉक्स के ठीक बाहर एक बार आदेश प्रदान करते हैं।

https://aws.amazon.com/sqs/faqs/#fifo-queues

उपलब्धता के लिए अपने क्षेत्र की जाँच करें।

+0

फीफो कतार एसएनएस के साथ संगत नहीं हैं, इसलिए यदि आप एसएनएस + एसक्यूएस के संयोजन का उपयोग कर रहे हैं तो आप इसका उपयोग नहीं कर सकते हैं। https: //docs.aws.amazon।com/AWSSimpleQueueService/नवीनतम/SQSDeveloperGuide/SQS से सदस्यता ले-पंक्ति-एसएनएस-topic.html –

7

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

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

+6

+1 का उपयोग किया, मैं सहमत हूं, एसक्यू के लिए अमेज़ॅन व्यापार बंद कई प्रकार के अनुप्रयोगों के लिए मैसेजिंग समाधान के रूप में डाउनग्रेड करता है। काश वे एक वैकल्पिक व्यवहार के रूप में अपने स्वयं के सिंक समाधान की पेशकश करेंगे जो आप एक समान कामकाज पर श्रम करने के बजाय, समझा प्रदर्शन लागत पर सक्षम हो सकते हैं। –

1

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

कैश का उपयोग करने के फायदों में से एक यह है कि आप समाप्ति समयआउट सेट कर सकते हैं, इसलिए यदि आपका संदेश प्रसंस्करण लॉक विफल रहता है तो समय समाप्त हो जाएगा।

संबंधित मुद्दे