एडब्ल्यूएस इलास्टीचे / सिंपलक्यूए बनाम डायनामोडीबी


13

मैं ElastiCache / SimpleQueue बनाम का उपयोग करने के औचित्य के बारे में सोच रहा हूं, क्रमशः डायनेमोबीडी के अंदर "कैश" और "कतार" टेबल।

ऐसा लगता है कि कैश / कतार सेवाओं के लिए नेटवर्क विलंबता प्रदर्शन लाभ का एक बहुत बड़ा हिस्सा होगा, और EC2 डायनामो के साथ व्यवहार करता है क्योंकि यह कैश / कतार सेवा एक ही विलंबता और थ्रूपुट की पेशकश करेगा (क्योंकि डायनमो किसी भी तहत एक निश्चित विलंबता की अनुमति देता है भार)।

क्या यह मुख्य रूप से डायनेमो बनाम अन्य सेवाओं के मूल्य के अंतर्गत लोड के बारे में है?

क्या किसी के पास डायस्टो की तुलना ElastiCache / SQS से किया गया है।

क्या अन्य महत्वपूर्ण विचार हैं जो मुझे याद आ रहे हैं जो अतिरिक्त जटिलता को सही ठहराते हैं?

धन्यवाद।

जवाबों:


9

हम अलग-अलग कारणों से डाइनेमोबीडी और इलास्टीचे रेडिस का उपयोग कर रहे हैं।

DynamoDB:

  • एक क्वेरी भाषा है जो अधिक जटिल चीजें करने में सक्षम है (अधिक से अधिक, आदि के बीच)
  • बाहरी इंटरनेट-फेसिंग एपीआई के माध्यम से पहुंच योग्य है (विभिन्न क्षेत्र बिना किसी परिवर्तन या स्वयं के बुनियादी ढांचे के लिए उपलब्ध हैं)
  • तालिकाओं या यहां तक ​​कि पंक्तियों के आधार पर अनुमतियाँ संभव हैं
  • अनन्तता को डेटा आकार के संदर्भ में स्केल
  • आप प्रति अनुरोध का भुगतान करते हैं -> कम अनुरोध संख्या का मतलब है छोटे बिल, उच्च अनुरोध संख्या का मतलब है उच्च बिल
  • रीड्स और राइट्स लागत में भिन्न हैं
  • डेटा को कई सुविधाओं में AWS द्वारा अनावश्यक रूप से सहेजा जाता है
  • DynamoDB अत्यधिक उपलब्ध है
  • ऑटोसालिंग सेवा में ही उपलब्ध है

इलास्टीचे रेडिस:

  • सरल क्वेरी भाषा - कोई जटिल विशेषताएं नहीं
  • अन्य क्षेत्रों से पहुंच योग्य नहीं है (आउट-ऑफ-द-बॉक्स)।
  • आप हमेशा मेमोरी की मात्रा तक सीमित रहते हैं (या क्लस्टर में सभी प्राथमिक उदाहरणों का योग)
  • कई उदाहरणों पर साझा करना आपके आवेदन के भीतर ही संभव है - Redis यहाँ कुछ भी नहीं करता है (Redis क्लस्टर यहाँ मदद करता है लेकिन आप अभी भी अपने अनुप्रयोग में उपयोग किए जा रहे ड्राइवर / sdk के अंदर पैठ बना रहे हैं) - स्केल-इन और स्केल- फिलहाल बिना डाउनटाइम संभव नहीं है
  • आप प्रति उदाहरण भुगतान करते हैं, भले ही लोड या अनुरोधों की संख्या कितनी हो।
  • यदि आप डेटा की अतिरेक चाहते हैं तो आपको प्रतिकृति बनाने की आवश्यकता है (विभिन्न क्षेत्रों के बीच संभव नहीं है)
  • आपको उच्च उपलब्धता के लिए प्रतिकृतियों का उपयोग करने की आवश्यकता है
  • कोई ऑटोसालिंग उपलब्ध नहीं है (ऊपर कोई स्केलिंग के बारे में हिस्सा देखें)

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

उम्मीद है की वो मदद करदे!

अपडेट: Amazon DynamoDB Accelerator ( https://aws.amazon.com/de/dynamodb/dax/ ) की घोषणा के साथ हम DAX का उपयोग करने के लिए स्विच कर रहे हैं क्योंकि यह (अंत में) ठीक वैसा ही है जैसा हम साथ कर रहे थे डायनमोडीबी और रेडिस का संयोजन। जैसा कि DAX को पूरी तरह से AWS द्वारा प्रबंधित किया जाता है और हमें अपने एप्लिकेशन में हमेशा डायनामो डीबी भाषा का उपयोग करने का मौका देता है, लेकिन रेडिस जैसे राइट-थ्रू कैश से भी लाभ मिलता है।


बहुत मददगार, धन्यवाद। मुझे समझ में नहीं आता है कि आप डायनामोडब के साथ बैकअप रेडिस कैसे हैं: क्या यह एडब्ल्यूएस की विशेषता है? या आप बैकअप कब और कैसे बनाते हैं? धन्यवाद, अगर आप स्पष्ट कर सकते हैं कि!
बदरा

मेरा "द्वारा समर्थित" पारंपरिक तरीके से बैकअप के रूप में नहीं है। हम वास्तव में हर समय डायनॉम्बो पर लिख रहे हैं और पहले पढ़ने के लिए रेडिस का उपयोग कर रहे हैं। यहां तक ​​कि अगर Redis डेटा खो देता है तो हमारे पास DynamoDB में उपलब्ध है। DAX ( aws.amazon.com/de/dynamodb/dax ) के उपयोग के साथ यह उपयोग मामला अब बहुत आसान हो गया है!
Osterjour

7

डायनामोडीबी के बजाय हम इलास्टिक का उपयोग करने का मुख्य कारण गति है - आपको छोटी वस्तुओं के लिए उप 1ms गोल यात्रा विलंबता मिलती है। बॉक्स वास्तव में आपके EC2 मशीन के करीब है, और मेमोरी डिस्क से बहुत तेज है, यहां तक ​​कि एसएसडी भी।

अलग-अलग मूल्य-निर्धारण मॉडल को देखते हुए एक लागत लाभ भी हो सकता है, हालांकि मैं वहां बहुत विस्तार में नहीं गया हूं।


क्या यह अभी भी प्रासंगिक है? DAX को नहीं बदला?
dmigo

1
DAX विलंबता के अधिकांश मुद्दों को हल कर देगा, हाँ। मुझे सटीक गति के अंतर पर यकीन नहीं है - छोटी वस्तुओं के लिए नेटवर्क विलंबता के लिए प्रमुख योगदानकर्ता होगा।
मैक्सिमिलियन

1

Redis / memcached इन-मेमोरी स्टोर हैं और आम तौर पर कैश / कतार-प्रकार के डेटा के लिए डायनेमोडी से अधिक तेज होना चाहिए। उनके पास अतिरिक्त वस्तुएं जैसे एक्सपायरिंग कीज़, पब / रेडिस में सब आदि भी हैं, जो डायनामो के पास नहीं हो सकते हैं।


1
धन्यवाद। मुझे एहसास है कि कैश मेमोरी में है, लेकिन मैंने पढ़ा है कि कैश को हिट करने और वापस आने के लिए कम से कम ~ 10ms राउंडट्रिप की उम्मीद की जा सकती है, जो प्रदर्शन विशेषताओं को डायनमो के समान बनाता है। मुझे लगता है कि आप सही कह रहे हैं कि आप डायनेमो में लाभ नहीं होने के कारण विशिष्ट सुविधाएँ चाहते हैं। लेकिन मेरे लिए, रैम कैश का मुख्य लाभ एक टिकाऊ स्टोर पर परिमाण प्रदर्शन में वृद्धि के आदेश हैं, जो यहां लागू नहीं होता है।
स्कॉट कर्लेनबैक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.