यदि आपने कभी Aurora Read Replicas का उपयोग किया है, तो आपने देखा होगा कि कई अलग-अलग समापन बिंदु उपलब्ध हैं। क्लस्टर समापन बिंदु , पाठक समापन बिंदु , और आवृत्ति समापन बिंदु ... इन सभी विकल्पों के साथ, आप कैसे जानते हैं कि किसका उपयोग करना है और कब? किसी भी गैर-तुच्छ प्रणाली की तरह, इसका उत्तर है… यह निर्भर करता है। इस ब्लॉगपोस्ट में, हम विभिन्न समापन बिंदुओं, उनके लिए उपयोग के मामलों और उन डिज़ाइन निर्णयों के साथ आने वाले ट्रेड-ऑफ़ को देखेंगे।
सबसे पहले, आइए Amazon Aurora के साथ उपलब्ध विभिन्न समापन बिंदुओं को स्पर्श करें।
-
क्लस्टर समापन बिंदु - क्लस्टर समापन बिंदु उस डीबी क्लस्टर के लिए अपने एप्लिकेशन को मौजूदा प्राथमिक डीबी इंस्टेंस से कनेक्ट करें। आपका आवेदन इस उदाहरण को पढ़ और लिख सकता है।
-
पाठक समापन बिंदु - पाठक समापन बिंदु उपलब्ध रीड रेप्लिकास के पूल में लोड-बैलेंस कनेक्शन। अपने प्राथमिक डीबी इंस्टेंस पर लोड को कम करते हुए, यहां प्रश्नों को ऑफलोड करें।
-
आवृत्ति समापन बिंदु - एक इंस्टेंस एंडपॉइंट क्लस्टर में एक विशिष्ट उदाहरण से जुड़ता है। ग्राहकों के पास Amazon Aurora हैंडल कनेक्शन वितरण होने के बजाय क्वेरी आवंटन पर बढ़िया नियंत्रण हो सकता है।
मुझे पता है कि आप क्या सोच रहे हैं... मैं बस क्लस्टर एंडपॉइंट से जुड़ूंगा फॉरराइट करता है, रीडर एंडपॉइंट सभी पढ़ने के लिए, और मैं कभी भी विशिष्ट उदाहरण से क्यों जुड़ूंगा - जो अंतर्निहित गलती सहनशीलता को छोड़ देता है और परेशानी पूछ रहा है, है ना? जैसा कि पहले कहा गया था, आपका आवेदन और अरोरा के साथ इसकी बातचीत एक जटिल (या कम से कम एक गैर-तुच्छ) प्रणाली बनाती है। जटिल प्रणालियों के साथ, एक-आकार के सभी फिट बैठता है पर भरोसा करने का नियम नहीं है ... जब तक कि आप आधी रात में कॉल का आनंद नहीं लेते।
आइए कुछ परिदृश्यों को देखें और देखें कि विभिन्न समापन बिंदुओं का उपयोग कब और कहां करना है।
तत्काल संगति
कुछ एप्लिकेशन उम्मीद करते हैं कि डेटा तुरंत सुसंगत हो। जब ये एप्लिकेशन डेटा लिखते हैं, तो वे डेटा को कई डिज़ाइन पैटर्नों में से किसी के भी सख्त अनुपालन में तुरंत पढ़ते हैं, जो कहते हैं, "मॉडल पर भरोसा करें, आपके स्थानीय डेटा पर नहीं"। Amazon Aurora ACID के अनुरूप है; क्लस्टर समापन बिंदु . से एक पठन एक सफल राइट कमिटमेंट के तुरंत बाद अपेक्षित डेटा प्राप्त होगा (यह मानते हुए कि किसी अन्य लेनदेन ने बाद के पढ़ने से पहले डेटा को संशोधित नहीं किया)।
समस्या तब होती है जब लेखन को क्लस्टर समापन बिंदु . पर भेजा जाता है एंड्रेड को रीडर एंडपॉइंट . पर बनाया जाता है . यह डेटा लिखने और पाठकों के लिए दृश्यमान होने के बीच विलंबता के कारण होता है। जबकि प्रतिकृति विलंबता 100 मिलीसेकंड से कम है, यह तात्कालिक नहीं है, जिससे दौड़ की स्थिति पैदा हो जाती है। यदि आपके पास ऐसा परिदृश्य है जहां आपको लिखने के बाद तुरंत डेटा पढ़ने की आवश्यकता है, तो क्लस्टर एंडपॉइंट का उपयोग करें पढ़ने और लिखने दोनों के लिए। यह ध्यान दिया जाना चाहिए, यदि अतिरिक्त प्रदर्शन की आवश्यकता है, तो आपको अपने प्राथमिक उदाहरण का आकार बढ़ाना होगा।
हालांकि, यदि अंतिम संगति स्वीकार्य है और आपका एप्लिकेशन इसका समर्थन करता है, तो रीडर एंडपॉइंट . का उपयोग करके आपके प्राथमिक इंस्टेंस पर लोड को कम करने का एक शानदार तरीका है।
ऑफ़लोडिंग पढ़ता है
अगर लिखने के तुरंत बाद पढ़ना ठीक नहीं है, तो एक अलग रीडर एंडपॉइंट होने का क्या मतलब है ? ऐसे कई उपयोग-मामले हैं जहां थोड़ा असंगत डेटा कोई समस्या नहीं है। उदाहरण के लिए:दैनिक रिपोर्टिंग। कल के डेटा से रिपोर्ट जनरेट करने के लिए बैच जॉब चलाते समय, 100-मिलीसेकंड प्रतिकृति अंतराल अप्रासंगिक है। किसी ईकॉमर्स साइट पर उत्पाद विवरण जैसे अन्य परिदृश्यों की कल्पना करना आसान है... प्रतिकृति अंतराल से प्रभावित होने की तुलना में आपके उपयोगकर्ता के ब्राउज़र में पुराना डेटा होने की अधिक संभावना है।
आम तौर पर, पढ़ने के लिए भारी कार्यभार जो तत्काल स्थिरता पर निर्भर नहीं करते हैं, उन्हें रीडर एंडपॉइंट का उपयोग करने पर विचार करना चाहिए। ।
गैर-वर्दी कार्यभार
ऐसी स्थितियां हैं जहां इंस्टेंस एंडपॉइंट्स . का उपयोग करना समझ में आता है . मान लें कि आपके पास एक ऐसा एप्लिकेशन है जिसमें इलास्टिक लोड बैलेंसर के पीछे कई स्टेटलेस माइक्रोसर्विसेज हैं। इस स्थिति में, यह मान लेना उचित है कि क्वेरीज़ क्लाइंट्स में समान रूप से वितरित की जाती हैं, और इसलिए, रीडर एंडपॉइंट का उपयोग करते समय - रीड रेप्लिकाज़ में - ।
लेकिन उस स्थिति के बारे में क्या है जहां प्रत्येक ग्राहक का कार्यभार समान रूप से वितरित नहीं होता है? यदि मिश्रण में एक रिपोर्टिंग सेवा जोड़ी जाती है, तो एक रीड रेप्लिका में अन्य की तुलना में अनुपातहीन रूप से उच्च भार होता है। यदि पूर्व-उल्लिखित माइक्रोसर्विसेज भी इस रीड रेप्लिका का उपयोग करते हैं, तो रिपोर्टिंग सेवा द्वारा उपयोग किए गए इंस्टेंस को क्वेरी करते समय खराब क्वेरी प्रदर्शन की एक उच्च संभावना है। इससे बचने का एक तरीका यह है कि Amazon Aurora को आपके लिए ऐसा करने देने के बजाय क्लाइंट की ओर से कनेक्शन के वितरण का प्रबंधन किया जाए। सौभाग्य से, यह इंस्टेंस एंडपॉइंट्स . का उपयोग करके आसानी से किया जा सकता है पाठक समापन बिंदु . के बजाय .MySQL के लिए मारियाडीबी कनेक्टर/जे या AmazonAurora PostgreSQL के साथ फास्ट फेलओवर के साथ, ड्राइवर को उन अलग-अलग उदाहरणों से अवगत कराया जा सकता है, जिन्हें आप रीड रेप्लिकस के रूप में उपयोग करना चाहते हैं, जिससे ड्राइवर को सीधे यह प्रबंधित करने की अनुमति मिलती है कि अलग-अलग इंस्टेंस में क्वेरी कैसे वितरित की जाती हैं।पी>
DNS कैशिंग प्रबंधित करें
आपके कार्यभार की प्रकृति को समझने के अलावा, यह समझना महत्वपूर्ण है कि Aurora की उच्च उपलब्धता और रीडर एंडपॉइंट प्रदान करने के लिए कनेक्शन कैसे आवंटित किए जाते हैं। भार संतुलन।
स्वचालित क्लस्टर समापन बिंदु . का प्रबंधन विफलता और पाठक समापन बिंदु लोडबैलेंसिंग को DNS (अमेज़ॅन रूट 53) के माध्यम से नियंत्रित किया जाता है, न कि आईपी, टीसीपी, याडेटाबेस क्लाइंट प्रोटोकॉल परतों पर। DNS के माध्यम से कनेक्शन के वितरण को संभालने का मतलब है कि आपके उस एप्लिकेशन को प्रत्येक नए कनेक्शन अनुरोध के लिए एक DNS क्वेरी बनाना होगा। DNS कैशिंग का उपयोग करने वाले एप्लिकेशन को Amazon Aurora के लिए DNS रिकॉर्ड TTL से मिलान करने के लिए कैश टाइमआउट को समायोजित करना चाहिए। औरोरा डीएनएस रिकॉर्ड टीटीएल की तुलना में डीएनएस प्रतिक्रियाओं को लंबे समय तक कैशिंग करने के परिणामस्वरूप कुछ त्रुटि स्थितियां होंगी। यदि कोई उच्च-उपलब्धता (HA) विफलता घटना है, अर्थात, एक रीड रेप्लिका को प्राथमिक में प्रचारित किया जाता है, तो कैश्ड DNS प्रतिक्रिया का अर्थ होगा कि आपका एप्लिकेशन पुराने, विफल इंस्टेंस से पुन:कनेक्ट करने का प्रयास करेगा। पाठक समापन बिंदु . के मामले में , उपलब्ध रीड रेप्लिकास में वितरित किए जाने के बजाय DNS प्रतिक्रिया परिणामों को कैशिंग करने से एक विशिष्ट रीड रेप्लिका पर जाने वाले कई कनेक्शन होते हैं।
रैपिंग अप
जैसा कि हम देख सकते हैं, जब गैर-तुच्छ उत्पादन कार्यभार की बात आती है तो कोई एक आकार-फिट-सभी समाधान नहीं होता है। यदि आपके आवेदन को तत्काल एकरूपता की आवश्यकता है, तो सुनिश्चित करें कि पढ़ने और लिखने दोनों को क्लस्टर समापन बिंदु पर भेजा जाता है . जब रीड क्वेश्चन थोड़ा रेप्लिकेशन लैग को हैंडल कर सकते हैं, तो रीड क्वेश्चन को रीडर एंडपॉइंट पर ऑफलोड करें .यदि आप रीड रेप्लिकास का उपयोग कर सकते हैं लेकिन आपके प्रश्न सभी क्लाइंट में समान रूप से वितरित नहीं हैं, तो इंस्टेंस एंडपॉइंट्स का उपयोग करें और क्लाइंट साइड पर कनेक्शनों के वितरण का प्रबंधन करें। बस यह न भूलें, यदि आपका एप्लिकेशन डीएनएस रिकॉर्ड टीटीएल से अधिक समय तक कैश टाइमआउट के साथ डीएनएस कैशिंग का उपयोग करता है, तो एंडपॉइंट क्लस्टर एंडपॉइंट के दौरान अपेक्षित व्यवहार नहीं करते हैं। HA फेलओवर या रीडर एंडपॉइंट . का उपयोग करते समय ।
आपके आवेदन की प्रकृति को समझना, औरोरा एंडपॉइंट कैसे व्यवहार करते हैं, और उस ज्ञान को सही ढंग से लागू करने से एक अधिक मजबूत एप्लिकेशन वातावरण बन जाएगा, जो आपके और आपके ग्राहकों के लिए बहुत महत्वपूर्ण है। आधी रात को कोई भी आउटेज कॉल नहीं चाहता।
कोई टिप्पणी करने या प्रश्न पूछने के लिए प्रतिक्रिया टैब का उपयोग करें।