GH GambleHub

Shaping va trafikni yoʻnaltirish

1) Nima uchun bularning hammasi

Shaping va marshrut - boshqariladigan foydalanish va oldindan aytib bo’ladigan latentlik bazasi:
  • Barqarorlik: «shovqinli qo’shnilarga» kanallarni to’ldirishga yo’l qo’ymaymiz.
  • Adolat: tengantlar/sinflar o’rtasidagi ustuvorlik va kvotalar.
  • Samaradorlik: so’rovni tezroq/arzonroq qayta ishlanadigan joyga yuboramiz.
  • O’zgarishlarni nazorat qilish: xavfsiz kanar/weighted-relizlar.
  • Tejash: egress/egress-qiymatlarni va CDN-kesh-hiyla-nayrangni optimallashtirish.

2) Bazaviy tushunchalar

2. 1 Traffic shaping vs policing

Shaping - trafikni maqsadli tezlikda buferlash va paketlar bilan jo’natish orqali tekislaydi («portlashlarni» tekislash).
Policing - buferlashmasdan ortiqcha (drop/markirovkalash) «jazolaydi». Qattiqroq, lekin arzonroq.

2. 2. Sinflar, navbatlar va fanlar

Ustuvor navbatlar (PRIO), WFQ/DRR (adolatli taqsimot), HTB (iyerarxik kvotalar), CoDel/RED (buferbloratga qarshi kurash), ECN (dropsiz ortish haqida signal).
L7 da - RPS/konnektlar/bayt limitlari va ustuvor pullar ko’rinishidagi «navbatlar».

2. 3 Limitlash algoritmlari

Token Bucket (n tokenlari rate r qo’shiladi; so’rov k tokenlarini «sarflaydi»).
Leaky Bucket (qat’iy chiqib ketish; tekislash uchun yaxshi).
Global/lokal limitlar: mahalliy - tez, global - adolatli (Redis/etcd/per-tenant).

3) QoS L3/L4

3. 1 DSCP/ToS va xizmat ko’rsatish sinflari

Paketlarni trafikning turiga qarab belgilang (interaktiv, orqa fon-RPC, orqa fon vazifalari).
Datacentrlarda DSCP siyosatini tarmoq fabrikasi/bulut bilan muvofiqlashtiring.

3. 2 Linux tc: HTB + fq_codel (eskiz)

bash
Clearing tc qdisc del dev eth0 root 2 >/dev/null         true

Корневая HTB с 1Gbit tc qdisc add dev eth0 root handle 1: htb default 30 tc class add dev eth0 parent 1: classid 1:1 htb rate 1gbit

Класс latency-critical 200Mbit tc class add dev eth0 parent 1:1 classid 1:10 htb rate 200mbit ceil 1gbit prio 0 tc qdisc add dev eth0 parent 1:10 handle 10: fq_codel

Класс background 100Mbit tc class add dev eth0 parent 1:1 classid 1:30 htb rate 100mbit ceil 1gbit prio 2 tc qdisc add dev eth0 parent 1:30 handle 30: fq_codel

3. 3 ECN/RED/BBR

ECN cho’qqilardagi droplarni kamaytiradi; RED/CoDel buferblowatni cheklaydi.
BBR (Cubic o’rniga) ko’pincha p99 latentligini kamaytiradi, ayniqsa WAN/og’ir navbatlar ustidan.

4) L7-marshrutlash (HTTP/gRPC/WS)

4. 1 Routing mezonlari

Yo’llar/usullar (’/api/v1/’,’POST’), sarlavhalar (mijozning versiyasi, ficha-bayroqlar, kanareykali xeder), kukilar (A/B, sticky), JWT-tamg’alar (tenant/role), geo/ASN, vaqtinchalik derazalar, yuk (outlier detection).
Protokol: HTTP/2 (multiplekslash), HTTP/3/QUIC (paketlarni yo’qotishga chidamlilik), gRPC (bi-di streams), WebSocket (uzoq umr ko’radigan konnektlar).

4. 2 Tortilgan split/kanar relizlari

Rout’v1: 95%’,’v2: 5%’, «yashil» metriklarda avtomatik ravishda oshirish.
Kesish: xatolar/yashirin/biznes invariantlari.

Envoy (eskiz)

yaml route:
weighted_clusters:
clusters:
- name: svc-v1 weight: 95
- name: svc-v2 weight: 5

Istio

yaml apiVersion: networking. istio. io/v1beta1 kind: VirtualService spec:
hosts: ["svc"]
http:
- route:
- destination: { host: svc, subset: v1, weight: 95 }
- destination: { host: svc, subset: v2, weight: 5 }

4. 3 Sticky-sessiyalar va consistent hashing

Cookie/IP/JWT identifikatori boʻyicha Session affinity.
Consistent hashing uchun kesh-klasterlar, shardlangan servislar, geytveylar rate limit.

Nginx

nginx upstream api {
hash $cookie_user_id consistent;
server 10. 0. 0. 1;
server 10. 0. 0. 2;
}

4. 4 Geo- va latency-aware routing

GeoIP/ASN chekka (CDN/edge) → eng yaqin ROR/mintaqa.
Latency-aware: davriy health-testlar + o’lchovlar RTT → «eng tezkor» klasterga trafik.

4. 5 Outlier detection / circuit breaking

«Yomon» holatlar: max-ejection-percent, asosiy xatolar/latentlik.
Circuit breaker: navbatlarda/RPS/konnektlariga limitlar.

5) Shlyuzlar/mash-stek darajasida traffic shaping

5. 1 Rate limiting

Lokal (per-pod): arzon, ammo adolatli bo’lmagan replika.
Global (Redis/etcd): adolat per-tenant/API-kalit.
Siyosatchilar: per-route, per-method, per-tenant, burst.

Envoy RLS (eskiz)

yaml typed_per_filter_config:
envoy. filters. http. ratelimit:
"@type": type. googleapis. com/envoy. extensions. filters. http. ratelimit. v3. RateLimit domain: "api"
rate_limit_service:
grpc_service: { envoy_grpc: { cluster_name: rate_limit_cluster } }

5. 2 Fairness va ustuvorliklar

Ustuvor pullar: «interaktiv»> «tizimli»> «fon».
DRR/WFQ ekvivalentlari L7 ga: kvotalar/vaznlar per-mijoz/tenant.

5. 3 Qayta yuklash va himoya qilish

Load-shed: budjetdan oshib ketganda rad etish/degradatsiya.
Adaptive concurrency: p50/p95/queue-len dan limitlar dinamikasi.
Server-side backpressure: 429/503 + Retry-After.

6) eBPF va CNI darajasi

6. 1 Cilium/eBPF

Yadroda filtrlash/yo’naltirish: kamroq kontekst-svitchlar, nozik L3-L7 siyosati.
Barqaror taqsimlash uchun Maglev hashing.
per-pod QoS (TC/XDP hooks) uchun eBPF dasturlari.

6. 2 Calico/NetworkPolicies

L3/L4 kirish siyosati, asosiy ustuvor sinflar, Kubernetes QoS (Guaranteed/Burstable/BestEffort) bilan integratsiya.

7) Edge/CDN va API-shlyuzlar

CDN: kesh-kalitlar (normalizatsiya query/headers), stale-while-revalidate, origin (rate limit/bot-filtrlar).
API-shlyuzlar: autentifikatsiya, kvotalar/tarif rejalari (per-consumer), SLA-cheklovlar, geo-routing, API versiyasi.
WAF: Yadro CPUsini sarflamaslik uchun chetga filtrlash.

8) Asinxron shinalar/striming

Kafka/NATS/Pulsar: prodyuserlar/konsumerlar uchun kvotalar, batch-o’lchamlari limiti, lag orqali backpressure.
Hodisalarni yo’naltirish: bir tekislik uchun «miltillovchi» partiyalar (tenant/idempotency-key) kalitlari.
Exactly-once ≈ «bir marta samarali»: tranzaksion prodyuserlar + idempotent sinki.

9) Taymautlar, retryalar, backoff

Vaqt oraligʻi: mijoz <proksi <servis (aksincha emas).
Retraylar: jitterlashtirilgan eksponensial backoff bilan cheklangan son, ammo bo’ronsiz.
Retrajlarda idempotentlik majburiy; aks holda - SAGA/kompensatsiya.
Hedged/parallel requests (ehtiyotkorlik bilan): p99 ni yaxshilaydi, umumiy trafikni oshiradi.

10) Kuzatuv va SLO

10. 1 Metrika

rate_limit_hits, requests_queued, shed_requests_total, latency_ms{p50,p95,p99}, error_ratio, retry_attempts, outlier_ejections, queue_time_ms.

Sinflar: class = interactivesystembackground, tenant, route.

10. 2 Treysing

Correlation-ID’ni tashlang; uyquni sabablar turi bilan belgilang:’retry’shed’throttle’queue’.
Kichik tizimlarga ta’sirini tushunish uchun retraj/hedges uchun linkalar.

10. 3 Logi/hisobotlar

Droplar/shedding/limitlar bo’yicha ma’lumotlar, yo’nalishlar bo’yicha issiqlik xaritalari.
Adolat uchun alohida panellar (fairness index).

10. 4 SLO-misollar

"95-percentile yuklamada p99 ≤ 300 ms; shed ≤ 0. 1%; error_ratio ≤ 0. 5%».
«Qayta yuklashda interaktiv sinfga kvotaning kamida 95 foizi kafolatlangan».

11) Konfiguratsiya namunalari

11. 1 Nginx: rate limit + burst + kanar spliti

nginx map $http_x_canary $canary { default 0; 1 1; }

limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;

upstream api_v1 { server 10. 0. 0. 1; }
upstream api_v2 { server 10. 0. 0. 2; }

server {
location /api/ {
limit_req zone=perip burst=20 nodelay;
if ($canary) { proxy_pass http://api_v2; break; }
proxy_next_upstream error timeout http_502 http_503 http_504;
proxy_pass http://api_v1;
}
}

11. 2 Envoy: circuit breaker + outlier detection

yaml circuit_breakers:
thresholds:
- priority: DEFAULT max_connections: 1000 max_pending_requests: 500 max_requests: 2000 outlier_detection:
consecutive_5xx: 5 interval: 10s max_ejection_percent: 50 base_ejection_time: 30s

11. 3 Istio: per-tenant kvota (label orqali zaxira)

yaml apiVersion: security. istio. io/v1 kind: AuthorizationPolicy spec:
selector: { matchLabels: { app: api } }
rules:
- when:
- key: request. headers[x-tenant]
values: ["gold"]
Next - RateLimitPolicy in the limit provider with a large quota pool for "gold."

11. 4 Kubernetes QoS xintalar

Tanqidiy podalar uchun Guaranteed (requests = limits).
PodPriority & Preemption: tanqidiy pod’lar tanqislikda fonni almashtiradi.
Topology Spread Constraints: barqarorlik uchun zonalar bo’yicha taqsimlash.

12) Anti-patternlar

Global ko’z uchun limit → muhim mijozlarda soxta 429/taymautlar.
Jitter/idempotentlik → bo’ronsiz retraylar.
Taymautlarning chalkashligi (mijoz> server) → muzlash va «ikki marta ishlash».
Prod va eksperimentlar uchun umumiy kesh/navbatlar → maʼlumotlar ifloslanishi.
«Doimo sticky» sog’lom fikrsiz → notekis yuk/issiq tugunlar.
O’chirilgan outlier detection → «chirigan» holat haftaning metrikasini buzadi.

13) Joriy etish chek-varaqasi

  • Trafikni segmentlash: sinflar/tenantlar/yo’nalishlar.
  • Maqsadli byudjetlarni belgilang: RPS/konnektlar/baytlar va p95/p99.
  • rate limit (lokal + global), circuit breaker, outlier detection.
  • Kanar splitini + avtootkatini metriklarga moslang.
  • Eksponensial backoff + jitter bilan taymaut/retrajlarni yozing.
  • ECN/BBR (iloji boricha) va egress uchun fq_codel/HTB kiriting.
  • «Soyalar» va tajribalar uchun alohida pullar/keshlar/navbatlar.
  • Dashbordlar: limitlar, navbatlar, latentlik, fairness metrikasi.
  • SLO va runbook: shedding/qaytarish/qoʻshish mezonlari.

14) FAQ

Q: Nima tanlash kerak: shaping yoki policing?
A: Foydalanuvchi yo’llari uchun - shaping (to’siqsiz tekislash). «Fon «/» bulk »servis-sinflari uchun - tanqidiy oqimlarni himoya qilish uchun policing.

Q: Retraj bo’ronlardan qanday qochish mumkin?
A: Jitterlashtirilgan backoff, urinishlar limiti, idempotentlik, «Retry-After» server maslahatlari, global kvotalar.

Q: Sticky yoki hashing?
A: Sticky - agar foydalanuvchiga sessiya/kesh kerak bo’lsa, lokal; hashing - chardingning bir tekisligi va barqarorligi kerak bo’lganda.

Q: HTTP/3/QUIC nima beradi?
A: HOL-blokirovkasiz TCP, yo’qotishlarga chidamlilik, tezroq tiklanish - p99/p999 dumlarini sezilarli darajada kamaytiradi.

15) Yakunlar

Samarali shaping va L7-marshrutlash - bu muvofiqlashtirilgan siyosatlar toʻplami: ustuvorlik va kvotalar, adolatli taqsimot, xavfsiz limitlar va kuzatuv va SLO bilan mustahkamlangan aqlli routing. Tavsiflangan amaliyotlar (quyi darajalarda HTB/fq_codel/ECN va yuqori darajalarda Envoy/Istio/Nginx/eBPF) yordamida siz oldindan aytib bo’lmaydigan latentlik, ortiqcha yuklashga chidamlilik va nazorat qilinadigan, xavfsiz relizlarga ega bo’lasiz.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Telegram
@Gamble_GC
Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.