GH GambleHub

Yükün balanslaşdırılması

1) Niyə və harada memarlıq

Balanslaşdırıcı - müştəri ilə arxa park arasında «turniket». Onun məqsədləri:
  • əlçatanlıq (tək bir uğursuzluq nöqtəsi olmadan), gecikmə (p95 aşağı), miqyas (üfüqi), təhlükəsizlik (TLS/WAF), relizlərin idarə edilməsi (canary/blue-green).
Tətbiq qatları:
  • Edge/Global: Anycast, GSLB/GeoDNS, CDN/Edge-LB, DDoS.
  • L4 (TCP/UDP): NLB, maqlev, terminasiya olmadan proxy.
  • L7 (HTTP/2, gRPC, WebSocket, QUIC): yol marşrutu/başlıqlar/markalar, önbellək/sıxılma/retralar.
  • Data-tier: DB-прокси (PgBouncer/ProxySQL), Redis Cluster/Consistent Hash, Kafka partitioning.

2) Balans modelləri və alqoritmləri

Round-Robin (RR): sadə vahid.
Least Connections (LC): Uzun konnektlər üçün yaxşıdır (WS, gRPC).
Least Request/Power-of-Two (P2C): iki təsadüfi müqayisə - yaxşı tarazlıq/keyfiyyət.
Weighted RR/LC: canary/« isti »node üçün ağırlıqlar.
Consistent Hashing (CH): masa olmadan sessiya yapışqanlığı (cart, Redis).
Maglev/Flow-hash: Fapping davamlı sürətli L3/L4 distribution.
Latency-aware: p50/p95 sürüşmə seçimi.
EWMA: gecikmələrin tarixçəsini nəzərə alır.

Tövsiyə: L7-də default P2C (least-request); stateful/cache üçün - consistent hash; для WS/gRPC — least-connections.

3) Apstrimlərin sağlamlığı: yoxlamalar və «qovulma»

Health-checks: TCP, HTTP 200/匹配 тела, gRPC status; intervallar/zaman/xəta həddi.
Outlier Ejection: «səs-küylü» instansiyaların avtomatik xaric edilməsi (consecutive-5xx, success-rate-ejection).
Slow-start & warmup: yeni instansiyaların yumşaq daxil edilməsi (tədricən çəki artımı).
Connection draining: qapalı/deployda - aktiv konnektlərin qırılmadan «doldurulması».

4) Sessiyalar və yapışqanlıq (stickiness)

Cookie-stickiness (L7): `Set-Cookie: lb=<id>; SameSite; Secure`.
Açar CH: 'hash (userId' sessionId 'cartId)'.
IP-hash - yalnız qapalı şəbəkələrdə (NAT pozur).
TTL yapışqanlıq + eviksiya nodları ilə fallback.
Vacib: yapışqanlıq ehtiyacını minimuma endirin → vəziyyətdən kənarda saxlayın (Redis/DB/JWT).

5) Qlobal balans (GTM/GSLB)

Anycast + health-probe: bir IP, ən yaxın PoP trafik; avtomatik feylover.
GeoDNS/Latency-DNS: geo/gecikmə ilə cavab.
Regional klasterlər: «rezidentlərin məlumatları» regionda qalır (GDPR); replikasiya ilə regionlararası failover.
Siyasətçilər: geo-bloklar, hesab/token ilə «stikeregion».

6) Protokollar və xüsusiyyətlər

HTTP/2: multiplex, prioritetlər; axın üçün səlahiyyətli connection-pool lazımdır.
gRPC: uzun ömürlü axınlar → least-connections, aqressiv sağlamlıq-yoxlamalar.
WebSocket/SSE: konnektin yapışqanlığı, böyük idle-taymautlar, TCP keep-alive.
QUIC/HTTP/3: sürətli başlanğıc, itkiyə davamlılıq; MTU/path-MTU izləyin.
TLS-termination/mTLS: edge/L7-LB terminal; daxili - mTLS/identity (SPIFFE).

7) Həddindən artıq yükdən qorunma (overload control)

Rate-limit: per-IP, per-key, per-route; burst+sustain.
Adaptive Concurrency (Envoy): dinamik eyni vaxtda sorğu limiti.
Queue/Surge-buffer: 503 dürüst imtina ilə məhdud növbə ölçüsü.
Hedging/Parallel racing: yavaş sorğuları dublyaj (yalnız idempotent).
Timeout budget: ayrı connect/read/write.
Backpressure: '503 + Retry-After', cit ilə müştəri eksponent retras.
Slow-loris qorunması: oxu/yazma vaxtı, minimum sürət.

8) Buraxılışlar və trafik menecmenti

Canary (weighted): 1–5–10–25–50–100% с guardrails (p95, 5xx, timeouts).
Blue-Green: ani switch, geri - DNS/LB.
Shadow/Mirror: cavab təsir etmədən sorğuların surəti; PII maskalanması.
Header/Claim-routing: `X-Canary: 1` или `JWT. claims. region/role`.

9) Avtoskeylinq və drenaj

HPA/ASG по CPU+RPS+p95+queue-depth.
PreStop hook: konnektlərin tamamlanmasını gözləmək.
Warm pool/instance reuse: soyuq başlanğıc azaldılması.
Capacity planning: hədəf 'utilization 60-70%' p95 normal.

10) Müşahidə və SLO

LB metrikası: RPS, p50/p95/p99, 4xx/5xx, open-connections, queue-len, ejections, retries, hit-ratio cache.
Trace: 'traceparent/x-request-id' vasitəsilə LB → xidmətlər → DB.
Log: struktur, PII/PAN maskaları, apstrimlə korelasiya.
Marşrut üzrə SLO: məsələn, 'latency p95 ≤ 300 ms', 'availability ≥ 99. 9%`, `5xx ≤ 0. 5%`.
Alertlər: sapmalara görə (burn-rate SLO, ejection sıçrayışı, böyümə 5xx/timeout).

11) Məlumatların balanslaşdırılması və cache

PostgreSQL/MySQL:
  • Read/Write split (ProxySQL/pgpool) + read-replicas; sticky-txn.
  • Failover: RPO = 0 (daha bahalı) üçün sinxron replika.
Redis:
  • Redis Cluster + hash-slot; sessiyalar üçün - CH; taymaut/Retryable errors.
Kafka/Redpanda:
  • partitioning və consumer-groups vasitəsilə balans; HTTP-LB ilə qarışdırmayın.
  • Object Storage (S3/MinIO): multi-region failover через GSLB/replication.

12) K8s və bulud LB

Service (ClusterIP/NodePort/LoadBalancer) - əsas L4.
Ingress/Gateway API - L7-marşrutlaşdırma, kanarya çəkiləri, TLS.
AWS: NLB (L4, yüksək keçid), ALB (L7, WAF, sticky, header-routing).
GCP: Global LB (L7/HTTP(S) с Anycast), TCP/UDP proxy LB.
Azure: Front Door (global), Application Gateway (L7), Load Balancer (L4).

13) Konfiqurasiya nümunələri

13. 1 NGINX (L7, least_conn, sticky, canary)

nginx upstream api_pool {
least_conn;
server api-1:8080 max_fails=3 fail_timeout=10s;
server api-2:8080 max_fails=3 fail_timeout=10s;
sticky cookie lb_id expires=30m path=/ secure httponly;
}

map $http_x_canary $dst {
default api_pool;
1    canary_pool;
}

upstream canary_pool {
least_conn;
server api-canary:8080 weight=1;
}

server {
listen 443 ssl http2;
location /api/ {
proxy_read_timeout 5s;
proxy_connect_timeout 1s;
proxy_set_header X-Request-Id $request_id;
proxy_pass http://$dst;
}
}

13. 2 HAProxy (P2C, health, slowstart, stick-table)

haproxy backend api balance leastconn option httpchk GET /health default-server inter 3s fall 3 rise 2 slowstart 10s server s1 10. 0. 0. 11:8080 check server s2 10. 0. 0. 12:8080 check stick-table type ip size 100k expire 30m http-request track-sc0 src rate limit per IP http-request deny deny_status 429 if { sc_http_req_rate(0) gt 50 }

13. 3 Envoy (P2C, outlier, retries, adaptive concurrency)

yaml load_assignment: {... }
lb_policy: LEAST_REQUEST least_request_lb_config: { choice_count: 2 }
outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s typed_extension_protocol_options:
envoy. extensions. filters. http. adaptive_concurrency. v3. AdaptiveConcurrency:
gradient_controller_config:
sample_aggregate_percentile: PERCENTILE_50 retry_policy:
retry_on: "5xx,reset,connect-failure"
num_retries: 2 per_try_timeout: 1s

13. 4 Kubernetes (Gateway API, weighted canary)

yaml apiVersion: gateway. networking. k8s. io/v1 kind: HTTPRoute spec:
rules:
- matches: [{ path: { type: PathPrefix, value: /api }}]
backendRefs:
- name: api-v1 weight: 90 port: 8080
- name: api-v2-canary weight: 10 port: 8080

14) Çek vərəqləri

LB/marşrutun buraxılmasından əvvəl

  • Alqoritm trafik növü üçün seçilmişdir (P2C/LC/CH).
  • Health-checks və ejection astanaları xüsusi.
  • Slow-start, warmup, connection-drain daxildir.
  • TLS/mTLS, HSTS, təhlükəsiz şifrələr; HTTP/2/3 lazım olduqda.
  • Sticky/CH yalnız lazım olduqda; TTL и fallback.
  • Rate-limit/burst, timeouts, retry-budget, adaptive concurrency.
  • Log/Traces: 'trace-id' atılır; PII maskalanması.
  • SLO/alerts p95/5xx/equation/queue-len.
  • Kanarya çəkisi + geri çəkilmə planı; böyük dəyişikliklər ilə shadow.

Ödəniş/komplayens marşrutları üçün

  • POST Idempotency (Idempotency-Key).
  • PSP arasında failover; same-method yoxlama.
  • Səhv kodları normallaşdırılır; ETA/müştərinin səbəbləri.

DB/Cache üçün

  • RW-split/replikalar; taymaut, şəbəkə retry.
  • Redis üçün CH/slot-hash; «isti açar» qorunması.
  • Gecikmələrin monitorinqi və replication-lag.

15) Keyfiyyət metrikası (minimum)

Latency p50/p95/p99 marşrutlar/metodlar üzrə.
Error rate 4xx/5xx, timeout/overflow.
Open/active connections, queue depth, retry count.
Outlier ejections və səbəbləri.
Sticky hit-ratio / cache hit-ratio.
GSLB: regional paylama, fayllar, PoP mövcudluğu.

16) Anti-nümunələr

Rezervasiya olmadan bir monolit LB.
Sticky sessiyaları «hər şeyə», vəziyyətin çıxarılması əvəzinə.
Qlobal sonsuz növbələr (problemi gizlədir, p99 böyüyür).
Jitter/büdcə olmadan retrai - «fırtına» sorğular.
Etibarlı proxy siyahısı olmadan 'X-Forwarded-For' güvəni.
Deplolarda drain yoxdur → WS/gRPC qırılmaları.
Avtoskeyldə uzun ömürlü konnektlərin uçotu.

17) iGaming spesifikasiyası

Zirvələr və turnirlər: kataloqlar/siyahılar üzrə mikro-cache (1-5 s), avtomatik skayl növbə ilə.
Canlı oyunlar/axınlar: LC uzun konnektlər üçün, ən yaxın PoP prioritet.
Ödənişlər: geo/valyuta/məbləğ/provayder üzrə marşrutlaşdırma; ciddi taymautlar və idempotentlik.
Məsuliyyətli oyun və uyğunluq: hətta deqradasiya zamanı limit/bloklama sorğularını qaçırmaq prioriteti (siyasətdə fail-open/close).

18) Tətbiq prosesi (4 sprint)

1. Trafik xəritəsi: protokollar, yüklər p95/p99, kritik marşrutlar.
2. LB konfiqurasiyası: alqoritmlər, health/outlier, TLS, limitlər/vaxtlar, observability.
3. GSLB/Edge: Anycast/GeoDNS, PoP-checks, regional məlumat siyasətləri.
4. Buraxılış strategiyası: canary/shadow, SLO-alertlər, avtoskeyl + drain, post-insident təhlili.

Yekun şparqalka

Trafik növü (P2C/LC/CH) və konnektin müddəti üçün alqoritmi seçin.
Axınları «sağlam» saxlayın: health-checks + outlier + slow-start + drain.
Pik yükü idarə edin: rate-limit, adaptive concurrency, uğursuz növbələr.
Qlobal mövcudluq və regionlara uyğunluq üçün GSLB/Anycast istifadə edin.
Müşahidə və SLO - məcburi; buraxılışlar - geri dönüş planı ilə canary/shadow vasitəsilə.
Mümkün olan yerlərdə - instansiyalardan sessiyanı və LB-dən yapışqanlığı çıxarın.

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.