GH GambleHub

Rate limits və kvotalar

Rate limits və kvotalar ümumi resurslara tələbin idarə edilməsinin fundamental mexanikasıdır: CPU, şəbəkə, DB, növbələr, xarici API. Məqsəd ədalət (fairness), SLO-nun proqnozlaşdırılması və sıçrayışlardan, sui-istifadədən və "noisy neighbor 'dan qorunmaqdır.


1) Əsas anlayışlar

Rate limit - sorğuların/əməliyyatların intensivliyinin məhdudlaşdırılması (req/s, msg/min, bayt/san).
Burst - orta rate üzərində icazə verilən qısa müddətli sıçrayış.
Quota - vaxt pəncərəsi üçün həcm limiti (sənəd/gün, GB/ay).
Concurrency cap - eyni zamanda əməliyyatların məhdudlaşdırılması (eyni zamanda sorğular/joblar).
Scope - tətbiq sahəsi: per-tenant, per-user, per-token, per-enpoint, per-IP, per-region, per-feature.


2) Limit alqoritmləri

2. 1 Token Bucket (Token kovası)

Parametrlər: 'rate' (token/san), 'burst' (vedrə ölçüsü).
«Kredit» kimi işləyir: yığılmış tokenlər qısa zirvələrə imkan verir.
Xarici API və istifadəçi sorğuları üçün uyğundur.

2. 2 Leaky Bucket (sızan kova)

Sabit sürətlə axını rəvan «vurur».
Həssas backend 'am üçün trafikin hamarlanması üçün yaxşıdır.

2. 3 Fixed/Sliding Window

Fixed window: sadə, lakin «pəncərə keçid» həssasdır.
Sliding window: daha dəqiq, lakin daha bahalı hesablama.

2. 4 GCRA (Generic Cell Rate Algorithm)

Virtual gəliş vaxtı baxımından Token Bucket ekvivalenti.
Paylanmış limitlər üçün dəqiq və sabitdir (daha az münaqişə vəziyyəti).

2. 5 Concurrency Limits

Eyni zamanda həyata keçirilən əməliyyatların məhdudlaşdırılması.
Hovuz axınları/bağlantıları və «head-of-line blocking» tükənməkdən qoruyur.


3) Limitlər harada tətbiq olunur

Sərhəddə (L7/API-şlyuz): əsas maneə, sürətli uğursuzluq (429/503), ucuz yoxlamalar.
Xidmətlər daxilində: ağır əməliyyatlar üçün əlavə caps (ixrac, hesabat, transformasiya).
Xarici sistemlərə çıxışda: üçüncü tərəflər üçün fərdi limitlər (anti-penalty).
Növbələrdə/məşqlərdə: ümumi hovuzlara fairness.


4) Satınalmalar və prioritetlər (multi-tenant)

Иерархия: Global → Region → Tenant/Plan → User/Token → Endpoint/Feature → IP/Device.
Priority-aware: VIP/Enterprise daha böyük 'burst' və çəki alır, lakin ümumi SLO qırmaq deyil.
Limitlərin tərkibi: yekun tolerantlıq = 'min (qlobal, regional, tenant, xüsusi, son)'.


5) Həcminə görə kvotalar

Gündəlik/aylıq kvotalar: sənədlər/gün, GB/ay, mesajlar/dəq.
Yumşaq/sərt eşiklər: xəbərdarlıqlar (80/90%) və «sərt stop».
Roll-up: obyektlərin (cədvəllər, fayllar, hadisələr) uçotu və billinqə «çıxarılması».


6) Paylanmış limiterlər

Tələblər: aşağı gecikmə, uyğunluq, uğursuzluğa davamlılıq, üfüqi miqyas.

Local + probabilistic sync: yerli şar kovaları + periodik sinxronizasiya.
Central store: Redis/KeyDB/Memcached с LUA/atomic ops (INCR/PEXPIRE).
Sharding: Növ açarları 'limit: {scope}: {id}: {window}' vahid paylama ilə.
Clock skew: «həqiqəti» müştərilərdə deyil, limiter serverində saxlayın.
İdempotentlik: «əməliyyatların» (Idempotency-Key) açarları saxta silinmələri azaldır.


7) Anti-sui-istifadə və müdafiə

Per-IP + device fingerprint ictimai end-pointlər üçün.
Anomaliyalar zamanı Proof-of-Work/CAPTCHA.
Slowdown (throttling) UX daha vacib olduqda tam imtina əvəzinə (axtarış ipuçları).
Adaptive limits: hadisələrin/bahalı deqradasiyanın dinamik azalması.


8) Müştəri davranışı və protokol

Kodlar: '429 Too Many Requests' (rate), '403' (kvota/plan aşdı), '503' (qoruyucu deqradasiya).

Cavab başlıqları (ən yaxşı practice):
  • 'Retry-After: ' - nə vaxt yenidən cəhd etmək olar.
'RateLimit-' (IETF) ailəsi:
  • `RateLimit-Limit: ;w=`
  • `RateLimit-Remaining: `
  • `RateLimit-Reset: `
  • Backoff: eksponensial + jitter (full jitter, equal jitter).
  • İdempotentlik: 'Idempotency-Key' başlığı və təhlükəsiz əməliyyatların təkrarlanması.
  • Zaman aşımı və ləğv: limitləri «ələ keçirməmək» üçün asılmış sorğuları düzgün şəkildə kəsin.

9) Müşahidə və test

Теги: `tenant_id`, `plan`, `user_id`, `endpoint`, `region`, `decision` (allow/deny), `reason` (quota/rate/concurrency).
Metriklər: bant genişliyi, 429/403/503 nasazlıqlarının nisbəti, limiter gecikmələri p95/p99, açar cache hit ratio, planlar üzrə paylama.
Audit qeydləri: blokların səbəbləri, top «səs-küylü» açarlar.
Testlər: «mişar/burst/plato» yükləmə profilləri, xaos - Redis/shard uğursuzluğu, saatların sinxronizasiyası.


10) Billing ilə inteqrasiya

Usage sayğacları sərhəddə yığılır, idempotentlik ilə batches (hər N dəq) ilə yığılır.
Planların xülasəsi: həddindən artıq → overcharge və ya planın müvəqqəti artırılması.
Uyğunsuzluqlar: usage vs invoice; delta alertlər.


11) Daxili fairness (növbələr, məşqçilər)

Weighted Fair Queuing/DRR: planın çəkisinə görə kirayəçilər arasında slotların paylanması.
Per-tenant worker pools: sərt izolyasiya VIP/səs-küylü.
Admission control: kvotalar tükənsə, yerinə yetirilməmişdən əvvəl; növbələr şişirmir.
concurrency Caps: eyni zamanda ağır jobs məhdudlaşdırmaq.


12) Standart plan profilləri (nümunə)

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) Memarlıq etalonu (şifahi sxem)

1. Edge/API-şluz: TLS → kontekstini çıxarın (tenant/plan) → limitləri/kvotaları yoxlayın → RateLimit- → log/trace başlıqlarını yerləşdirin.
2. Policy Engine: prioritet qaydaları (VIP), adaptiv eşiklər.
3. Limiter Store: Redis/KeyDB (atomic ops, LUA), açar şardlanması, replikasiya.
4. Services: ağır əməliyyatlar üçün ikincil limit və caps; idempotentlik; WFQ/DRR ilə növbələr.
5. Usage/Billing: toplama, aqreqasiya, invoys, həddindən artıq.
6. Observability: metriklər/loqi/treys ilə tagged, dashboard per-tenant.


14) Satış öncəsi yoxlama siyahısı

  • Limit scopları (tenant/user/token/endpoint/IP) və onların iyerarxiyası müəyyən edilmişdir.
  • Seçilmiş alqoritm (Token Bucket/GCRA) və parametrləri 'rate/burst'.
  • Ağır əməliyyatlar üçün concurrency caps və admission control həyata keçirilmişdir.
  • 'RateLimit-' və 'Retry-After' başlıqları daxil edilmişdir; müştərilər backoff + jitter dəstəkləyir.
  • Limiter paylanmış və uğursuzluğa davamlı (şarlar, replikasiya, deqradasiya).
  • Usage-toplama idempotenten; billing ilə bir dəstə, həddindən artıq istehlak üçün risklər.
  • Müşahidə: metriklər/treys/log ilə tagged, top «səs-küylü» açarlar, alerter 's.
  • Testlər: Burst, «mişar», Store, Clock Skew, soyuq başlanğıc.
  • Müştərilər üçün sənədləşdirmə: planlara görə limitlər, 429/Retry-After nümunələri, retrajların ən yaxşı əməliyyatları.
  • İstisnalar siyasəti: limitləri müvəqqəti artırmaq üçün necə və nə vaxt.

15) Tipik səhvlər

per-tenant/per-endpoint olmadan qlobal limit - «noisy neighbor» bütün SLO qırır.
Yox 'burst': UX qısa sıçrayışlarda əziyyət çəkir.
Yalnız sabit pəncərədən istifadə → «pəncərə sərhədində ikiqat zərbə».
Jitter → fırtına təkrarları ilə idempotentlik və retras yoxdur.
Limitlər yalnız sərhəddə, xidmətlərdə/növbələrdə caps olmadan → daxili «tıxaclar».
Cavablarda limitlərin əks olunmaması (no 'Retry-After', 'RateLimit-') → müştərilər uyğunlaşmır.
DB OLTP → yüksək gizli və «isti» kilidlərdə limiter vəziyyətinin saxlanması.


16) Sürətli strategiya seçimi

Pik ilə açıq API: Token Bucket + böyük 'burst', RateLimit- başlıqlar, CDN/edge keşi.
Daxili ağır joblar: concurrency caps + WFQ/DRR, admission control.
Üçüncü tərəflərlə inteqrasiya: fərdi çıxış limitləri, tamponlama/retraj.
Multi-tenant SaaS: limitlər iyerarxiyası (global → tenant → user → endpoint), VIP prioritetləşdirmə, aylıq kvotalar.


Nəticə

Yaxşı rate limits və kvotalar platforma və müştəri arasında sistemli bir müqavilədir: resursların dürüst payı, sıçrayışa davamlı, proqnozlaşdırıla bilən SLO və şəffaf billing. Alqoritmləri (Token/GCRA + concurrency caps) birləşdirin, skopların iyerarxiyasını tətbiq edin, başa düşülən başlıqları və metrikləri verin və real trafik profillərinin altındakı sxemləri müntəzəm olaraq yoxlayın - platforma aqressiv yük artımı ilə belə sabit qalır.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.