GH GambleHub

დატვირთვის დაბალანსება

1) რატომ და სად არის იგი არქიტექტურაში

დაბალანსება - „შემობრუნება“ კლიენტსა და ზურგჩანთების პარკს შორის. მისი მიზნები:
  • წვდომა (ერთი უკმარისობის წერტილის გარეშე), ლატენტობა (p95 ქვევით), მასშტაბი (ჰორიზონტალი), უსაფრთხოება (TLS/WAF), გამოშვებების მართვა (კანარი/ცისფერი-მწვანე).
განაცხადის ფენები:
  • Edge/Global: Anycast, GSLB/GeoDNS, CDN/Edge-LB, DDoS.
  • L4 (TCP/UDP): NLB, magles, მარიონეტული ტერმინალის გარეშე.
  • 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: წონა ჟანრის/„ ცხელი “ნოდებისთვის.
Consistent Hashing (CH): სხდომის წებოვანი მაგიდის გარეშე (ბარათი, Redis).
Maglev/Flow-hash: სწრაფი L3/L4 განაწილება flapping- ის წინააღმდეგობით.
Latency-aware: არჩევანი მოცურების p50/p95.
EWMA: ითვალისწინებს შეფერხებების ისტორიას.

რეკომენდაცია: ნაგულისხმევი P2C L7- ზე; stateful/kesh- ისთვის - consistent hash; для WS/gRPC — least-connections.

3) აფსტრიმების ჯანმრთელობა: შემოწმება და „გამოსახლება“

Health-checks: TCP, HTTP 200/匹配 тела, gRPC status; ინტერვალები/ტაიმაუტები/შეცდომების ბარიერი.
Outlier Ejection: „ხმაურიანი“ ინსტანციების (consecutive-5xx, success-rate-ejection) დასკვნა.
Slow-start & warmup: ახალი ინსტანციების რბილი შეყვანა (წონის თანდათანობითი ზრდა).
კავშირი დალაგება: ამოღებისას/დეპრესიისას - აქტიური კონექტორების „დაჭერა“ კლდის გარეშე.

4) სესიები და წებოვანა

Cookie-stickiness (L7): `Set-Cookie: lb=<id>; SameSite; Secure`.
CH გასაღები: 'hash (userID' sessionID 'cartID)'.
IP-hash - მხოლოდ დახურულ ქსელებში (NAT არღვევს).
TTL clypsions + fallback noda- ს ევიკუაციის დროს.
მნიშვნელოვანია: მინიმუმამდე დაიყვანეთ წებოვანი საჭიროება და შეინახეთ მდგომარეობა ინსტანციის გარეთ (Redis/DB/JWT).

5) გლობალური დაბალანსება (GTM/GSLB)

Anycast + health-probe: ერთი IP, ტრეფიკი უახლოეს PoP- ში; ავტომატური ფეილოვერი.
GeoDNS/Latency-DNS: პასუხი გეო/შეფერხებაზე.
რეგიონალური მტევანი: „რეზიდენტების მონაცემები“ რჩება რეგიონში (GDPR); ინტერრეგიონალური failover რეპლიკაციით.
პოლიტიკოსები: გეო-ბლოკები, „სტიკერეგიონი“ ანგარიშზე/ნიშანი.

6) ოქმები და მახასიათებლები

HTTP/2: მულტიპლექსი, პრიორიტეტები; საჭიროა კომპეტენტური კავშირი-აუზი აფსიდზე.
GRPC: გრძელი ნაკადები - გრძელი კავშირები, აგრესიული ჯანმრთელობის შემოწმებები.
WebSocket/SSE: connection წებოვანი, დიდი idle Timauts, TCP keep-alive.
QUIC/HTTP/3: სწრაფი დასაწყისი, დანაკარგისადმი წინააღმდეგობა; მიჰყევით MTU/path-MTU.
TLS-termination/mTLS: edge/L7-LB არგუმენტი; შიგნით - mTLS/იდენტურობა (SPIFFE).

7) გადატვირთვისგან დაცვა

Rate-limit: per-IP, per-key, per-route; burst+sustain.
Adaptive Concurrence (Envoy): ერთდროული მოთხოვნების დინამიური ზღვარი.
Queue/Surge-buffer: ხაზის შეზღუდული ზომა გულწრფელი უარი 503.
Hedging/Parallel racing: ნელი მოთხოვნების დუბლირება (მხოლოდ imempotent).
Timeout budget: ცალკეული კავშირი/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, ღია კავშირები, დედოფალი-ლენი, ejections, retries, hit-ratio კეში.
ტრეისი: 'traceparent/x-request-id' LB- ის საშუალებით - BD სერვისები.
ლოგოები: სტრუქტურული, 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; Taimauts/Retryable errors.
Kafka/Redpanda:
  • ბალანსი partitioning და consumer groups; არ იყოს დაბნეული HTTP-LB- სთან.
  • Object Storage (S3/MinIO): multi-region failover через GSLB/replication.

12) K8s და ღრუბლოვანი LB

სერვისი (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) ტრაფიკის ტიპისთვის.
  • ჯანმრთელობის შემოწმებები და ejection ბარიერები მორგებულია.
  • Slow-start, warmup, connection-drain შედის.
  • TLS/mTLS, HSTS, უსაფრთხო შიფრები; საჭიროების შემთხვევაში HTTP/2/3.
  • Sticky/CH მხოლოდ საჭიროების შემთხვევაში; TTL и fallback.
  • Rate-limit/burst, timeouts, retry-budget, adaptive concurrency.
  • logs/traces: 'trace-id' იჭრება; შენიღბვა PII.
  • SLO/ალერტები p95/5xx/ელექციებში/queue-len.
  • კანარის წონა + გამოტოვების გეგმა; shadow დიდი ცვლილებებით.

გადახდის/შესაბამისობის მარშრუტებისთვის

  • Idempotence POST (Idempotency-Key).
  • Failover PSP- ს შორის; same-method შემოწმება.

შეცდომის კოდი ნორმალიზებულია; ETA/კლიენტის მიზეზები.

BD/ქეში

  • RW-split/რეპლიკები; ტაიმაუტები, ქსელის რეტრი.
  • CH/slot-hash for Redis; „ცხელი გასაღებებისგან“ დაცვა.
  • შეფერხებების და შეფერხებების მონიტორინგი.

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).
Retrai გარეშე jitter/ბიუჯეტი - მოთხოვნების „ქარიშხალი“.
ნდობა "X-Forwarded-For 'სანდო მარიონეტული ჩამონათვალის გარეშე.
ხარვეზების არარსებობა არის WS/GRPC კლდეები.
არ არის აღრიცხული გრძელი სკეიტის კონექტორები.

17) iGaming სპეციფიკა

მწვერვალები და ტურნირები: მიკრო-საკეტი საცნობარო წიგნებზე/ჩამონათვალში (1-5 ს), მანქანების სკეიტი თავის მხრივ.
მსუბუქი თამაშები/ნაკადები: LC გრძელი კონექტორებისთვის, უახლოესი PoP- ის პრიორიტეტი.
გადახდები: გეო/ვალუტის მარშრუტიზაცია/თანხა/პროვაიდერი; მკაცრი ტაიმაუტები და იდემპოტენტობა.
პასუხისმგებელი თამაში და შესაბამისობა: პრიორიტეტი, რომ გამოტოვოთ ლიმიტები/საკეტები, თუნდაც დეგრადაციის დროს (fail-open/close პოლიტიკა).

18) განხორციელების პროცესი (4 სპრინტი)

1. ტრაფიკის რუკა: ოქმები, p95/p99 დატვირთვა, კრიტიკული მარშრუტები.
2. LB კონფიგურაცია: ალგორითმები, health/outlier, TLS, limites/Timauts, observability.
3. GSLB/Edge: Anycast/GeoDNS, PoP helscheks, რეგიონალური მონაცემთა პოლიტიკოსები.
4. გამოშვება სტრატეგია: canary/shadow, SLO ალერტები, skale + drain, პოსტ-ინციდენტის ანალიზი.

საბოლოო ყალბი ფურცელი

შეარჩიეთ ალგორითმი ტრაფიკის ტიპისთვის (P2C/LC/CH) და კონექტის ხანგრძლივობა.
შეინარჩუნეთ აფსიდი „ჯანმრთელი“: ჯანმრთელობის შემოწმებები + outlier + slow-start + drain.
აკონტროლეთ მწვერვალის დატვირთვა: rate-limit, adaptive concurrence, რიგები მარცხით.
გამოიყენეთ GSLB/Anycast რეგიონში გლობალური ხელმისაწვდომობისა და შესაბამისობისთვის.
დაკვირვება და SLO სავალდებულოა; გამოშვებები - canary/shadow- ით დაბრუნების გეგმით.
სადაც ეს შესაძლებელია, ამოიღეთ სესია ინსტანციებიდან და წებოვანი LB- დან.

Contact

დაგვიკავშირდით

დაგვიკავშირდით ნებისმიერი კითხვის ან მხარდაჭერისთვის.ჩვენ ყოველთვის მზად ვართ დაგეხმაროთ!

ინტეგრაციის დაწყება

Email — სავალდებულოა. Telegram ან WhatsApp — სურვილისამებრ.

თქვენი სახელი არასავალდებულო
Email არასავალდებულო
თემა არასავალდებულო
შეტყობინება არასავალდებულო
Telegram არასავალდებულო
@
თუ მიუთითებთ Telegram-ს — ვუპასუხებთ იქაც, დამატებით Email-ზე.
WhatsApp არასავალდებულო
ფორმატი: ქვეყნის კოდი და ნომერი (მაგალითად, +995XXXXXXXXX).

ღილაკზე დაჭერით თქვენ ეთანხმებით თქვენი მონაცემების დამუშავებას.