सीधे सादे retries ठीक उसी वक्त लोड कई गुना कर देते हैं जब सर्विस पहले ही जूझ रही होती है, और एक साथ चलने वाले क्लाइंट कदम मिलाकर लहरों में retry करते हैं। full jitter के साथ exponential backoff इस्तेमाल करें, कुल कोशिशों की सीमा बांधें, और सिर्फ idempotent ऑपरेशन को उन्हीं एरर पर retry करें जिन पर retry जायज है। क्लाइंट साइड retry budget जोड़ें ताकि retries ट्रैफिक का छोटा हिस्सा ही रहें, साथ में circuit breaker ताकि फेल होने की दर उछलने पर कॉल पूरी तरह रुक जाएं। स्टैक की हर परत पर अलग अलग retry कभी न करें।
इंटरव्यूअर यह क्यों पूछते हैं
retry storm छोटी सी खराबी को पूरे आउटेज में बदल देने के सबसे आम कारणों में से है, तो यह सवाल उन उम्मीदवारों को अलग करता है जिन्होंने असली cascading failure डिबग की है, उनसे जिन्होंने बस एक क्लाइंट लाइब्रेरी कॉन्फिगर की है। इंटरव्यूअर jitter, budget, idempotency और सबसे बढ़कर यह बात सुनना चाहते हैं कि परतों में लगे retries कोशिशें गुणा कर देते हैं।
अपना जवाब कैसे स्ट्रक्चर करें
- बढ़ोतरी समझाएं: खराबी के दौरान retries और लोड जोड़ते हैं।
- सिर्फ exponential backoff नहीं, jitter का खास तौर पर नाम लें।
- retries को idempotent ऑपरेशन और retry लायक स्टेटस कोड तक सीमित रखें।
- ऊपरी सीमा के तौर पर retry budget और circuit breaker जोड़ें।
- एक के अंदर एक परतों में retries के गुणा होने की चेतावनी दें।
उदाहरण जवाब
दिक्कत यह है कि retries सबसे बुरे पल में डाला गया अतिरिक्त लोड हैं। अगर कोई सर्विस 50% पर फेल हो रही है और हर क्लाइंट तीन बार retry करता है, तो आपने उस चीज पर आने वाला ट्रैफिक तिगुना कर दिया जो पहले ही क्षमता से ऊपर है, और उसे संभलने का मौका ही नहीं मिलता। सादा exponential backoff भी काफी नहीं है, क्योंकि आपके सारे क्लाइंट एक ही पल में फेल हुए थे, तो वे सब एक ही पल में जागते भी हैं। full jitter इसे ठीक कर देता है, यानी नींद शून्य और मौजूदा backoff सीमा के बीच कोई भी रैंडम वैल्यू होती है। इसके आगे मैं सिर्फ idempotent कॉल retry करूंगा, सिर्फ 503, 429 और कनेक्शन स्तर के एरर पर, 400 पर कभी नहीं, और मैं retry budget लागू करूंगा ताकि retries कुल रिक्वेस्ट के करीब 10% पर बंधे रहें। जिस चीज ने हमें काटा वह परतें थीं। SDK तीन बार retry करता था, mesh दो बार, और job runner फिर से, यानी एक तार्किक कॉल के लिए अठारह कोशिशें।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- full jitter और decorrelated jitter में क्या फर्क है?
- कौन से HTTP स्टेटस कोड retry करने के लिए सुरक्षित हैं और क्यों?
- service mesh के आर पार retries को गुणा होने से आप कैसे रोकेंगे?
साइट रिलायबिलिटी इंजीनियर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें