GH GambleHub

Shaping və trafik marşrutu

1) Bütün bu niyə

Shaping və marşrutlaşdırma - idarə olunan əlçatanlıq və proqnozlaşdırıla bilən gecikmə bazası:
  • Sabitlik: «səs-küylü qonşuların» kanalları doldurmasına imkan vermirik.
  • Ədalət: tenantlar/siniflər arasında prioritetlər və kvotalar.
  • Effektivlik: Daha sürətli/daha ucuz emal edildiyi yerə sorğu göndəririk.
  • Dəyişikliyə nəzarət: risksiz kanarya/weighted-relizlər.
  • Qənaət: egress/egress-dəyər və CDN-cash hiyləsini optimallaşdırın.

2) Əsas anlayışlar

2. 1 Traffic shaping vs policing

Shaping - trafiki tamponlama və hədəf sürəti ilə paketlərlə göndərməklə bərabərləşdirir («partlayışların» hamarlanması).
Policing - bufer olmadan «cəzalandırır» (drop/etiketləmə). Daha sərt, lakin daha ucuz.

2. 2 Siniflər, növbələr və fənlər

Prioritet ilə növbələr (PRIO), WFQ/DRR (ədalətli paylanma), HTB (iyerarxik kvotalar), CoDel/RED (buferbloat ilə mübarizə), ECN (drop olmadan həddindən artıq yükləmə siqnalı).
L7-də - RPS/konnektlər/baytlar və prioritet hovuzlar şəklində «növbələr».

2. 3 Limit alqoritmləri

Token Bucket (n tokenləri rate r ilə əlavə olunur; sorğu «xərcləyir» k tokenlər).
Leaky Bucket (sabit axını; hamarlamaq üçün yaxşıdır).
Qlobal/lokal limitlər: yerli - sürətli, qlobal - ədalətli (Redis/etcd/per-tenant).

3) L3/L4 QoS

3. 1 DSCP/ToS və xidmət sinifləri

Paketləri trafik növünə görə etiketləyin (interaktiv, arka plan-RPC, fon tapşırıqları).
Məlumat mərkəzlərində - DSCP siyasətini şəbəkə fabriki/bulud ilə əlaqələndirin.

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 zirvələrdə damcıları azaldır; RED/CoDel buferbloat məhdudlaşdırır.
BBR (Cubic əvəzinə) tez-tez xüsusilə WAN/ağır xətlərin üstündə p99 gecikməsini azaldır.

4) L7-marşrutlaşdırma (HTTP/gRPC/WS)

4. 1 Marşrutlaşdırma meyarları

Yollar/metodlar ('/api/v1/', 'POST'), başlıqlar (müştəri versiyası, fiça bayraqları, kanarya hederi), kukilər (A/B, sticky), JWT markaları (tenant/role), geo/ASN, müvəqqəti pəncərələr, yük (outlier detection).
Protokol: HTTP/2 (multipleks), HTTP/3/QUIC (paket itkisinə qarşı müqavimət), gRPC (bi-di streams), WebSocket (uzun ömürlü konnektlər).

4. 2 Balanslı split/kanarya relizləri

Rout 'v1: 95%', 'v2: 5%', «yaşıl» metrlərdə avtomatik artım.
Kəsilmə: səhvlər/gecikmə/biznes invariantları.

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ı və consistent hashing

Cookie/IP/JWT identifikatoru ilə Session affinity.
Consistent hashing cache klasterlər, şarded xidmətlər, gateway rate limit üçün.

Nginx

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

4. 4 Geo- və latency-aware marşrutlaşdırma

GeoIP/ASN kənarda (CDN/edge) → ən yaxın ROR/region.
Latency-aware: periodik sağlamlıq + ölçmə RTT → «ən sürətli» klasterdə trafik.

4. 5 Outlier detection / circuit breaking

«Pis» instansiyaları döymək: max-ejection-percent, əsas səhvlər/gizli.
Circuit breaker :/RPS/linklər üçün limitlər.

5) Şlüz/mash-yığın səviyyəsində trafik shaping

5. 1 Rate limiting

Lokal (per-pod): ucuz, lakin ədalətli replika deyil.
Qlobal (Redis/etcd): ədalət per-tenant/API-açar.
Siyasətçilər: 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 və prioritetlər

Prioritet hovuzlar: «interaktiv»> «sistemli»> «arxa plan».
L7 DRR/WFQ ekvivalentləri: kvotalar/çəki per-müştəri/tenant.

5. 3 Həddindən artıq yük və qorunma

Load-shed: büdcələri aşdıqda imtina/deqradasiya.
Adaptive concurrency: p50/p95/queue-len limitlərinin dinamikası.
Server-side backpressure: 429/503 + Retry-After.

6) eBPF və CNI səviyyəsi

6. 1 Cilium/eBPF

Nüvədə filtrasiya/marşrutlaşdırma: daha az kontekst-svitches, incə L3-L7 siyasətləri.
sabit paylanması üçün Maglev hashing.
per-pod QoS (TC/XDP hooks) üçün eBPF proqramları.

6. 2 Calico/NetworkPolicies

L3/L4 giriş siyasəti, əsas prioritet sinifləri, Kubernetes QoS (Guaranteed/Burstable/BestEffort) ilə inteqrasiya.

7) Edge/CDN və API şlyuzları

CDN: Cash açarları (normallaşma query/headers), stale-while-revalidate, origin (rate limit/bot filtrləri) qorunması.
API şlüzləri: autentifikasiya, kvota/tarif planları (per-consumer), SLA məhdudiyyətləri, geo-marşrutlaşdırma, API versiyası.
WAF: CPU nüvəsini sərf etməmək üçün kənarda filtrasiya.

8) Asinxron şinlər/axın

Kafka/NATS/Pulsar: prodüser/konsumer kvotaları, batch-ölçü limiti, lag vasitəsilə backpressure.
Hadisələrin marşrutlaşdırılması: partizan açarları (tenant/idempotency-key), homojenlik üçün «parıldayan» partiyalar.
Exactly-once ≈ «effektiv bir dəfə»: əməliyyat istehsalçıları + idempotent sinki.

9) Taymaut, retraj, backoff

Zaman keçidləri: müştəri <proxy <xidmət (əksinə deyil).
Retrailer: Jitterized eksponensial backoff ilə məhdud sayda, lakin fırtına olmadan.
Retralarda idempotentlik tələb olunur; əks halda - SAGA/kompensasiya.
Hedged/parallel requests (diqqətlə): p99 yaxşılaşdırır, ümumi trafiki artırır.

10) Müşahidə və 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.

Siniflər: class = interactivesystembackground, tenant, route.

10. 2 Treysinq

Correlation-ID atın; Yuxuları səbəb kimi qeyd edin: 'retry' shed 'throttle' queue '.
Alt sistemlərə təsirini anlamaq üçün retras/hedges üçün links.

10. 3 Qeydlər/Hesabatlar

Damarlar/şeddinq/limitlər üzrə xülasə, marşrutlar üzrə istilik xəritələri.
Ədalət per-tenant (fairness index) üçün ayrı panellər.

10. 4 SLO nümunələri

"95-persentil yük ilə p99 ≤ 300 ms; shed ≤ 0. 1%; error_ratio ≤ 0. 5%».
«Həddindən artıq yükləmə zamanı kvotanın ən azı 95% -i interaktiv sinifə zəmanət verilir».

11) Konfiqurasiya nümunələri

11. 1 Nginx: rate limit + burst + kanarya 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 vasitəsilə ehtiyat)

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 hintləri

Kritik podalar üçün Guaranteed (requests = limits).
PodPriority & Preemption: kritik pod çatışmazlığı arxa fon əvəz edəcək.
Topology Spread Constraints: sabitlik üçün zonalar üzrə paylama.

12) Anti-nümunələr

Qlobal göz limiti → əhəmiyyətli müştərilərdə saxta 429/vaxt.
Jitter/idempotent → fırtına olmadan retrai.
Zamanın qarışıqlığı (müştəri> server) → asma və «ikiqat iş».
Prod və eksperimentlər üçün ümumi caches/növbələr → məlumatların çirklənməsi.
«Həmişə sticky» ağıl olmadan → qeyri-bərabər yük/isti düyünlər.
Off outlier detection → «çürük» instant həftənin metrik korlayır.

13) Giriş çek siyahısı

  • Trafik seqmentləri: siniflər/tenantlar/marşrutlar.
  • Hədəf büdcələri təyin edin: RPS/konnektlər/baytlar və p95/p99.
  • rate limit (yerli + qlobal), circuit breaker, outlier detection daxil edin.
  • Metriklərə görə kanarya split + otoyolu konfiqurasiya edin.
  • Eksponent backoff + jitter ilə taymaut/retraj təyin edin.
  • ECN/BBR (mümkün olduqda) və egress üçün fq_codel/HTB daxil edin.
  • «Kölgə» və təcrübələr üçün ayrı-ayrı hovuzlar/caches/növbələr.
  • Daşbordlar: limitlərin, növbələrin, gecikmənin, fairness metrikası.
  • SLO və runbook: şeddinq/geri/daxil meyarları.

14) FAQ

Q: seçmək üçün nə: shaping və ya policing?
A: Xüsusi yollar üçün - shaping (damsız hamarlama). «Fon «/» bulk »xidmət sinifləri üçün - kritik axınları qorumaq üçün policing.

Q: retraj fırtınalardan necə qaçmaq olar?
A: Jitterized backoff, cəhd limiti, idempotentlik, server ipuçları 'Retry-After', qlobal kvotalar.

Q: Sticky və ya hashing?
A: Sticky - seans/cache lazım olduqda istifadəçi yerli; hashing - vahid və stabilliyə ehtiyac olduqda.

Q: HTTP/3/QUIC nə verir?
A: HOL kilidləri olmadan TCP, daha yaxşı itki müqaviməti, daha sürətli bərpa - p99/p999 quyruqlarını əhəmiyyətli dərəcədə azaldır.

15) Nəticələr

Effektiv shaping və L7 marşrutlaşdırma, prioritetlər və kvotalar, ədalətli paylama, təhlükəsiz limitlər və müşahidə və SLO ilə dəstəklənən ağıllı marşrutlaşdırma siyasətlərinin razılaşdırılmış dəstidir. Təsvir olunan təcrübələri izləyərək (aşağı səviyyələrdə HTB/fq_codel/ECN və Envoy/Istio/Nginx/eBPF yuxarı səviyyələrdə), proqnozlaşdırıla bilən gecikmə quyruqları, həddindən artıq yükləmə müqaviməti və nəzarət edilə bilən, təhlükəsiz buraxılışlar əldə edəcəksiniz.

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!

Telegram
@Gamble_GC
İ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.