GH GambleHub

Yük dengeleme

1) Mimaride neden ve nerede

Dengeleyici, müşteri ile arka uç filosu arasında bir "turnike'dir. Hedefleri şunlardır:
  • Kullanılabilirlik (tek bir hata noktası olmadan), gecikme (p95 aşağı), ölçek (yatay), güvenlik (TLS/WAF), yayın yönetilebilirliği (kanarya/mavi-yeşil).
Uygulama katmanları:
  • Kenar/Global: Anycast, GSLB/GeoDNS, CDN/Edge-LB, DDoS.
  • L4 (TCP/UDP): NLB, maglev, sonlandırılmadan proxy.
  • L7 (HTTP/2, gRPC, WebSocket, QUIC): yol yönlendirme/başlıklar/damgalar, önbellek/sıkıştırma/geri alma.
  • Veri katmanı: DB- прокси (PgBouncer/ProxySQL), Redis Cluster/Tutarlı Hash, Kafka bölümleme.

2) Dengeleme modelleri ve algoritmalar

Yuvarlak Robin (RR): basit üniforma.
En Az Bağlantı (LC): Uzun bağlantılar için iyi (WS, gRPC).
En Az İstek/İkinin Gücü (P2C): İki rastgele olanı karşılaştırmak iyi bir hız/kalite dengesidir.
Ağırlıklı RR/LC: kanarya/sıcak düğümler için ağırlıklar.
Tutarlı Karma (CH): Masasız oturum yapışkanlığı (sepet, Redis).
Maglev/Flow-hash: Kanat çırpma direnci ile hızlı L3/L4 dağılımı.
Gecikmeye duyarlı: P50/p95 kayarak seçim.
EWMA: Gecikmelerin geçmişini dikkate alır.

Öneri: L7'de varsayılan olarak P2C (en az istek); Durum bilgisi/önbellekler için - tutarlı hash; для WS/gRPC - en az bağlantı.

3) Yukarı akış sağlığı: kontroller ve "tahliyeler"

Sağlık kontrolleri: TCP, HTTP 200/匹配 тела, gRPC durumu; aralıklar/zaman aşımları/hata eşiği.
Outlier Ejection: "Gürültülü" örneklerin otomatik olarak dışlanması (sıralı-5xx, başarı-oranı-ejection).
Yavaş başlatma ve ısınma: yeni örneklerin yumuşak girişi (kademeli ağırlık artışı).
Bağlantı boşaltma: kapatıldığında/sıfırlandığında - kesintisiz olarak aktif bağlantıların "doldurulması".

4) Oturumlar ve yapışkanlık (yapışkanlık)

Çerez yapışkanlığı (L7): 'Set-Cookie: lb = <id>; SameSite; Güvenli '.
Anahtarla CH: 'hash (userId' sessionId 'cartId)'.
IP-hash - sadece kapalı ağlarda (NAT sonları).
Düğüm tahliyesinde TTL yapışkanlık + geri dönüş.
Önemli: yapışkanlık ihtiyacını en aza indirin - örneğin dışındaki durumu saklayın (Redis/DB/JWT).

5) Küresel Dengeleme (GTM/GSLB)

Anycast + sağlık probu: bir IP, en yakın PoP'ye trafik; Otomatik feilover.
GeoDNS/Latency-DNS: Geo/Latency Yanıtı.
Bölgesel kümeler: "Yerleşik veriler" bölgede kalır (GDPR); Çoğaltma ile bölgeler arası yük devretme.
Politikacılar: Coğrafi bloklar, hesap/token ile "stickeregion".

6) Protokoller ve özellikler

HTTP/2: multiplex, öncelikler; Yukarı akış için yetkin bir bağlantı havuzu gerekir.
gRPC: Uzun ömürlü akışlar - en az bağlantı, agresif sağlık kontrolleri.
WebSocket/SSE: bağlantıda yapışkanlık, büyük boşta kalma süreleri, TCP keep-alive.
QUIC/HTTP/3: hızlı başlangıç, kayba karşı direnç; Monitör MTU/patch-MTU.
TLS-termination/mTLS: edge/L7-LB üzerinde sonlandır; Sözlü mTLS/kimlik (SPIFFE).

7) Aşırı yük kontrolü

Hız sınırı: IP başına, anahtar başına, rota başına; burst + sustain.
Uyarlanabilir Eşzamanlılık (Elçi) - eşzamanlı isteklerin dinamik sınırı.
Kuyruk/Dalgalanma arabelleği: adil reddetme ile sınırlı kuyruk boyutu 503.
Hedging/Paralel yarış: Yavaş sorguları çoğaltma (sadece idempotent).
Zaman aşımı bütçesi: ayrı bağlantı/okuma/yazma.
Backpressure: '503 + Retry-After', jitter istemci üstel retreas.
Yavaş loris koruması: okuma/yazma zaman aşımları, minimum hız.

8) Bültenler ve Trafik Yönetimi

Kanarya (ağırlıklı): 1-5-10-25-50-100 % с korkuluklar (p95, 5xx, zaman aşımları).
Mavi-Yeşil: anında geçiş, geri alma - DNS/LB.
Gölge/Ayna: Yanıtı etkilemeden isteklerin kopyası; PII maskeleme.
Başlık/Talep-yönlendirme: 'X-Kanarya: 1' или 'JWT. talepler. bölge/rol '.

9) Autoscaling ve drenaj

HPA/ASG по CPU + RPS + p95 + kuyruk derinliği.
PreStop kancası: Bağlantıların tamamlanmasını bekleyin.
Sıcak havuz/örnek yeniden kullanımı: soğuk başlangıçları kısaltmak.
Kapasite planlaması: p95'te '%60-70 kullanım' hedefi normaldir.

10) Gözlemlenebilirlik ve SLO

LB metrikleri: RPS, p50/p95/p99, 4xx/5xx, open-connections, queue-len, ejections, retries, hit-ratio cache.
Tracing: 'Traceparent/x-request-id' LB üzerinden - hizmetler - veritabanları.
Loglar: yapısal, PII/PAN maskeleri, yukarı akış ile korelasyon.
Route SLO: örneğin, 'latency p95 ≤ 300 ms', 'availability ≥ 99. %9 ',' 5xx ≤ 0. 5%`.
Uyarılar: sapmalarla (yanma hızı SLO, ejeksiyon dalgalanması, 5xx/timeout büyümesi).

11) Verileri ve önbellekleri dengelemek

PostgreSQL/MySQL:
  • Okuma/Yazma bölünmesi (ProxySQL/pgpool) + okuma kopyaları; Yapışkan-txn.
  • Yük devretme: RPO için senkron kopya = 0 (daha pahalı).
Redis:
  • Redis Cluster + hash-slot; oturumlar için - CH; Zaman aşımları/Geri çekilebilir hatalar.
Kafka/Redpanda:
  • Bölümleme ve tüketici grupları aracılığıyla denge; HTTP-LB ile karıştırılmamalıdır.
  • Nesne Depolama (S3/MinIO): GSLB/çoğaltma через çok bölgeli yük aktarımı.

12) K8s ve bulut LB'leri

Servis (ClusterIP/NodePort/LoadBalancer) - temel L4.
Giriş/Ağ Geçidi API - L7 yönlendirme, kanarya ağırlıkları, TLS.
AWS: NLB (L4, yüksek bant genişliği), ALB (L7, WAF, yapışkan, başlık yönlendirme).
GCP: Global LB (L7/HTTP (S) с Anycast), TCP/UDP proxy LB.
Azure: Ön Kapı (global), Uygulama Ağ Geçidi (L7), Yük Dengeleyici (L4).

13) Yapılandırma örnekleri

13. 1 NGINX (L7, least_conn, yapışkan, kanarya)

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, sağlık, yavaş başlangıç, 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 Elçi (P2C, aykırı, yeniden çalışır, uyarlanabilir eşzamanlılık)

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, ağırlıklı kanarya)

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) Kontrol listeleri

LB/rota serbest bırakılmadan önce

  • Trafik türü için algoritma seçildi (P2C/LC/CH).
  • Sağlık kontrolleri ve ejeksiyon eşikleri yapılandırılmıştır.
  • Yavaş başlatma, ısınma, bağlantı boşaltma etkin.
  • TLS/mTLS, HSTS, güvenli şifreler; Gerekirse HTTP/2/3.
  • Yapışkan/CH sadece gerekirse; TTL и geri dönüş.
  • Hız sınırı/patlama, zaman aşımları, yeniden deneme bütçesi, uyarlanabilir eşzamanlılık.
  • Günlükler/izler: 'trace-id' atılır; PII maskeleme.
  • SLO/p95/5xx/elections/queue-len tarafından uyarılar.
  • Kanarya ağırlıkları + geri alma planı; büyük değişikliklerle gölge.

Ödeme/uyum yolları için

  • Idempotency-Key.
  • PSP'ler arasında yük devri; Aynı yöntem kontrolleri.
  • Hata kodları normalleştirilir; ETA/müşteri başına nedenler.

DB/Önbellekler için

  • RW-split/replikalar; Zaman aşımları, ağ yeniden deneme.
  • Redis için CH/slot-hash; "kısayol tuşlarına" karşı koruma.
  • Gecikme izleme ve çoğaltma-gecikme.

15) Kalite metrikleri (minimum)

Gecikme p50/p95/p99 rota/yöntemle.
Hata oranı 4xx/5xx, zaman aşımı/taşma.
Açık/aktif bağlantılar, kuyruk derinliği, yeniden deneme sayısı.
Aykırı atımlar ve nedenler.
Yapışkan vuruş oranı/önbellek vuruş oranı.
GSLB: bölgesel dağıtım, faylovers, PoP kullanılabilirliği.

16) Anti-desenler

Bir korumasız monolitik LB.
Devleti ortadan kaldırmak yerine'her şey için "yapışkan oturumlar.
Genel sonsuz kuyruklar (sorunu gizleyin, p99'u büyütün).
Jitter/bütçe olmadan Retrai taleplerin bir "fırtına'dır.
Güvenilir proxy'lerin bir listesi olmadan 'X-Forwarded-For'a güvenin.
Tükenme sırasında drenaj eksikliği - WS/gRPC sonları.
Otomatik ölçeklendirirken uzun ömürlü bağlantıları hesaba katmamak.

17) iGaming özgüllüğü

Zirveler ve turnuvalar: Dizinlerde/listelerde mikro önbellek (1-5 s), sırayla otomatik ölçek.
Canlı oyunlar/akışlar: Uzun bağlantılar için LC, en yakın PoP'un önceliği.
Ödemeler: geo/currency/amount/provider routing; Katı zaman aşımları ve idempotency.
Sorumlu oyun ve uyumluluk: Bozulma olsa bile sınırlar/kilitler için istekleri atlamak için öncelik (politikaya göre fail-open/close).

18) Uygulama süreci (4 sprint)

1. Trafik haritası: protokoller, p95/p99 yükleri, kritik yollar.
2. LB konfigürasyonu: algoritmalar, sağlık/aykırı, TLS, limitler/zaman aşımları, gözlemlenebilirlik.
3. GSLB/Edge: Anycast/GeoDNS, PoP desteği, bölgesel veri politikaları.
4. Serbest bırakma stratejisi: kanarya/gölge, SLO uyarıları, autoscale + drenaj, olay sonrası analiz.

Son hile sayfası

Trafik türü (P2C/LC/CH) ve bağlantı süresi için bir algoritma seçin.
Upstream'inizi "sağlıklı" tutun: sağlık kontrolleri + outlier + slow-start + drain.
En yüksek yükü yönetin: hız sınırı, uyarlanabilir eşzamanlılık, arızalı kuyruklar.
Bölgelere göre global kullanılabilirlik ve uyumluluk için GSLB/Anycast kullanın.
Gözlemlenebilirlik ve SLO zorunludur; Geri alma planı ile kanarya/gölge yoluyla bültenleri.
Mümkünse, örneklerden oturumu ve LB'den yapışkanlığı kaldırın.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.