GH GambleHub

負載平衡

1)她在建築中的原因和位置

平衡器是客戶端和後端團隊之間的「旋轉柵門」。他的目標是:
  • 可用性(無單一故障點)、潛伏性(p95向下)、規模(水平)、安全性(TLS/WAF)、版本可管理性(金絲雀/藍綠色)。
應用層:
  • Edge/Global: Anycast, GSLB/GeoDNS, CDN/Edge-LB, DDoS.
  • L4(TCP/UDP):NLB,磁懸浮物,無終止代理。
  • L7(HTTP/2,gRPC,WebSocket,QUIC):路由路由/標頭/粘貼,kesh/壓縮/中繼。
  • 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):比較兩個隨機性-良好的速度/質量平衡。
重量RR/LC:金絲雀/「熱」指甲的重量。
一致性凍結(CH):無表會話粘性(cart,Redis)。
Maglev/Flow-hash:快速L3/L4分發,具有耐翻轉性。
Latency-aware:選擇滑動p50/p95。
EWMA:考慮延誤的歷史。

建議: L7的默認P2C(least-request);對於stateful/cash-consistent hash;для WS/gRPC — least-connections.

3)Apstrims健康: 檢查和「驅逐」

Health-checks: TCP, HTTP 200/匹配 тела, gRPC status;間距/時間間隔/錯誤閾值。
Outlier Ejection:「嘈雜」實例的自動排序(consecutive-5xx,success-rate-ejection)。
慢啟動和扭曲:新實例的軟輸入(體重逐漸增加)。
連接繪制:在關閉/丟棄時,活動連接的「鑿子」沒有懸崖。

4)會議和粘性(粘性)

Cookie-stickiness (L7): `Set-Cookie: lb=;SameSite;Secure`.

按鍵CH: 「hash (userId'sessionId'cartId)」。
IP-hash-僅在封閉的網絡上(NAT斷開)。
TTL粘性+fallback在noda處。
重要的是:盡量減少粘性需求→在實例外存儲狀態(Redis/DB/JWT)。

5)全球平衡(GTM/GSLB)

Anycast+健康問題:一個IP,流量到最近的PoP;自動捕獲器。
GeoDNS/Latency-DNS:地理/延遲響應。
區域集群:「居民數據」保留在該地區(GDPR);具有復制功能的區域間故障切換。
政治:地質塊,按帳戶/令牌排列「stikeregion」。

6)協議和功能

HTTP/2:多重性,優先事項;需要一個熟練的連接池。
gRPC:長壽流→ least-connections,激進的健康檢查。
WebSocket/SSE:連接粘性,大的idle-taymauts,TCP保持活力。
QUIC/HTTP/3:快速起步,抵禦損失;留意MTU/path-MTU。
TLS-termination/mTLS:在edge/L7-LB上磨碎;內部-mTLS/identity (SPIFFE)。

7)過載保護(超載控制)

Rate-limit: per-IP, per-key, per-route;burst+sustain.

Adaptive Concurrency (Envoy):同時查詢的動態極限。
Queue/Surge-buffer:隊列大小有限,誠實拒絕503。
Hedging/Parallel賽車:復制慢速查詢(僅偶數)。
Timeout預算:分開連接/閱讀/寫入。
Backpressure:「503+Retry-After」,帶有抖動的客戶指數回溯。
慢速保護:讀/寫定時器,最低速度。

8)發布和流量管理

Canary (weighted): 1–5–10–25–50–100% с guardrails (p95, 5xx, timeouts).

藍綠色:即時滾動,回滾-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:減少冷啟動。
能力規劃:目標「utilization 60-70%」在p95是正常的。

10)可觀察性和SLO

LB度量標準:RPS,p50/p95/p99,4xx/5xx,開放連接,queue-len,ejections,retries,hit-ratio kesha。
Tracing: 「traceparent /x-request-id」通過LB →服務→ DB。
Logs:結構,PII/PAN面具,與啟示錄共鳴。

沿途的SLO: 例如"latency p95 ≤ 300 ms","可用性≥ 99。9%`, `5xx ≤ 0.5%`.

Alerts:按偏差(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;Taymauts/Retryable errors。

Kafka/Redpanda:

通過分黨和消費者群體實現平衡;不要與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)算法。
  • 健康檢查和檢測閾值已配置。
  • Slow-start, warmup, connection-drein包括在內。
  • TLS/mTLS,HSTS,安全密碼;HTTP/2/3必要時。
  • Sticky/CH僅在需要時;TTL и fallback.
[] Rate-limit/burst, timeouts, retry-budget, adaptive concurrency.
  • Logi/Traces:「trace-id」滾動;PII掩蓋。
  • SLO/Alerta p95/5xx/elexes/queue-len。
  • 金絲雀重量+回滾計劃;大變化下的影子。

用於支付/合規路由

  • POST等效性(Idempotency-Key)。
  • PSP之間的失敗;same-method驗證。
  • 錯誤代碼已歸一化;每個客戶的ETA/原因。

用於DB/緩存

  • RW-split/復制件;Taymauts, network retry-y.
  • Redis的CH/slot-hash;防護「熱鍵」。
  • 監控延遲和復制記錄。

15)質量指標(最低限度)

Latency p50/p95/p99路線/方法。

Error rate 4xx/5xx, timeout/overflow.

Open/active connections, queue depth, retry count.

Outlier效果和原因。

Sticky hit-ratio / cache hit-ratio.

GSLB:區域分配,操縱器,PoP可用性。

16)反模式

一個沒有冗余的整體式LB。
Sticky會話是「全力以赴」,而不是帶走病情。
全局無限隊列(隱藏問題,融化p99)。
沒有jitter/預算的 retrai是查詢的「風暴」。
沒有受信任代理列表的「X-Forwarded-For」信任。
脫落時沒有drain → WS/gRPC懸崖。
在自動滑行中不考慮長壽命連接器。

17) iGaming特點

高峰和錦標賽:參考書/列表上的微型賽車(1-5 s),輪流自動滑冰。
Live games/strims: LC for long connects,優先考慮最近的PoP。
付款:地理/貨幣/金額/提供商路由;嚴格的taymouts和idemputity。
負責任的遊戲和合規性:即使降級,也優先跳過限制/鎖定請求(策略失效/關閉)。

18)實施過程(4沖刺)

1.交通地圖:協議,p95/p99負載,關鍵路線。
2.LB配置:算法,健康/outlier,TLS,限制/時間限制,觀察能力。
3.GSLB/Edge:Anycast/GeoDNS,PoP helscheck,區域數據策略。
4.發布策略:canary/shadow, SLO alerts, autoscale+drain,事後分析。

最終的spargalka

根據流量類型(P2C/LC/CH)和連接長度選擇算法。
保持apstrims「健康」:health-checks+ outlier+slow-start+ drain。
管理峰值負載:rate-limit, adaptive concurrency,有故障的隊列。
使用GSLB/Anycast實現全球可用性和按地區劃分的合規性。
可觀察性和SLO是強制性的;發行版-通過帶有回滾計劃的canary/shadow。
在可能的情況下-從實例中刪除會話時間,從LB中消除粘性。

Contact

與我們聯繫

如有任何問題或支援需求,歡迎隨時聯絡我們。我們隨時樂意提供協助!

開始整合

Email 為 必填。Telegram 或 WhatsApp 為 選填

您的姓名 選填
Email 選填
主旨 選填
訊息內容 選填
Telegram 選填
@
若您填寫 Telegram,我們將在 Email 之外,同步於 Telegram 回覆您。
WhatsApp 選填
格式:國碼 + 電話號碼(例如:+886XXXXXXXXX)。

按下此按鈕即表示您同意我們處理您的資料。