GH GambleHub

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-' (IETF) үй-бүлөсү:
  • `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), скоптордун иерархиясын киргизүү, түшүнүктүү аталыштарды жана метриктерди берүү жана чыныгы трафик профилдеринин астындагы схемаларды такай текшерүү - бул платформа жүктүн агрессивдүү өсүшү менен да туруктуу бойдон калат.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.