प्रतिनिधि इंटरव्यू विषय

सिस्टम डिज़ाइन इंटरव्यू: एक मल्टी-रीजन फ़ेलओवर कोऑर्डिनेटर (Multi-Region Failover Coordinator) डिज़ाइन करें

सिस्टम डिज़ाइनकठिन
Offer.cc संपादकीय टीमप्रकाशित अपडेट किया गया

प्रश्न

एक ऐसे कोऑर्डिनेटर को डिज़ाइन करें जो आउटेज के दौरान ट्रैफ़िक को स्टैंडबाय रीजन में शिफ़्ट करे और सुरक्षित फ़ेलबैक का समर्थन करे।

प्रश्न और यह कब लागू होता है

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

AWS ARC रूटिंग कंट्रोल्स को विश्वसनीय डेटा-प्लेन स्विच के रूप में वर्णित करता है और इस बात पर ज़ोर देता है कि आपदा के दौरान फ़ेलओवर मैकेनिज्म को काम करना चाहिए। Kubernetes रेप्लिकस, टोपोलॉजी स्प्रेड और डिस्रप्शन बजट पर प्रकाश डालता है। Amazon के सॉफ़्टवेयर इंटरव्यू विषय सिस्टम की समस्याओं को हल करने के लिए ज्ञान को लागू करने पर ज़ोर देते हैं।

यह मल्टी-रीजन API गेटवे डिज़ाइन करने से अलग है: यहाँ मुख्य ध्यान निर्णय और रिकवरी वर्कफ़्लो पर है, जिसमें फ़ॉल्स पॉज़िटिव्स, स्प्लिट ब्रेन, डेटा कैच-अप और फ़ेलबैक शामिल हैं।

इंटरव्यूअर्स क्या आंकते हैं

वे मल्टी-सिग्नल हेल्थ, रेजिलिएंट रूटिंग कंट्रोल्स, स्पष्ट RTO/RPO और रेप्लिकेशन, समवर्ती (concurrent) निर्णयों के विरुद्ध फेंसिंग, ऑडिटेबिलिटी, ड्रिल्स और एक मापने योग्य फ़ेलबैक योजना की तलाश करते हैं।

उत्तर देने से पहले स्पष्ट करने योग्य प्रश्न

  • RTO, RPO, उपलब्धता और मानवीय हस्तक्षेप के लक्ष्य क्या हैं?
  • क्या विफलता रीजनल रीचेबिलिटी, किसी डिपेंडेंसी, लेटेंसी, परिनियोजन (deployment) या डेटा करप्शन की है?
  • क्या स्टैंडबाय हॉट, वॉर्म या कोल्ड है?
  • कौन सा डेटा रेप्लिकेट किया जाता है और किन राइट्स (writes) को अस्वीकार किया जा सकता है?
  • DNS, गेटवे, Anycast या क्लाइंट्स नई रूटिंग कैसे प्राप्त करते हैं?
  • यदि ऑटोमेशन विफल हो जाता है तो कौन कमान संभाल सकता है?
  • डुअल राइटिंग को कैसे रोका जाता है?
  • फ़ेलबैक के लिए कौन सी हेल्थ और कैच-अप स्थितियां अनिवार्य हैं?
  • क्या स्कोप किसी एक क्लाउड के लिए है या एक एब्स्ट्रैक्ट डिज़ाइन है?

30-सेकंड उत्तर ढांचा

"मैं सबसे पहले RTO, RPO और स्टैंडबाय की तत्परता को परिभाषित करता हूँ। प्रत्येक रीजन अपना डेटा प्लेन चलाता है; कोऑर्डिनेटर केवल मान्य रूटिंग स्थिति प्रकाशित करता है। हेल्थ व्यावसायिक जांच (business probes), डिपेंडेंसीज़, कैपेसिटी और कोरम-जैसे सिग्नल्स और डैम्पनिंग के साथ रेप्लिकेशन लैग को जोड़ती है। स्विच करने से पहले, मैं राइट्स को फेंस या डिग्रेड करता हूँ, स्टैंडबाय डेटा थ्रेशोल्ड को सत्यापित करता हूँ और अत्यधिक उपलब्ध रूटिंग कंट्रोल का उपयोग करता हूँ। प्रत्येक स्थिति परिवर्तन ऑडिट योग्य और प्रतिवर्ती (reversible) होता है। फ़ेलबैक हेल्थ और डेटा कैच-अप की प्रतीक्षा करता है, फिर एक छोटे ट्रैफ़िक स्लाइस से शुरू होता है।"

विस्तृत उत्तर, चरण-दर-चरण

चरण 1: विफलता मॉडल और लक्ष्य परिभाषित करें

ज़ोन हानि, रीजनल पार्टीशन, डिपेंडेंसी विफलता, खराब डिप्लॉयमेंट और डेटा करप्शन को अलग करें। RTO/RPO को स्टैंडबाय लागत, रेप्लिकेशन और ऑटोमेशन से मैप करें।

चरण 2: कंट्रोल और डेटा प्लेन को अलग करें

डेटा प्लेन अनुरोधों को प्रोसेस करता है और रूटिंग निष्पादित करता है। कंट्रोल प्लेन सिफारिशों, मंज़ूरी और रिकॉर्ड्स की गणना करता है। फ़ेलओवर निष्पादन अनुपलब्ध कंट्रोल प्लेन पर निर्भर नहीं होना चाहिए।

चरण 3: हेल्थ निर्णय तैयार करें

व्यावसायिक सफलता, डिपेंडेंसीज़, लेटेंसी, रेप्लिकेशन लैग, कैपेसिटी और ऑपरेटर सिग्नल्स को मिलाएं। एक विफल जांच कैंडिडेट स्थिति बनाती है; निरंतर बनी रहने वाली थ्रेशोल्ड वर्कफ़्लो को आगे बढ़ाती है।

चरण 4: एक सुरक्षित स्विच निष्पादित करें

तैयार (ready), उम्मीदवार (candidate), स्वीकृत (approved), स्विचिंग (switching), स्थिर (stable) और फ़ेलबैक (failback) जैसी स्थितियों का उपयोग करें। लीज़ या फेंसिंग वर्ज़न समवर्ती ऑपरेशन्स को रोकते हैं। राइट फेंसिंग, अधिकतम स्विच समय और स्टॉप एक्शन्स को परिभाषित करें।

चरणमुख्य जांचविफलता पर कार्रवाई
Readyस्टैंडबाय और रेप्लिकेशन थ्रेशोल्डस्विच को ब्लॉक करें
Candidateनिरंतर मल्टी-सिग्नल विफलतानिरीक्षण करें या मंज़ूरी दें
Switchingरूटिंग, त्रुटियाँ और कैपेसिटीरोकें (pause) या वापस लौटें (revert)
Stableव्यावसायिक रिकवरी और एकल राइटरपूरा करें
Failbackप्राइमरी की हेल्थ और कैच-अपस्टैंडबाय को सक्रिय रखें

चरण 5: कंसिस्टेंसी और स्प्लिट ब्रेन को संभालें

एकल राइटर, ग्लोबल सीक्वेंसिंग या कॉन्फ़्लिक्ट रिज़ॉल्यूशन चुनें। पार्टीशन के दौरान, दोनों रीजनों में ऐसे राइट्स को स्वीकार करने के बजाय जो मर्ज नहीं हो सकते, असुरक्षित राइट्स को अस्वीकार करें। कटओवर पॉइंट और डेटा अंतर (gap) को रिकॉर्ड करें।

चरण 6: रूट्स का प्रसार करें और कैपेसिटी की रक्षा करें

DNS, गेटवे या एज प्रोपेगेशन की व्याख्या करें, जिसमें TTL, कैशे और क्लाइंट पुनः प्रयास शामिल हैं। स्टैंडबाय कैपेसिटी को वॉर्म करें और थ्रॉटलिंग व डिग्रेडेड मोड्स को परिभाषित करें।

चरण 7: निरीक्षण, ऑडिट और हैंडओवर करें

हेल्थ साक्ष्य, नियम वर्ज़न, ऑपरेटर, स्थिति संक्रमण और रूट परिणाम रिकॉर्ड करें। स्विच समय, त्रुटियों, लैग, कैपेसिटी और डुअल-राइट संकेतों पर अलर्ट जारी करें। मैन्युअल कार्रवाइयां अधिकृत और आइडेम्पोटेंट होनी चाहिए।

चरण 8: ड्रिल करें और सुरक्षित रूप से फ़ेलबैक करें

विफलताएं इंजेक्ट करें और चरणबद्ध ट्रैफ़िक का परीक्षण करें। फ़ेलबैक से पहले, प्राइमरी की हेल्थ, डेटा कैच-अप, डिपेंडेंसी स्थिरता और कैपेसिटी को सत्यापित करें। पहले एक छोटा प्रतिशत शिफ़्ट करें और त्वरित रिवर्ट विकल्प बनाए रखें।

उच्च गुणवत्ता वाला नमूना उत्तर

"मैं एकल राइटर, पांच मिनट के RTO और तीस सेकंड के RPO के साथ दो रीजन डिज़ाइन करूँगा। दोनों रीजनों में एक पूर्ण डेटा प्लेन होता है; स्टैंडबाय वॉर्म कैशे और कैपेसिटी बनाए रखता है।

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

ऑडिट साक्ष्य, नियम, मंज़ूरी और रूट परिणामों को स्टोर करते हैं। मासिक ड्रिल्स DNS कैशिंग, क्लाइंट पुनः प्रयास और स्टैंडबाय कैपेसिटी का परीक्षण करती हैं। फ़ेलबैक कैच-अप की प्रतीक्षा करता है, पहले पांच प्रतिशत शिफ़्ट करता है, और यदि डुअल राइट्स या लेटेंसी दिखाई देती है तो रुक जाता है।"

सामान्य गलतियां

  • निर्णयकर्ता के बिना दो रीजन दिखाना।
  • किसी एकल पिंग या इंफ्रास्ट्रक्चर मेट्रिक को व्यावसायिक हेल्थ के रूप में उपयोग करना।
  • फेंसिंग, डैम्पनिंग, मंज़ूरी या रिवर्ट के बिना ऑटोमेशन करना।
  • TTL, कैशे और क्लाइंट पुनः प्रयासों को नज़रअंदाज़ करना।
  • कॉन्फ़्लिक्ट हैंडलिंग के बिना डुअल राइट्स की अनुमति देना।
  • स्टैंडबाय वॉर्म-अप और कैपेसिटी को भूल जाना।
  • फ़ेलओवर पर चर्चा करना लेकिन फ़ेलबैक या ड्रिल्स पर नहीं।
  • रेप्लिकेशन और लागत से मैप किए बिना RTO/RPO बताना।

फॉलो-अप्स और उनके उत्तर कैसे दें

फॉलो-अप 1: आप फ़ॉल्स पॉज़िटिव्स को कैसे संभालते हैं?

मल्टीपल सिग्नल्स, निरंतर विंडो और डैम्पनिंग का उपयोग करें। कम-विश्वास वाली विफलता के लिए स्विच करने से पहले निरीक्षण या डिग्रेड करना चाहिए।

फॉलो-अप 2: क्या होगा यदि कंट्रोल प्लेन डाउन हो जाए?

निष्पादन स्विच और आवश्यक रीड्स को अत्यधिक उपलब्ध डेटा प्लेन पर रखें, सुरक्षित स्थिति को पहले से वितरित करें, और ऑडिट किए गए मैन्युअल ऑपरेशन्स को सीमित करें।

फॉलो-अप 3: क्या होगा यदि दोनों रीजन प्राइमरी बन जाएं?

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

फॉलो-अप 4: क्या होगा यदि स्टैंडबाय कैपेसिटी अपर्याप्त हो?

कैपेसिटी रिज़र्व करें, डिग्रेडेशन और थ्रॉटलिंग का उपयोग करें, और पूर्ण लोड को प्रोसेस न कर पाने पर केवल महत्वपूर्ण ट्रैफ़िक स्वीकार करें।

फॉलो-अप 5: सब कुछ स्वचालित क्यों नहीं करते?

प्रतिवर्ती (reversible), उच्च-विश्वास वाली विफलताओं को स्वचालित करें। करप्शन, स्प्लिट ब्रेन और कम-विश्वास वाली घटनाओं के लिए मानवीय पुष्टि की आवश्यकता रखें।

फॉलो-अप 6: आप कैसे साबित करते हैं कि ड्रिल्स काम करती हैं?

डिटेक्शन-टू-रिकवरी समय, RPO, त्रुटियों, कैपेसिटी, मैन्युअल चरणों और रिवर्ट परिणामों को ट्रैक करें; कमियों को स्वामित्व वाले सुधारों में बदलें।

सार्वजनिक स्रोत

संबंधित प्रश्न

संबंधित इंटरव्यू टूल

सिस्टम डिज़ाइन उत्तर के लिए हल करें का उपयोग करें

पहले आवश्यकताओं को स्पष्ट करें, फिर स्केल, आर्किटेक्चर, कंपोनेंट चयन और ट्रेड-ऑफ की ओर बढ़ें।

टूल देखें