# रेट लिमिटर डिज़ाइन करें — सिस्टम डिज़ाइन

Source: https://www.geekswithgeeks.com/hi/system-design/sd-rate-limiter

> एक क्लाइंट प्रति विंडो कितनी रिक्वेस्ट कर सकता है, इसकी सीमा।

## टोकन बकेट

हर क्लाइंट के पास एक बकेट होती है जो निश्चित दर से एक सीमा तक भरती है। एक रिक्वेस्ट एक टोकन खर्च करती है; बकेट खाली हो तो 429 से अस्वीकार। यह छोटे बर्स्ट की अनुमति देता है।

## वितरित स्टेट

कई API सर्वरों के साथ, काउंटर साझा होने चाहिए। उन्हें Redis में एटॉमिक इंक्रीमेंट और प्रति-की TTL के साथ रखें ताकि कोई भी सर्वर समान सीमा लागू करे।

## क्लाइंट को बताएँ

`X-RateLimit-Remaining` और `Retry-After` हेडर लौटाएँ ताकि अच्छे क्लाइंट हथौड़े मारने के बजाय रुक जाएँ।

**Quiz:** कौन-सा एल्गोरिद्म स्थिर दर से ऊपर एक छोटे बर्स्ट की स्वाभाविक अनुमति देता है?

- [ ] फ़िक्स्ड विंडो काउंटर
- [x] टोकन बकेट
- [ ] लीकी बकेट (क्यू के रूप में)

*Answer:* टोकन बकेट. जमा टोकन क्लाइंट को एक साथ कई खर्च करने देते हैं, बकेट सीमा तक।
