दर सीमा और कोटा
साझा संसाधनों की मांग को प्रबंधित करने की दर सीमा और कोटा मौलिक यांत्रिकी हैं: सीपीयू, नेटवर्क, डेटाबेस, कतारें, बाहरी एपीआई। लक्ष्य निष्पक्षता, एसएलओ की भविष्यवाणी और प्रकोप, दुर्व्यवहार और "शोर पड़ोसी" से सुरक्षा है।
1) बुनियादी अवधारणाएं
दर सीमा - अनुरोधों/संक्रियाओं (req/s, msg/min, बाइट्स/sec) की तीव्रता को सीमित करें।
फट - औसत दर से अधिक अनुमेय अल्पकालिक फट।
कोटा - आयतन सीमा प्रति समय विंडो (दस्तावेज/दिन, जीबी/माह)।
समवर्ती टोपी - एक साथ संचालन का प्रतिबंध (एक साथ अनुरोध/कार्य)।
स्कोप - गुंजाइश: प्रति-किरायेदार, प्रति-उपयोगकर्ता, प्रति-टोकन, प्रति-समापन बिंदु, प्रति-आईपी, प्रति-क्षेत्र, प्रति-सुविधा।
2) एल्गोरिदम को सीमित करना
2. 1 टोकन बाल्टी
पैरामीटर: 'दर' (टोकन/सेकंड), 'फट' (बाल्टी का आकार)।
"क्रेडिट" की तरह काम करता है: संचित टोकन छोटी चोटियों की अनुमति देते हैं।
बाहरी एपीआई और उपयोक्ता निवेदन के लिए उपयुक्त।
2. 2 लीकी बाल्टी
निरंतर गति से प्रवाह को सुचारू रूप से "रक्तस्राव" करता है।
संवेदनशील बैकेंड के लिए यातायात को सुचारू करने के लिए अच
2. 3 फिक्स्ड/स्लाइडिंग विंडो
फिक्स्ड विंडो: "विंडो स्विचिंग" के लिए सरल लेकिन कमजोर।
स्लाइडिंग विंडो: अधिक सटीक, लेकिन अधिक महंगी कम्प्यूटेशनल रूप से।
2. 4 जीसीआरए (जेनेरिक सेल रेट एल्गोरिथ्म)
आभासी आगमन समय के संदर्भ में टोकन बाल्टी के बराबर।
वितरित सीमाओं (कम परस्पर विरोधी अवस्था) के लिए सटीक और स्थिर।
2. 5 संगामिति सीमाएँ
समवर्ती संचालन को सीमित करना।
धागे/कनेक्शन पूल की कमी और हेड-ऑफ-लाइन अवरोधन के खिलाफ सुरक्षा।
3) सीमा कहां लागू करें
सीमा पर (L7/API गेटवे): मुख्य अवरोध, त्वरित विफलता (429/503), सस्ते चेक।
अंदर की सेवाएं: भारी संचालन (निर्यात, रिपोर्ट, परिवर्तन) के लिए अतिरिक्त कैप।
बाहरी प्रणालियों से बाहर निकलने पर: तीसरे पक्ष (दंड-विरोधी) के लिए व्यक्ति
कतारों/श्रमिकों पर: साझा पूल के लिए निष्पक्षता।
4) स्कोप और प्राथमिकताएं (बहु-किरायेदार)
Иерархия: वैश्विक → क्षेत्र → किरायेदार/योजना → उपयोगकर्ता/टोकन → एंडपॉइंट/फीचर → आईपी/डिवाइस।
प्राथमिकता-जागरूक: वीआईपी/एंटरप्राइज को अधिक 'फट' और वजन मिलता है, लेकिन समग्र एसएलओ को न तोड़ें।
सीमित रचना: कुल सहिष्णुता = 'मिनट (वैश्विक, क्षेत्रीय, किरायेदार, उपयोगकर्ता, समापन बिंदु)'।
5) वॉल्यूम कोटा
दैनिक/मासिक कोटा: दस्तावेज/दिन, जीबी/माह, संदेश/मिनट।
नरम/कठोर थ्रेसहोल्ड: चेतावनी (80/90%) और हार्ड स्टॉप।
रोल-अप: बिलिंग के लिए वस्तुओं (तालिकाओं, फ़ाइलों, घटनाओं) और "वापसी" द्वारा लेखांकन।
6) वितरित लिमिटर
आवश्यकताएं: कम विलंबता, स्थिरता, गलती सहिष्णुता, क्षैतिज स्केलिंग।
स्थानीय + संभाव्य सिंक: स्थानीय शार्ड बाल्टी + आवधिक तुल्यकालन।
केंद्रीय स्टोर: Redis/KeyDB/Memcacted с LUA/परमाणु ऑप्स (INCR/PEXPIRE)।
शार्डिंग: फॉर्म की कुंजियाँ 'सीमा: {scope}: {id}: {window}' एक समान वितरण के साथ.
घड़ी तिरछा: सीमित सर्वर पर "सत्य" स्टोर करें, ग्राहकों पर नहीं।
Idempotency: Idempotency-Keys झूठे आरोपों को कम करते हैं।
7) दुरुपयोग और सुरक्षा
सार्वजनिक समापन बिंदुओं के लिए प्रति-आईपी + डिवाइस फिंगरप्रिंट।
विसंगतियों में प्रूफ-ऑफ-वर्क/CAPTCHA।
यूएक्स अधिक महत्वपूर्ण (खोज संकेत) होने पर पूर्ण विफलता के बजाय मंदी (थ्रॉटलिंग)।
अनुकूली सीमा: घटनाओं/महंगी गिरावट के लिए थ्रेसहोल्ड की गतिशील कमी।
8) ग्राहक व्यवहार और प्रोटोकॉल
कोड: '429 बहुत सारे अनुरोध' (दर), '403' (कोटा/योजना से अधिक), '503' (सुरक्षात्मक गिरावट)।
सर्वश्रेष्ठ अभ्यास
'पुनः प्रयास करें: <सेकंड या HTTP-Date>' - जब फिर से कोशिश करें.
'रेटलिमिट-' परिवार (IETF):- 'रेटलिमिट- लिमिट: <सीमा>; w =
' - 'रेटलिमिट- शेष:
' - 'रेटलिमिट- रीसेट: <सेकंड>'
- बैकऑफ: घातीय + जिटर (पूर्ण जिटर, समान जिटर)।
- Idempotency: 'Idempotency-Key' हेडर और सुरक्षित संचालन की पुनरावृत्ति।
- टाइमआउट और रद्द: निलंबित अनुरोधों को सही ढंग से बाधित करें ताकि "कैप्चर" सीमा न हो।
9) अवलोकन और परीक्षण
Теги: 'किरायेदार _ आईडी', 'प्लान', 'उपयोगकर्ता _ आईडी', 'समापन बिंदु', 'क्षेत्र', 'निर्णय' (अनुमति/इनकार), 'कारण' (कोटा/दर/संगोष्ठी)।
मेट्रिक्स: थ्रूपुट, 429/403/503 विफलता दर, p95/p99 लिमिटर देरी, कुंजी कैश हिट अनुपात, योजना आवंटन।
ऑडिट लॉग: ब्लॉक के कारण, शीर्ष "शोर" कुंजी।
परीक्षण: लोड प्रोफाइल "देखा/फटा/पठार", अराजकता - रेडिस/शार्ड विफलता, घड़ी desynchronization।
10) बिलिंग के साथ एकीकरण
उपयोग काउंटर सीमा पर एकत्र किए जाते हैं, बैचों (हर एन मिनट) द्वारा पहचान के साथ एकत्र किए जाते हैं।
योजना का सारांश: ओवरचार्ज या अस्थायी रूप से योजना को बढ़ाना।
विसंगतियाँ: सामंजस्य उपयोग बनाम चालान; डेल्टा के लिए अलर्ट।
11) अंदर निष्पक्षता (कतारें, श्रमिक)
भारित मेला कतारबद्ध/डीआरआर: योजना वजन द्वारा किरायेदारों को स्लॉट आवंटित करना।
प्रति-किरायेदार कार्यकर्ता पूल: वीआईपी/शोर का कठोर अलगाव।
प्रवेश नियंत्रण: कोटा समाप्त होने पर निष्पादन से पहले विफलता; कतारें नहीं सूजती हैं।
संगामिति पर कैप्स: समवर्ती भारी जाब्स को सीमित करें।
12) विशिष्ट योजना प्रोफाइल (उदाहरण)
yaml plans:
starter:
rate: 50 # req/s burst: 100 concurrency: 20 quotas:
daily_requests: 100_000 monthly_gb_egress: 50 business:
rate: 200 burst: 400 concurrency: 100 quotas:
daily_requests: 1_000_000 monthly_gb_egress: 500 enterprise:
rate: 1000 burst: 2000 concurrency: 500 quotas:
daily_requests: 10_000_000 monthly_gb_egress: 5000
13) वास्तुशिल्प संदर्भ (मौखिक योजना)
1. एज/एपीआई प्रवेश द्वार: टीएलएस → एक्सट्रैक्ट संदर्भ (किरायेदार/योजना) → जांच सीमा/कोटा → जगह रेटलिमिट हेडर → लॉग/ट्रेस।
2. नीति इंजन: प्राथमिकता नियम (वीआईपी), अनुकूली थ्रेसहोल्ड।
3. लिमिटर स्टोर: रेडिस/कीडीबी (परमाणु ऑप्स, एलयूए), प्रमुख शार्डिंग, प्रतिकृति।
4. सेवाएं: भारी संचालन के लिए माध्यमिक सीमा और कैप; पहचान; WFQ/DRR के साथ कतारें।
5. उपयोग/बिलिंग: संग्रह, एकत्रीकरण, चालान, थ्रेसहोल्ड द्वारा अलर्ट।
6. अवलोकन: टैग किए गए मैट्रिक्स/लॉग/ट्रेल्स, डैशबोर्ड प्रति-किरायेदार।
14) प्री-सेल चेकलिस्ट
- स्कोप (किरायेदार/उपयोगकर्ता/टोकन/समापन बिंदु/आईपी) और उनके पदानुक्रम को परिभाषित किया गया है।
- चयनित एल्गोरिथ्म (टोकन बकेट/जीसीआरए) और 'रेट/बर्स्ट' मापदंड।
- भारी संचालन के लिए संगामिति कैप और प्रवेश नियंत्रण लागू किया।
- 'रेटलिमिट-' और 'रेट्री-आफ्टर' हेडर शामिल हैं; ग्राहक बैकऑफ + जिटर का समर्थन करते हैं
- लिमिटर वितरित किया जाता है और दोष सहिष्णु (शार्क, प्रतिकृति, गिरावट)।
- उपयोग-संग्रह पहचान है; बिलिंग के साथ बंडल, ओवरस्पेंडिंग के लिए अलर्ट।
- अवलोकन: मेट्रिक्स/ट्रेल्स/टैग किए गए लॉग, शीर्ष "शोर" कुंजियाँ, परिवर्तन।
- टेस्ट: फटता है, "देखा", स्टोर विफलता, घड़ी तिरछा, ठंडी शुरुआत।
- ग्राहक प्रलेखन: योजना सीमा, 429/Retry-After उदाहरण, सर्वोत्तम प्रथाओं को वापस ले
- अपवर्जन नीति: अस्थायी रूप से सीमा कैसे बढ़ाएं और कब।
15) विशिष्ट त्रुटियां
प्रति-किरायेदार/प्रति-समापन बिंदु के बिना वैश्विक सीमा - "शोर पड़ोसी" सभी एसएलओ को तोड़ ता है।
'फट' की कमी: यूएक्स छोटे फटने में पीड़ित है।
केवल एक निश्चित खिड़की का उपयोग करना - "खिड़की की सीमा पर डबल हिट"।
जिटर के साथ कोई पहचान और पीछे हटना नहीं है - दोहराव का एक तूफान।
केवल सीमा पर, सेवाओं/कतारों में कैप के बिना - आंतरिक "ट्रैफिक जाम"।
प्रतिक्रियाओं में सीमाओं की गैर-अस्वीकृति (कोई 'रीट्री-आफ्टर', 'रेटलिमिट-') → क्लाइंट अनुकूलन नहीं करते हैं।
OLTP डेटाबेस में लिमिटर राज्य का भंडारण - उच्च विलंबता और गर्म ताले।
16) त्वरित रणनीति चयन
चोटियों के साथ सार्वजनिक एपीआई: टोकन बकेट + बड़े 'फट', रेटलिमिट - हेडर, सीडीएन/एज कैश।
आंतरिक भारी जाब: संगामिति कैप + WFQ/DRR, प्रवेश नियंत्रण।
तीसरे पक्ष के साथ एकीकरण: अलग निकास सीमा, बफरिंग/रिट्रे।
SaaS मल्टी-किरायेदार: सीमा पदानुक्रम (global→tenant→user→endpoint), वीआईपी प्राथमिकता, मासिक कोटा।
निष्कर्ष
अच्छी दर सीमा और कोटा मंच और ग्राहक के बीच एक सिस्टम अनुबंध है: संसाधनों का एक ईमानदार हिस्सा, स्पाइक्स का प्रतिरोध, अनुमानित एसएलओ और पारदर्शी बिलिंग। एल्गोरिदम (टोकन/जीसीआरए + संगति कैप) को मिलाएं, ओस्प्रे के पदानुक्रम को लागू करें, स्पष्ट हेडर और मैट्रिक दें, और वास्तविक ट्रैफिक प्रोफाइल के तहत योजनाओं की नियमित रूप से जांच करें - इस तरह से मंच आक्राहत लोड विकाफी विकार रहेगा।