पहले तय कीजिए कि सीमा किस चीज पर लगेगी, आम तौर पर IP नहीं बल्कि API key पर, फिर algorithm चुनिए: bursts की छूट देने के लिए token bucket, ज्यादा समान लागू करने के लिए sliding window। counters को Redis जैसे साझा store में रखिए ताकि हर इंस्टेंस एक ही बात माने, atomic increments और expiry के साथ। Retry After header और बची हुई quota के साथ 429 लौटाइए, और अगर limiter खुद उपलब्ध न हो तो fail open कीजिए ताकि वह आपके API को न गिरा दे।
इंटरव्यूअर यह क्यों पूछते हैं
यह एक छोटी, सीमित समस्या में सिस्टम की सोच जांचता है। इंटरव्यूअर चाहता है कि आप distributed state वाली दिक्कत का नाम लें, क्योंकि हर इंस्टेंस के अपने counters कोई global सीमा लागू नहीं करते, साथ में वजह के साथ algorithm का चुनाव, मना करने पर सही HTTP semantics, और यह operational समझ कि counter store गिर जाए तो क्या होगा। इससे यह भी पता चलता है कि आप सीमा में बंधे client के अनुभव के बारे में सोचते हैं या नहीं।
अपना जवाब कैसे स्ट्रक्चर करें
- key वाला आयाम चुनिए और उसकी वजह बताइए।
- एक algorithm चुनिए और बताइए कि उससे कैसा व्यवहार बनता है।
- समझाइए कि counters सारे instances में एक जैसे कैसे रहते हैं।
- response और खुद limiter के फेल होने का तरीका तय कीजिए।
उदाहरण जवाब
मैं इससे शुरू करता हूं कि सीमा किस हिसाब से लगेगी, और public API के लिए वह API key है, IP नहीं, क्योंकि एक ही NAT के पीछे बैठे कस्टमर एक दूसरे को बाहर नहीं कर देने चाहिए। फिर algorithm। token bucket मेरा डिफॉल्ट है, क्योंकि वह client को थोड़ा burst करने देता है, जो असली integrations के व्यवहार से मेल खाता है: वे जागते हैं, बीस requests भेजते हैं, फिर घंटे भर चुप रहते हैं। sliding window log ज्यादा सटीक है लेकिन हर key पर ज्यादा जगह लेता है। अहम बात यह है कि counter साझा होना चाहिए, क्योंकि अगर मेरे छहों इंस्टेंस अपना अपना count रखेंगे तो असली सीमा वह हो जाएगी जो मैंने बताई थी उससे छह गुना, तो Redis के साथ atomic increment और expiry, या जब चेक और decrement एक साथ चाहिए तो एक छोटी Lua स्क्रिप्ट। मना करते वक्त मैं 429 लौटाता हूं, headers में Retry After और बची हुई quota के साथ, क्योंकि जो client ठीक से पीछे हट सकता है वह मुझे पीटना बंद कर देता है। और मैं fail open करता हूं, क्योंकि जो limiter API को ही गिरा दे उसने उस दुरुपयोग से ज्यादा नुकसान किया जिसे वह रोक रहा था।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- किसी एक कस्टमर को कुछ वक्त के लिए ज्यादा सीमा आप कैसे देंगे?
- अगर सीमा edge पर लागू करनी हो तो क्या बदलेगा?
- महंगे endpoints पर आप अलग तरह से rate limit कैसे लगाएंगे?
सॉफ्टवेयर इंजीनियर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें