Rate limits жана квота
Rate limits жана квота - бул жалпы ресурстарга болгон суроо-талапты башкаруунун негизги механикасы: CPU, тармак, DD, кезек, тышкы API. Максат - адилеттүүлүк (fairness), SLO алдын ала билүү жана жарылуудан, кыянатчылыктан жана "noisy neighbor" коргоо.
1) Негизги түшүнүктөр
Rate limit - суроо-талаптардын/операциялардын интенсивдүүлүгүн чектөө (req/s, msg/min, байт/сек).
Burst - орточо rate үстүнөн жол берилген кыска мөөнөттүү секирик.
Quota - убакыт терезеси үчүн көлөмдүн чеги (документтер/сутка, ГБ/ай).
Concurrency cap - бир мезгилдеги операцияларды (бир мезгилдеги суроо-талаптарды/жоболорду) чектөө.
Scope - колдонуу чөйрөсү: per-tenant, per-user, per-token, per-endpoint, per-IP, per-аймак, per-feature.
2) Чектөө алгоритмдери
2. 1 Token Bucket (токендер менен чака)
Параметрлери: 'rate' (токендер/сек), 'burst' (чака өлчөмү).
"Кредит" катары иштейт: топтолгон токендер кыска чокуларга мүмкүндүк берет.
Тышкы API жана колдонуучу суроо үчүн ылайыктуу.
2. 2 Leaky Bucket (агып чака)
Акырындык менен туруктуу ылдамдык менен агымын "атып".
сезгич backend 'am үчүн трафикти тегиздөө үчүн жакшы.
2. 3 Fixed/Sliding Window
Fixed window: жөнөкөй, бирок аялуу "терезе которуу".
Sliding window: так, бирок эсептөө кымбат.
2. 4 GCRA (Generic Cell Rate Algorithm)
Виртуалдык келүү убактысы боюнча Token Bucket эквиваленти.
Бөлүштүрүлгөн лимитерлер үчүн так жана туруктуу (азыраак конфликттүү мамлекет).
2. 5 Concurrency Limits
Бир эле учурда аткарылуучу операцияларды чектөө.
көлмө агымдардын/байланыштар жана "head-of-line blocking" чарчоо коргойт.
3) Лимиттерди кайда колдонуу керек
Чек ара (L7/API-шлюз): негизги тоскоолдук, тез иштебей (429/503), арзан текшерүү.
Кызматтардын ичинде: оор операцияларга кошумча caps (экспорт, отчеттор, трансформациялар).
Тышкы системаларга чыгууда: үчүнчү жактар үчүн жекече лимиттер (anti-penalty).
кезектери/аткаруучулар боюнча: fairness жалпы пулга.
4) Сатып алуу жана артыкчылыктары (multi-tenant)
Иерархия: Global → Region → Tenant/Plan → User/Token → Endpoint/Feature → IP/Device.
Priority-aware: VIP/Enterprise көбүрөөк 'burst' жана салмагын алышат, бирок жалпы SLO сындырбайт.
Лимиттердин курамы: жыйынтыктоочу кабыл алуу = 'min (глобалдык, аймактык, тенант, колдонуучу, эндпойнт)'.
5) Көлөмү боюнча квоталар
Суткалык/айлык квоталар: документтер/сутка, ГБ/ай, билдирүүлөр/мин.
жумшак/катуу босоголор: эскертүү (80/90%) жана "катуу токтотуу".
Roll-up: объект боюнча эсепке алуу (таблицалар, файлдар, окуялар) жана биллингге "алып салуу".
6) Бөлүштүрүлгөн лимитерлер
Талаптар: төмөн кечигүү, ырааттуулук, ийгиликсиздикке туруктуулук, горизонталдуу масштабдоо.
Local + probabilistic sync: жергиликтүү шард чака + мезгил-мезгили менен синхрондоштуруу.
Central store: Redis/KeyDB/Memcached с LUA/atomic ops (INCR/PEXPIRE).
Sharding: түрдүн ачкычтары 'limit: {scope}: {id}: {window}' бирдей бөлүштүрүлгөн.
Clock skew: "чындыкты" кардарларда эмес, лимитердин серверинде сактоо.
Демпотенттүүлүк: "операциялардын" ачкычтары (Idempotency-Key) жалган эсептен чыгарууларды азайтат.
7) Анти-кыянаттык жана коргоо
Per-IP + түзмөк коомдук endpoints үчүн fingerprint.
Аномалияда Proof-of-Work/CAPTCHA.
Slowdown (throttling) ордуна UX маанилүү болгондо толугу менен баш тартуу (издөө куралдары).
Adaptive limits: окуя/кымбат деградация боюнча динамикалык босого төмөндөшү.
8) Кардардын жүрүм-туруму жана протокол
Коддору: '429 Too Many Requests' (rate), '403' (квота/план ашып кетти), '503' (коргоочу деградация).
Жооптордун аталыштары (best practice):- 'Retry-After:
' - кайра аракет качан.
- `RateLimit-Limit:
;w= ` - `RateLimit-Remaining:
` - `RateLimit-Reset:
` - Backoff: экспоненциалдуу + життер (full jitter, equal jitter).
- Демпотенттүүлүк: 'Idempotency-Key' аталышы жана коопсуз операциялардын кайталанышы.
- Тайм-ауттар жана жокко чыгаруу: лимиттерди "басып албоо" үчүн токтогон суроо-талаптарды туура үзгүлтүккө учуратуу.
9) Байкоо жана тестирлөө
Теги: `tenant_id`, `plan`, `user_id`, `endpoint`, `region`, `decision` (allow/deny), `reason` (quota/rate/concurrency).
Метрика: өткөрүү жөндөмдүүлүгү, 429/403/503 мүчүлүштүктөрүнүн үлүшү, p95/p99 кечигүү лимитери, hit ratio кэш ачкычтары, пландары боюнча бөлүштүрүү.
Аудит Логи: блоктордун себептери, жогорку "ызы-чуу" ачкычтар.
Тесттер: Жүктөө профилдери "араа/бурст/плато", башаламандык - Redis/Shard бузулушу, сааттарды синхрондоштуруу.
10) Биллинг менен интеграция
Usage-эсептегичтер чек чогулуп, демпотенттик менен батч (ар бир N мин) менен бириктирилген.
Пландар боюнча кыскача маалымат: ашыкча → оверчардж же пландын убактылуу жогорулашы.
айырмачылыктар: салыштыруу usage vs invoice; дельтага алерта.
11) ичиндеги Fairness (кезек, үйрөнчүктөр)
Weighted Fair Queuing/DRR: план салмагы боюнча ижарачылардын ортосунда уячаларды бөлүштүрүү.
Per-tenant worker pools: катуу изоляция VIP/ызы-чуу.
Admission control: квоталар түгөнүп калса, аткаруудан баш тартуу; кезек күткөн эмес.
concurrency боюнча Caps: бир эле учурда оор буктурмаларды чектөө.
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. Edge/API-шлюз: TLS → контекстти алуу (tenant/plan) → чектерди/квоталарды текшерүү → RateLimit- → лог/трейс аталыштарын жайгаштыруу.
2. Policy Engine: артыкчылык эрежелери (VIP), ылайыкташтырылган босоголор.
3. Limiter Store: Redis/KeyDB (atomic ops, LUA), ачкычтарды шардана, репликация.
4. Services: оор иш үчүн экинчилик чеги жана caps; демпотенттик; WFQ/DRR менен кезек.
5. Usage/Billing: жыйноо, топтоо, инвойс, босоголор боюнча алерта.
6. Observability: metrics/loi/тег менен соода, dashboard per-tenant.
14) Азык-түлүктүн алдындагы чек-тизме
- Аныкталган лимиттер Scopes (tenant/user/token/endpoint/IP) жана алардын иерархиясы.
- Тандалган алгоритм (Token Bucket/GCRA) жана параметрлери 'rate/burst'.
- ишке ашырылган concurrency caps жана admission control үчүн оор иш.
- 'RateLimit-' жана 'Retry-After' аталыштары киргизилген; кардарлар backoff + jitter колдойт.
- Limiter бөлүштүрүлгөн жана бузулууга туруктуу (шарлар, репликация, деградация).
- Usage-жыйноо idempotenten; биллинг менен байламта, ашыкча керектөө үчүн алерталар.
- Байкоо: метриктер/соода/логи менен тегдер, жогорку "ызы-чуу" ачкычтар, alerter's.
- Сыноолор: бурсттар, "араа", өчүрүү, саат skew, муздак баштоо.
- Кардарлар үчүн документтер: пландар боюнча чектер, 429/Retry-After мисалдары, best practices retray.
- Өзгөчөлүктөр саясаты: убактылуу лимиттерди жогорулатуу жана качан.
15) типтүү каталар
per-tenant/per-endpoint жок глобалдык чеги - "noisy neighbor" бардык SLO бузат.
Жок 'burst': UX кыска жарылуу менен жабыркайт.
бир гана белгиленген терезени колдонуу → "терезе чек эки эсе көп".
Эч кандай демпотенттик жана retrains менен Jitter → бороон кайталоо.
Чектер чек арада гана, кызматтарда/кезектерде caps жок → ички "тыгындар".
Жооптордун чеги жок (жок 'Retry-After', 'RateLimit-') → кардарлар ылайыкташпайт.
DD OLTP → жогорку жашыруун жана "ысык" блоктор менен чектөө абалын сактоо.
16) Тез тандоо стратегиясы
жогорку менен коомдук API: Token Bucket + чоң 'burst', RateLimit- аталыштары, CDN/edge кэш.
Ички оор Jobs: concurrency caps + WFQ/DRR, admission control.
Үчүнчү жактар менен интеграциялоо: жеке чыгуу лимиттери, буферизация/ретрациялар.
Көп-тенант SaaS: чектөөлөрдүн иерархиясы (global → tenant → user → endpoint), VIP артыкчылыктуу, ай боюнча квота.
Корутунду
Жакшы rate limits жана квота - бул платформа менен кардардын ортосундагы системалуу келишим: ресурстардын чынчыл үлүшү, жарылууга туруктуулук, алдын ала айтылган SLO жана ачык-айкын биллинг. Алгоритмдерди айкалыштыруу (Token/GCRA + concurrency caps), скоптордун иерархиясын киргизүү, түшүнүктүү аталыштарды жана метриктерди берүү жана чыныгы трафик профилдеринин астындагы схемаларды такай текшерүү - бул платформа жүктүн агрессивдүү өсүшү менен да туруктуу бойдон калат.