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,我们也会在 Telegram 回复您。
WhatsApp 可选
格式:+国家代码 + 号码(例如:+86XXXXXXXXX)。

点击按钮即表示您同意数据处理。