दर-सीमा निर्धारण एल्गोरिदम
स्थिर, स्लाइडिंग, टोकन और समवर्ती सीमा-निर्धारकों की तुलना करें।
दर-सीमा निर्धारण एल्गोरिदम, CoddyKit पर C# अकादमी का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह C# अकादमी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C# अकादमी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
दर-सीमा क्यों लगाएँ
दर-सीमांकन यह सीमित करता है कि कोई क्लाइंट एक निश्चित समयावधि में कितने अनुरोध कर सकता है। यह आपकी एपीआई को दुरुपयोग, अनियंत्रित क्लाइंट और आकस्मिक ट्रैफ़िक उछाल से बचाता है और सभी उपयोगकर्ताओं के बीच क्षमता का उचित वितरण बनाए रखता है।
// e.g. allow 100 requests per minute per API keyअंतर्निहित दर-सीमांकन
.NET 7 से ASP.NET Core में Microsoft.AspNetCore.RateLimiting का प्रथम-श्रेणी दर-सीमांकन मिडलवेयर शामिल है, जिसमें चार अंतर्निहित एल्गोरिदम हैं।
// Algorithms: Fixed Window, Sliding Window,
// Token Bucket, Concurrencyनिश्चित अवधि
निश्चित अवधि एल्गोरिदम प्रत्येक निश्चित समय-खंड में N अनुरोधों की अनुमति देता है। खंड समाप्त होने पर काउंटर फिर से शून्य हो जाता है।
यह सरल है, लेकिन अवधि की सीमा पर आने वाले अचानक अनुरोध कुछ समय के लिए प्रभावी दर को दोगुना कर सकते हैं।
// 10 requests per 60s window
// All 10 used at 0:59, 10 more at 1:00 -> 20 in 2 secondsसरकती अवधि
सरकती अवधि अवधि को खंडों में बाँटकर और समाप्त हो चुके खंडों को आगे सरकाकर सीमा की समस्या को कम करती है, इसलिए सीमा किसी भी लगातार चलने वाली अवधि पर लागू होती है।
// 10 requests per 60s, 6 segments of 10s each
// The count slides as each segment expiresटोकन बकेट
टोकन बकेट में टोकनों का एक बकेट रखा जाता है। प्रत्येक अनुरोध एक टोकन खर्च करता है और टोकन एक स्थिर दर से फिर भरे जाते हैं। यह बकेट के आकार तक छोटे अचानक अनुरोधों की अनुमति देता है, साथ ही लंबे समय की औसत दर लागू रखता है।
// Bucket = 10 tokens, refill 5 tokens / 10s
// Burst of 10 allowed, then 5 every 10 secondsसमवर्ती अनुरोध सीमक
समवर्तीता सीमक अलग तरीके से काम करता है: यह समय की किसी इकाई में अनुरोधों की संख्या नहीं, बल्कि एक ही समय पर संसाधित किए जा रहे अनुरोधों की संख्या सीमित करता है। महँगे संचालनों की सुरक्षा के लिए यह आदर्श है।
// At most 5 concurrent requests in flight
// The 6th waits in the queue or is rejectedकतार
प्रत्येक सीमक सीमा से अधिक अनुरोधों को तुरंत अस्वीकार करने के बजाय कतार में रख सकता है। QueueLimit कतार का आकार तय करता है और QueueProcessingOrder निष्पक्षता तय करता है—सबसे पुराने या सबसे नए अनुरोध को पहले रखने की।
// QueueLimit = 2, OldestFirst
// Over-limit requests wait if a slot exists, else get 503/429एल्गोरिदम चुनना
एल्गोरिदम को अपने लक्ष्य के अनुसार चुनें:
- निश्चित अवधि: सबसे सरल, और कई मामलों के लिए पर्याप्त।
- सरकती अवधि: अधिक सुचारु, अवधि की सीमा पर अचानक आने वाले अनुरोधों से बचाती है।
- टोकन बकेट: नियंत्रित अचानक अनुरोधों की अनुमति देता है।
- समवर्तीता: एक साथ आने वाले भार को सीमित करती है, दर को नहीं।
// Bursty clients -> token bucket
// Expensive endpoint -> concurrencyविभाजन
सीमाएँ प्रत्येक विभाजन कुंजी पर लागू की जाती हैं—आमतौर पर उपयोगकर्ता, एपीआई कुंजी या IP—ताकि कोई एक शोर करने वाला क्लाइंट सभी की कोटा-सीमा समाप्त न कर सके। एक ही साझा विभाजन सभी ट्रैफ़िक को मिलाकर सीमित करेगा।
// Partition by user id, IP, or API key
// Each partition gets its own independent counterक्लाइंट को क्या दिखाई देता है
अस्वीकृत अनुरोध HTTP 429 बहुत अधिक अनुरोध लौटाता है। अच्छी तरह व्यवहार करने वाली एपीआई Retry-After हेडर भी लौटाती है, जो क्लाइंट को बताता है कि दोबारा कब प्रयास करना है।
// HTTP/1.1 429 Too Many Requests
// Retry-After: 30दर-सीमांकन, गति-नियंत्रण और कोटा में अंतर
ये संबंधित अवधारणाएँ हैं: दर-सीमांकन अल्पकालिक आवृत्ति को सीमित करता है, कोटा लंबी अवधि के कुल उपयोग को सीमित करता है, जैसे प्रति दिन या प्रति माह, और गति-नियंत्रण अनुरोधों को अस्वीकार करने के बजाय धीमा करता है। मिडलवेयर का ध्यान दर-सीमांकन पर है।
// rate limit: 100/min quota: 10000/dayत्वरित जाँच
एल्गोरिदम की अपनी समझ परखें।
पुनरावलोकन
आपने दर-सीमांकन की अवधारणाएँ सीखीं:
- चार एल्गोरिदम: निश्चित अवधि, सरकती अवधि, टोकन बकेट और समवर्तीता।
- टोकन बकेट अचानक आने वाले अनुरोधों की अनुमति देता है; समवर्तीता एक साथ आने वाले भार को सीमित करती है।
- सीमाएँ प्रत्येक विभाजन कुंजी पर लागू होती हैं; कतारें अतिरिक्त अनुरोधों को सुचारु रूप से संभालती हैं।
- अस्वीकृत अनुरोधों को 429 और
Retry-Afterप्राप्त होता है।
अगला विषय: मिडलवेयर को कॉन्फ़िगर करना।
एआई शिक्षक के साथ C# सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 93
- पाठ
- 346
अक्सर पूछे जाने वाले प्रश्न
क्या “दर-सीमा निर्धारण एल्गोरिदम” पाठ निःशुल्क है?
हाँ—“दर-सीमा निर्धारण एल्गोरिदम” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और C# अकादमी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। C# अकादमी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“दर-सीमा निर्धारण एल्गोरिदम” में मैं क्या सीखूँगा?
स्थिर, स्लाइडिंग, टोकन और समवर्ती सीमा-निर्धारकों की तुलना करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C# अकादमी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C# अकादमी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C# अकादमी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“दर-सीमा निर्धारण एल्गोरिदम” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C# अकादमी पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C# अकादमी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- दर-सीमा निर्धारण एल्गोरिदम
- दर-सीमा निर्धारण मिडलवेयर कॉन्फ़िगर करना
- आउटपुट कैशिंग की मूल बातें
- कैश नीतियाँ और अमान्यकरण