आवश्यकताओं: एक व्यावहारिक समाधान है जो क्लाउड या किसी भी प्रकार के वातावरण के लिए काम करता है जहां हार्डवेयर लोड बैलेन्सर, बीजीपी प्रोटोकॉल और उस सभी सामान तक कोई पहुंच नहीं है।
एक आवेदन की आय अनुरोध संख्या अज्ञात है, लेकिन बिना किसी भय के बढ़े हुए लोड की अपेक्षा को पूरा करने के लिए पर्याप्त होना चाहिए।
आइए लोड के समान प्रकृति के साथ एक एप्लिकेशन ढूंढें, उदाहरण के लिए लॉगिंग स्टोर और खोज ऐप। मैंने एक पाया ।
वो क्या चाहते हैं:
- कलेक्टरों में लोड को संतुलित करें
- दोष सहिष्णुता की पेशकश करें, अगर कलेक्टरों में से एक की मृत्यु हो रही है या समस्याओं का सामना कर रहा है, तो हमें डेटा अंतर्ग्रहण जारी रखने की अनुमति देगा
- हमारे लॉग वॉल्यूम में वृद्धि के साथ क्षैतिज रूप से स्केल करें
उन्होंने ELB के बारे में क्या कोशिश की और सीखा:
- अपेक्षा के अनुरूप काम नहीं करता है
- भार बढ़ने के कारण विलंबता समस्या
- पर्याप्त निगरानी की सुविधा नहीं
- बहुत अधिक सीमा (खुले बंदरगाह और प्रोटोकॉल संख्या)
उन्होंने रूट 53 के साथ क्यों चुना:
- "राउंड रॉबिन काफी बुनियादी भार संतुलन है, लेकिन यह हमारे लिए एक दक्षता के दृष्टिकोण से अच्छा काम करता है"
- "हम रूट 53 विफलता स्वास्थ्य जांच का लाभ उठाते हैं।"
- "अगर कोई कलेक्टर के साथ कोई समस्या है, तो रूट 53 स्वचालित रूप से इसे सेवा से बाहर कर देता है; हमारे ग्राहकों को कोई प्रभाव नहीं दिखेगा।"
- रूट 53 के साथ कोई पूर्व-वार्मअप आवश्यक नहीं है
रूट 53 ने हमारे उच्च प्रदर्शन वाले संग्राहकों को हमारे विशाल लॉग वॉल्यूम, अप्रत्याशित बदलाव और हमारे व्यवसाय में निरंतर वृद्धि को देखते हुए लॉगजी के लिए सबसे अच्छा तरीका बताया। यह कलेक्टरों के मुख्य उद्देश्यों के साथ संरेखित करता है: शून्य हानि के साथ नेटवर्क लाइन गति पर डेटा एकत्र करने के लिए, और यह हमें लॉग इन करने वाले सभी एडब्ल्यूएस सेवाओं के लोच से लाभ उठाने की अनुमति देता है।
उस विशेष उदाहरण से पता चलता है कि कुछ परिदृश्यों में (लॉग कलेक्टर, विज्ञापन सेवा या समान) लोड बैलेंसर निरर्थक है और "DNS स्वास्थ्य-चेक राउंड रॉबिन समाधान" अपना काम बहुत अच्छी तरह से करता है।
आइए देखते हैं कि AWS ने डीएनएस फेलओवर को क्या कहा :
डीएनएस फेलओवर के साथ, रूट 53 आपकी वेबसाइट के एक आउटेज का पता लगा सकता है और आपके अंतिम उपयोगकर्ताओं को आपके द्वारा निर्दिष्ट वैकल्पिक या वैकल्पिक स्थानों पर पुनर्निर्देशित कर सकता है। रूट 53 डीएनएस फेलओवर स्वास्थ्य जांच पर निर्भर करता है-नियमित रूप से आपके अनुप्रयोगों के लिए इंटरनेट अनुरोधों को दुनिया भर के कई स्थानों से समापन बिंदुओं पर निर्धारित करता है-यह निर्धारित करने के लिए कि आपके आवेदन का प्रत्येक समापन बिंदु ऊपर है या नीचे है।
यह तकनीक ईएलबी (जरूरी नहीं है, सिर्फ एक नोट के लिए) को और अधिक मजबूत बनाती है, फिर से यह आरआर + हेल्थ चेक के साथ आधारित है:
मार्ग 53 डीएनएस फेलओवर इन विफलता परिदृश्यों को पर्दे के पीछे ईएलबी के साथ एकीकृत करके संभालता है। एक बार सक्षम होने के बाद, रूट 53 स्वचालित रूप से व्यक्तिगत ईएलबी नोड्स के लिए स्वास्थ्य जांच को कॉन्फ़िगर और प्रबंधित करता है।
आइए अब देखें कि यह दृश्य के पीछे कैसे काम करता है । स्पष्ट सवाल यह है कि DNS कैशिंग से कैसे निपटें:
हालाँकि, DNS कैशिंग अभी भी यहां एक समस्या हो सकती है (हमारी पिछली पोस्ट (जहां "लंबी पूंछ" समस्या को कवर किया गया है) देखें यदि TTL आपके क्लाइंट और रूट 53 के बीच सभी परतों से सम्मानित नहीं है। आप तब "कैश बस्ट" तकनीक लागू कर सकते हैं: एक अद्वितीय डोमेन के लिए एक अनुरोध भेजें
("http://<unique-id>.<your-domain>")
और वाइल्डकार्ड संसाधन परिभाषित करें
Record "*.<your-domain>" to match it.
अल्गोलिया ने "क्लाइंट रिट्री स्ट्रैटेजी" पेश की, जो आपके क्लाइंट (आपके मामले में जेएस) को अच्छी तरह से काम कर सकती है:
हमने अपने एपीआई ग्राहकों में एक मूल रिट्री स्ट्रैटेजी को लागू करना समाप्त कर दिया। प्रत्येक एपीआई क्लाइंट को तीन अलग-अलग मशीनों तक पहुंचने में सक्षम होने के लिए विकसित किया गया था। तीन अलग DNS रिकॉर्ड प्रत्येक उपयोगकर्ता का प्रतिनिधित्व करते हैं: USERIDID-1.algolia.io, USERID-2.algolia.io औरUSERID-3.algolia.io। हमारा पहला कार्यान्वयन बेतरतीब ढंग से रिकॉर्ड में से एक का चयन करना था और फिर विफलता के मामले में एक अलग से पुन: प्रयास करना था।