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.
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.