2015-09-27 6 views
7

से बचें मैं क्लाउड कंप्यूटिंग के लिए नया हूं, लेकिन अगर कोई तंत्र जो मैं वर्णन करने वाला हूं या अस्तित्व में है, तो एक सवाल था?थ्रॉटल डाइनेमो डीबी

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

उत्तर

9

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

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

एक या अधिक कार्यकर्ता उदाहरण एसक्यूएस कतार से संदेशों को पढ़ने से और डायनेमो डीबी में डाल सकते हैं जो आप तय करते हैं।

तो जो संदेश में आने का आदेश अत्यंत महत्वपूर्ण है, Kinesis आपको इनकमिंग संदेशों निगलना और फिर उन्हें DynamoDB में डालने, उसी क्रम में वे एक गति आपके द्वारा निर्धारित में आ गया, में के लिए एक और विकल्प है।

आईएमओ, एसक्यूएस के साथ काम करना आसान होगा, लेकिन यदि आपकी ज़रूरतें अधिक जटिल हैं तो किनेस आपको अधिक लचीलापन देगा।

+0

वाह, हाँ यह वही है जो मैं ढूंढ रहा था। मैंने अभी एसक्यूएस के बारे में पढ़ना शुरू कर दिया है, लेकिन डायनेमोडब के साथ इसे एकीकृत करने के लिए कोई दस्तावेज़ीकरण नहीं मिल रहा है? मुझे लगता है कि अमेज़ॅन वास्तव में इस विज्ञापन का विज्ञापन करना चाहिए, यह डायनेमोड के साथ शामिल करने के लिए एक शानदार विशेषता है। – user2924127

2

यह अकेले डायनेमो डीबी का उपयोग करके पूरा नहीं किया जा सकता है। डायनेमो डीबी वर्दी, स्केलेबल, अनुमानित वर्कलोड के लिए डिज़ाइन किया गया है। यदि आप डायनेमो डीबी के सामने एक कतार डालना चाहते हैं तो आपने स्वयं ऐसा किया है।

डायनेमोडीबी burst capacity के लिए थोड़ा सहनशीलता रखता है, लेकिन यह निरंतर उपयोग के लिए नहीं है। आपने सर्वश्रेष्ठ व्यवहार अनुभाग Consider Workload Uniformity When Adjusting Provisioned Throughput कुछ पढ़ना चाहिए, लेकिन यहाँ कर रहे हैं, मैं क्या सोचता हूँ मेरे द्वारा पर बल दिया कुछ चीजें साथ पैराग्राफ महत्वपूर्ण हैं,:

कि वर्दी वर्कलोड साथ प्रयोग के लिए तैयार कर रहे हैं अनुप्रयोगों के लिए, DynamoDB के विभाजन आवंटन गतिविधि ध्यान देने योग्य नहीं है। वर्कलोड में एक अस्थायी गैर-समानता आमतौर पर विस्फोट भत्ता द्वारा अवशोषित की जा सकती है, जैसा कि Use Burst Capacity Sparingly में वर्णित है। हालांकि, यदि आपके एप्लिकेशन को नियमित आधार पर गैर वर्दी वर्कलोड को समायोजित करना होगा, तो आपको अपनी तालिका को डायनेमोडीबी के विभाजन व्यवहार के साथ दिमाग में डिज़ाइन करना चाहिए (Understand Partition Behavior देखें), और उस तालिका पर प्रावधान थ्रूपुट को बढ़ाने और घटाने पर ध्यान रखें।

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

ऐसे उपकरण हैं जो ऑटो-स्केलिंग डायनेमोडीबी, जैसे sebdah/dynamic-dynamodb के साथ मदद कर सकते हैं जो देखने योग्य हो सकते हैं।

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