GH GambleHub

Жүктеме теңгерімі

1) Ол архитектурада неліктен және қайда

Теңгеруші - клиент пен бэкендтер паркі арасындағы «турникет». Оның мақсаттары:
  • қолжетімділік (бірыңғай істен шығу нүктесінсіз), жасырындылық (p95 төмен), масштаб (көлденең), қауіпсіздік (TLS/WAF), релиздердің басқарылуы (canary/blue-green).
Қолдану қабаттары:
  • Edge/Global: Anycast, GSLB/GeoDNS, CDN/Edge-LB, DDoS.
  • L4 (TCP/UDP): NLB, маглев, терминациясыз прокси.
  • L7 (HTTP/2, gRPC, WebSocket, QUIC): жол/тақырып/таңбалар, кэш/қысу/ретра бойынша бағыттау.
  • Data-tier: DB-прокси (PgBouncer/ProxySQL), Redis Cluster/Consistent Hash, Kafka partitioning.

2) Теңгерім модельдері мен алгоритмдері

Round-Robin (RR): қарапайым біркелкі.
Least Connections (LC): ұзын коннектілер үшін жақсы (WS, gRPC).
Least Request/Power-of-Two (P2C): екі кездейсоқ салыстыру - жақсы тепе-теңдік жылдамдығы/сапасы.
Weighted RR/LC: canary/« ыстық »түйіндер үшін салмақтар.
Consistent Hashing (CH): кестесіз сессиялық жабысқақтық (cart, Redis).
Maglev/Flow-hash: жылдам L3/L4-флаппингке төзімді дистрибуция.
Latency-aware: жылжымалы p50/p95 бойынша таңдау.
EWMA: кідіріс тарихын ескереді.

Ұсыным: әдепкі P2C (least-request) L7; stateful/кэш үшін - consistent hash; для WS/gRPC — least-connections.

3) Апстрим денсаулығы: тексеру және «шығару»

Health-checks: TCP, HTTP 200/匹配 тела, gRPC status; интервалдар/таймауттар/қате шегі.
Outlier Ejection: «шулы» инстанцияларды автоматты түрде жою (consecutive-5xx, success-rate-ejection).
Slow-start & warmup: жаңа инстанцияларды жұмсақ енгізу (салмақтың біртіндеп өсуі).
Connection draining: off/deploe кезінде - белсенді коннектілерді үзіліссіз «толтыру».

4) Сессиялар және жабысқақтық (stickiness)

Cookie-stickiness (L7): `Set-Cookie: lb=<id>; SameSite; Secure`.
'hash (userId' sessionId 'cartId)' кілті бойынша CH.
IP-hash - тек жабық желілерде (NAT бұзады).
TTL жабысқақтық + нод эвикциясы кезінде fallback.
Маңызды: жабысқақтық қажеттілігін барынша азайтыңыз → жағдайды инстанциядан тыс сақтаңыз (Redis/DB/JWT).

5) Жаһандық теңгерім (GTM/GSLB)

Anycast + health-probe: бір IP, жақын орналасқан PoP трафигі; автоматты фейловер.
GeoDNS/Latency-DNS: гео/кідіріс бойынша жауап.
Өңірлік кластерлер: «резиденттердің деректері» өңірде қалады (GDPR); репликаланған аймақаралық failover.
Саясат: гео-блоктар, аккаунт/токен бойынша «стикерегион».

6) Хаттамалар мен ерекшеліктер

HTTP/2: мультиплекс, басымдықтар; апстримге сауатты connection-pool керек.
gRPC: ұзақ өмір сүретін ағымдар → least-connections, агрессивті health-checks.
WebSocket/SSE: коннект жабысқақтығы, үлкен idle-таймауттар, TCP keep-alive.
QUIC/HTTP/3: жылдам бастау, шығынға төзімділік; MTU/патх-MTU-ны қадағалаңыз.
TLS-termination/mTLS: edge/L7-LB терминдеу; ішке - mTLS/identity (SPIFFE).

7) Шамадан тыс жүктемеден қорғау (overload control)

Rate-limit: per-IP, per-key, per-route; burst+sustain.
Adaptive Concurrency (Envoy): бір уақыттағы сұраулардың динамикалық шегі.
Queue/Surge-buffer: 503 әділ бас тарту кезегінің шектеулі өлшемі.
Hedging/Parallel racing: баяу сұрауларды қайталау (тек демпотенттік).
Timeout budget: бөлек connect/read/write.
Backpressure: '503 + Retry-After', джиттермен клиенттік экспоненциалдық ретрайлер.
Slow-loris қорғанысы: оқу/жазу уақыты, ең төменгі жылдамдық.

8) Релиздер және трафик-менеджмент

Canary (weighted): 1–5–10–25–50–100% с guardrails (p95, 5xx, timeouts).
Blue-Green: жедел свитч, кері қайтару - DNS/LB.
Shadow/Mirror: жауап беруге әсер етпейтін сұраулардың көшірмесі; PII бүркемелеу.
Header/Claim-routing: `X-Canary: 1` или `JWT. claims. region/role`.

9) Автоскейлинг және дренаж

HPA/ASG по CPU+RPS+p95+queue-depth.
PreStop hook: коннектілердің аяқталуын күту.
Warm pool/instance reuse: суық басталуларды қысқарту.
Capacity planning: мақсатты 'utilization 60-70%' кезінде p95 қалыпты.

10) Бақылау және SLO

LB өлшемдері: RPS, p50/p95/p99, 4xx/5xx, open-connections, queue-len, ejections, retries, hit-ratio кэш.
Трейсинг: 'traceparent/x-request-id' арқылы LB → сервистер → БД.
Логтар: құрылымдық, PII/PAN маскалар, апстриммен кореляция.
Маршрут бойынша SLO: мысалы, 'latency p95 ≤ 300 ms', 'availability ≥ 99. 9%`, `5xx ≤ 0. 5%`.
Алерталар: ауытқулар бойынша (burn-rate SLO, ejection шарықтауы, өсуі 5xx/timeout).

11) Деректер мен кэшті теңгерімдеу

PostgreSQL/MySQL:
  • Read/Write split (ProxySQL/pgpool) + read-replicas; sticky-txn.
  • Failover: RPO = 0 үшін синхронды реплика (қымбат).
Redis:
  • Redis Cluster + hash-slot; сессиялар үшін - CH; таймауттар/Retryable errors.
Kafka/Redpanda:
  • Partitioning және consumer-groups арқылы теңгерім; HTTP-LB-мен шатастырмаңыз.
  • Object Storage (S3/MinIO): multi-region failover через GSLB/replication.

12) K8s және бұлтты LB

Service (ClusterIP/NodePort/LoadBalancer) - базалық L4.
Ingress/Gateway API - L7-маршруттау, канарейка салмағы, TLS.
AWS: NLB (L4, жоғары өткізу), 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) Конфигурация мысалдары

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) Чек парақтары

LB/бағытты шығару алдында

  • Алгоритм трафик түріне таңдалған (P2C/LC/CH).
  • Health-checks және ejection табалдырықтары теңшелген.
  • Slow-start, warmup, connection-drain қосылған.
  • TLS/mTLS, HSTS, қауіпсіз шифрлар; қажет болған жағдайда HTTP/2/3.
  • Егер талап етілсе ғана Sticky/CH; TTL и fallback.
  • Rate-limit/burst, timeouts, retry-budget, adaptive concurrency.
  • Логи/трейстер: 'trace-id' лақтырылады; PII бүркемелеу.
  • SLO/p95/5xx/элекция/queue-len бойынша алерталар.
  • Канареялық салмақтар + қайтару жоспары; үлкен өзгерістер кезінде shadow.

Төлем/комплаенс-маршруттары үшін

  • POST ұқсастығы (Idempotency-Key).
  • Failover PSP арасында; same-method тексеру.
  • Қате кодтары қалыпқа келтірілген; ETA/клиентке арналған себептер.

ДБ/кэш үшін

  • RW-split/репликалары; таймауттар, желілік retry-тер.
  • Redis үшін CH/slot-hash; «ыстық кілттерден» қорғау.
  • Кідірістер мен replication-lag мониторингі.

15) Сапа өлшемдері (минимум)

Latency p50/p95/p99 маршруттар/әдістер бойынша.
Error rate 4xx/5xx, timeout/overflow.
Open/active connections, queue depth, retry count.
Outlier ejections және себептері.
Sticky hit-ratio / cache hit-ratio.
GSLB: өңірлік бөлу, фейловерлер, PoP қолжетімділігі.

16) Қарсы үлгілер

Резервтеусіз бір монолитті LB.
Күйді шығарудың орнына Sticky-сессиялары «бәріне».
Жаһандық шексіз кезектер (мәселені жасырады, p99 өсіреді).
Джиттерсіз/бюджетсіз ретраилер - сұраулардың «дауылы».
Сенімді прокси тізімінсіз 'X-Forwarded-For' деген сенім.
Деплояларда drain болмауы → WS/gRPC үзіктері.
Автоскейлде long-lived коннектілерін есепке алмау.

17) iGaming-ерекшелігі

Шыңдар мен турнирлер: анықтамалықтарда/листингтерде micro-cache (1-5 с), авто-скейл кезекпен.
Лайв ойындары/стримдері: LC ұзақ коннектілер үшін, жақын PoP басымдығы.
Төлемдер: гео/валюта/сома/провайдер бойынша маршруттау; қатаң таймауттар мен икемділік.
Жауапты ойын және комплаенс: деградация кезінде де (саясат бойынша fail-open/close) лимиттер/блоктау сұрауларын өткізіп жіберу басымдығы.

18) Енгізу процесі (4 спринт)

1. Трафик картасы: хаттамалар, жүктемелер p95/p99, күрделі бағыттар.
2. LB конфигурациясы: алгоритмдер, health/outlier, TLS, лимиттер/таймауттар, observability.
3. GSLB/Edge: Anycast/GeoDNS, PoP-хелсчектер, өңірлік деректер саясаты.
4. Релиз-стратегиясы: canary/shadow, SLO-алерты, автоскейл + drain, инциденттен кейінгі талдау.

Қорытынды шпаргалка

Трафик түріне (P2C/LC/CH) және коннектінің ұзақтығына арналған алгоритмді таңдаңыз.
Апстримді «дені сау» ұстаңыз: health-checks + outlier + slow-start + drain.
Ең жоғары жүктемені басқарыңыз: rate-limit, adaptive concurrency, істен шыққан кезектер.
Жаһандық қолжетімділік және өңірлер бойынша комплаенс үшін GSLB/Anycast пайдаланыңыз.
Бақылау және SLO - міндетті; релиздер - қайтару жоспары бар canary/shadow арқылы.
Мүмкін болған жерде - сессиялықты инстанциялардан және жабысқақтықты LB-ден алыңыз.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.