buffering की जगह backpressure लगाएं। हर queue को सीमित रखें, concurrency की हद पार होते ही 429 या 503 के साथ जल्दी load shed करें, और जिन requests की deadline पहले ही निकल चुकी है उन पर काम करने की जगह उन्हें ठुकरा दें। बिना सीमा वाली queues overload को latency के ढहने में बदल देती हैं, क्योंकि हर request ऐसे काम के पीछे खड़ी रहती है जिसका अब कोई इंतज़ार नहीं कर रहा। अगर कुछ ट्रैफ़िक ज़्यादा अहम है तो tier के हिसाब से प्राथमिकता दें, और ऐसे संकेत पर autoscale करें जो आगे चलता हो, जैसे queue depth।
इंटरव्यूअर यह क्यों पूछते हैं
यह उन लोगों को अलग कर देता है जो overload के दौरान on call रहे हैं और जो नहीं। इंटरव्यूअर सुनना चाहते हैं कि queue कोई मुफ्त क्षमता नहीं है, load shed करना एक जायज़ डिज़ाइन फैसला है, और बासी काम गिरा देने से throughput वापस आता है। यह भी टटोलता है कि आपको कतार की समझ है या नहीं: saturation के बाद latency बढ़ती जाती है जबकि काम का throughput ज़रा भी नहीं बढ़ता।
अपना जवाब कैसे स्ट्रक्चर करें
- समझाएं कि buffering overload को बेहतर नहीं, बदतर करता है।
- queues सीमित करें और साफ status code के साथ load shed करें।
- जिस काम की deadline बीत चुकी है, उसे गिरा दें।
- प्राथमिकता और ऐसा scaling संकेत जोड़ें जो समय रहते हरकत करे।
उदाहरण जवाब
पहला मन तो बड़ा queue लगाने का करता है, लेकिन इससे overload बस धीमी नाकामी में बदल जाता है, क्योंकि हर request एक backlog के पीछे बैठ जाती है और जब तक उसका नंबर आता है क्लाइंट हार मान चुका होता है। इसलिए सबसे पहले मैं queue सीमित करता हूं और concurrency limit लगाता हूं, और भर जाने पर तुरंत retry after के साथ 503 लौटाता हूं। जल्दी मना कर देना धीरे धीरे timeout होने से बेहतर है, यूज़र के लिए भी और सिस्टम के लिए भी। दूसरा, काम शुरू करने से पहले मैं deadline जांचता हूं: अगर request अपने बजट से ज़्यादा इंतज़ार कर चुकी है तो मैं उसे गिरा देता हूं, जिससे उन requests के लिए क्षमता बचती है जो अब भी सफल हो सकती हैं। किसी घटना के दौरान throughput को दिखने लायक वापस लाने वाला यही एक बदलाव होता है। फिर प्राथमिकता, क्योंकि सारा ट्रैफ़िक बराबर नहीं होता; एक सिस्टम में हमने पहले background sync ट्रैफ़िक shed किया और interactive requests चलती रहने दीं। और मैं औसत CPU की जगह queue depth या concurrency पर scale करता हूं, क्योंकि saturation के पास CPU सपाट हो जाता है और इतनी देर से हरकत करता है कि किसी काम का नहीं रहता।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- concurrency limit आप अंदाज़े से नहीं, तो कैसे चुनेंगे?
- यहां load shedding और rate limiting में क्या फर्क है?
- shed की गई requests एक साथ retry न कर बैठें, यह आप कैसे पक्का करते हैं?
बैकएंड डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें