पाठ 27 / 32
रेट लिमिटर डिज़ाइन करें
एक क्लाइंट प्रति विंडो कितनी रिक्वेस्ट कर सकता है, इसकी सीमा।
टोकन बकेट
हर क्लाइंट के पास एक बकेट होती है जो निश्चित दर से एक सीमा तक भरती है। एक रिक्वेस्ट एक टोकन खर्च करती है; बकेट खाली हो तो 429 से अस्वीकार। यह छोटे बर्स्ट की अनुमति देता है।
वितरित स्टेट
कई API सर्वरों के साथ, काउंटर साझा होने चाहिए। उन्हें Redis में एटॉमिक इंक्रीमेंट और प्रति-की TTL के साथ रखें ताकि कोई भी सर्वर समान सीमा लागू करे।
क्लाइंट को बताएँ
X-RateLimit-Remaining और Retry-After हेडर लौटाएँ ताकि अच्छे क्लाइंट हथौड़े मारने के बजाय रुक जाएँ।
त्वरित जाँच: कौन-सा एल्गोरिद्म स्थिर दर से ऊपर एक छोटे बर्स्ट की स्वाभाविक अनुमति देता है?
- फ़िक्स्ड विंडो काउंटर
- टोकन बकेट
- लीकी बकेट (क्यू के रूप में)
Answer
टोकन बकेट — जमा टोकन क्लाइंट को एक साथ कई खर्च करने देते हैं, बकेट सीमा तक।