SkillByAIइंटरैक्टिव संस्करण खोलें →

पाठ 27 / 32

रेट लिमिटर डिज़ाइन करें

Token buckets, Redis counters और उपयोगी rate-limit response headers के साथ distributed rate limiter design करें।

टोकन बकेट

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

वितरित स्टेट

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

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

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

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

  • टोकन बकेट
  • फ़िक्स्ड विंडो काउंटर
  • लीकी बकेट (क्यू के रूप में)
  • बिना cap का sliding window log
Answer

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