GH GambleHub

تعادل بار

1) چرا و کجا در معماری است

متعادل کننده یک «گردان» بین مشتری و ناوگان عقب است. اهداف آن عبارتند از:
  • در دسترس بودن (بدون یک نقطه شکست)، تاخیر (p95 پایین)، مقیاس (افقی)، امنیت (TLS/WAF)، قابلیت مدیریت انتشار (canary/blue-green).
لایه های برنامه:
  • لبه/جهانی: Anycast، GSLB/GeoDNS، CDN/Edge-LB، DDoS.
  • L4 (TCP/UDP): NLB، maglev، پروکسی بدون خاتمه.
  • L7 (HTTP/2، gRPC، WebSocket، QUIC): مسیر مسیریابی/هدر/تمبر، کش/فشرده سازی/retrays.
  • سطح داده: DB- прокси (PgBouncer/ProxySQL)، Redis Cluster/Consistent Hash، پارتیشن بندی کافکا.

2) تعادل مدل ها و الگوریتم ها

گرد رابین (RR): لباس ساده است.
حداقل اتصالات (LC): مناسب برای اتصالات طولانی (WS، gRPC).
حداقل درخواست/قدرت دو (P2C): مقایسه دو تصادفی یک تعادل سرعت/کیفیت خوب است.
وزن RR/LC: وزن برای گرههای قناری/داغ.
هشینگ مداوم (CH): چسبندگی جلسه بدون میز (سبد خرید، Redis).
Maglev/Flow-hash: توزیع L3/L4 سریع با مقاومت فلاپ.
تاخیر آگاه: انتخاب با کشویی p50/p95.
EWMA: تاریخچه تاخیرها را در نظر می گیرد.

توصیه: به طور پیش فرض P2C (حداقل درخواست) در L7 ؛ برای stateful/caches - هش سازگار ؛ для WS/gRPC - حداقل اتصالات.

3) سلامت بالادست: چک و «تخلیه»

چک های بهداشتی: TCP، HTTP 200/匹配 тела، وضعیت gRPC ؛ فواصل/زمان بندی/آستانه خطا.
خروجی Outlier: خروج خودکار از «پر سر و صدا» موارد (متوالی 5xx، موفقیت نرخ تخلیه).
شروع آهسته و گرم شدن: ورود نرم موارد جدید (رشد تدریجی وزن).
تخلیه اتصال: هنگامی که خاموش/تنظیم مجدد - «بالا بردن» اتصالات فعال بدون وقفه.

4) جلسات و چسبندگی (چسبندگی)

چسبندگی کوکی (L7): 'تنظیم کوکی: lb = <id>; همان سایت ؛ امن است.
CH by key: 'هش (شناسه کاربر' sessionId 'cartId)'.
IP-hash - فقط در شبکه های بسته (NAT breaks).
چسبندگی TTL + سقوط در اخراج گره.
مهم: به حداقل رساندن نیاز به چسبندگی → ذخیره دولت در خارج از نمونه (Redis/DB/JWT).

5) تعادل جهانی (GTM/GSLB)

Anycast + health-probe: یک IP، ترافیک به نزدیکترین PoP ؛ خستگی اتوماتیک.
GeoDNS/Latency-DNS: پاسخ Geo/Latency.
خوشه های منطقه ای: «داده های ساکن» در منطقه باقی می ماند (GDPR) ؛ شکست بین منطقه ای با تکرار.
سیاستمداران: جغرافیایی بلوک، «stickeregion» با حساب/نشانه.

6) پروتکل ها و ویژگی ها

HTTP/2: چندگانه، اولویت ها ؛ نیاز به یک اتصال استخر صالح برای بالادست.
gRPC: جریانهای طولانی مدت → حداقل اتصالات، چک های تهاجمی سلامت.
WebSocket/SSE: چسبندگی در اتصال، وقفه های بیکار بزرگ، TCP keep-alive.
QUIC/HTTP/3: شروع سریع، مقاومت در برابر از دست دادن ؛ نظارت بر MTU/پچ MTU.
TLS-termination/mTLS: خاتمه دادن به edge/L7-LB ؛ mTLS/هویت شفاهی (SPIFFE).

7) کنترل بیش از حد

محدودیت نرخ: در هر IP، در هر کلید، در هر مسیر ؛ پشت سر هم + حفظ.
Concurrency Adaptive (Envoy) - محدودیت دینامیکی درخواست های همزمان.
صف/بافر: اندازه صف محدود با رد عادلانه 503.
هجینگ/مسابقه موازی: تکرار نمایش داده شد آهسته (idempotent تنها).
بودجه اتمام وقت: اتصال/خواندن/نوشتن جداگانه.
فشار پشتی: '503 + Retry-After'، عقب نشینی های نمایشی مشتری jitter.
حفاظت آهسته لوریس: خواندن/نوشتن زمان، حداقل سرعت.

8) انتشار و مدیریت ترافیک

قناری (وزن): 1-5-10-25-50-100٪ گارد محافظ с (p95، 5xx، زمان بندی).
آبی سبز: سوئیچ فوری، برگشت - DNS/LB.

سایه/آینه: کپی درخواست بدون تاثیر بر پاسخ ؛ ماسک کردن PII

هدر/ادعای مسیریابی: "X-canary: 1" или "JWT. ادعا می کند. منطقه/نقش "

9) Autoscaling و زهکشی

HPA/ASG по CPU + RPS + p95 + عمق صف.
قلاب PreStop: صبر کنید تا اتصالات کامل شوند.
گرم استخر/به عنوان مثال استفاده مجدد: کوتاه شدن سرد شروع می شود.
برنامه ریزی ظرفیت: هدف «استفاده از 60-70٪» در p95 طبیعی است.

10) قابلیت مشاهده و SLO

معیارهای LB: RPS، p50/p95/p99، 4xx/5xx، اتصالات باز، صف لن، پرتاب، تلاش مجدد، کش نسبت به ضربه.

ردیابی: «traceparent/x-request-id» از طریق LB → خدمات

سیاهههای مربوط: ماسک های ساختاری، PII/PAN، همبستگی با بالادست.
SLO مسیر: به عنوان مثال، «latency p95 ≤ 300 ms»، در دسترس بودن 99 ≥. 9٪، 5xx ≤ 0. 5%`.
هشدارها: با انحراف (SLO سوختگی، افزایش تخلیه، رشد 5xx/timeout).

11) تعادل داده ها و انبارها

PostgreSQL/MySQL:
  • خواندن/نوشتن تقسیم (ProxySQL/pgpool) + خواندن کپی ؛ چسبنده TXN.
  • Failover: کپی همزمان برای RPO = 0 (گران تر).
ردیس:
  • Redis خوشه + هش اسلات ؛ برای جلسات - CH ؛ زمان بندی/خطاهای قابل برگشت.
کافکا/ردپاندا:
  • تعادل از طریق تقسیم و گروه های مصرف کننده ؛ نباید با HTTP-LB اشتباه گرفته شود.
  • ذخیره سازی شی (S3/MinIO): چند منطقه شکست через GSLB/تکرار.

12) LB های K8s و ابر

سرویس (ClusterIP/NodePort/LoadBalancer) - پایه L4.
API ورودی/دروازه - مسیریابی L7، وزن قناری، TLS.
AWS: NLB (L4، پهنای باند بالا)، ALB (L7، WAF، چسبنده، مسیریابی هدر).
GCP: پروکسی جهانی LB (L7/HTTP (S) с Anycast)، پروکسی TCP/UDP LB.
لاجورد: درب جلو (جهانی)، دروازه برنامه (L7)، متعادل کننده بار (L4).

13) نمونه های پیکربندی

13. 1 NGINX (L7، least_conn، چسبنده، قناری)

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، سلامت، آهسته، میز چوب)

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. ۳ نماینده (P2C، پرت، تلاش مجدد، همزمانی تطبیقی)

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 (دروازه API، قناری وزن)

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) برای نوع ترافیک.
  • بررسی های بهداشتی و آستانه تخلیه پیکربندی شده است.
  • آهسته شروع، گرم کردن، اتصال تخلیه فعال است.
  • TLS/mTLS، HSTS، رمزهای امن ؛ HTTP/2/3 در صورت لزوم
  • فقط در صورت لزوم چسبنده/CH ؛ TTL и عقب نشینی
  • نرخ محدود/پشت سر هم، وقفه، بودجه مجدد، همزمانی تطبیقی.
  • سیاهههای مربوط/مسیرهای پیاده روی: «ردیابی» پرتاب می شود ؛ ماسک کردن PII
  • SLO/هشدار توسط p95/5xx/انتخابات/صف لن.
  • وزن قناری + طرح برگشت ؛ سایه با تغییرات بزرگ

برای مسیرهای پرداخت/انطباق

  • Idempotency-کلید.
  • شکست بین PSPs ؛ همان روش چک کردن.
  • کدهای خطا نرمال می شوند ؛ ETA/دلایل هر مشتری.

برای DB/حافظه های پنهان

  • RW تقسیم/کپی ؛ وقفه، تلاش مجدد شبکه.
  • CH/اسلات هش برای REDIS ؛ حفاظت در برابر «کلید های داغ»
  • نظارت بر تاخیر و تکرار تاخیر.

15) معیارهای کیفیت (حداقل)

تاخیر p50/p95/p99 توسط مسیر/روش.
نرخ خطا 4xx/5xx، اتمام وقت/سرریز.
اتصالات باز/فعال، عمق صف، شمارش مجدد.
علل و عوامل خارجی.
مهم نسبت ضربه/کش نسبت ضربه.
GSLB: توزیع منطقه ای، faylovers، در دسترس بودن PoP.

16) ضد الگوهای

یک LB یکپارچه محافظت نشده

جلسات چسبنده «برای همه چیز»، به جای گرفتن دولت.
صف های نامحدود جهانی (پنهان کردن مشکل، رشد p99).
Retray بدون jitter/بودجه «طوفان» درخواست است.
Trust 'X-Forwarded-For بدون لیستی از پروکسی های قابل اعتماد.
عدم تخلیه در هنگام تخلیه → WS/gRPC شکسته می شود.
عدم در نظر گرفتن اتصالات طولانی مدت هنگام مقیاس خودکار.

17) ویژگی iGaming

قله ها و مسابقات: میکرو کش در دایرکتوری ها/لیست ها (1-5 ثانیه)، مقیاس خودکار به نوبه خود.
بازی های زنده/جریان: LC برای اتصالات طولانی، اولویت نزدیکترین PoP.
پرداخت: جغرافیایی/ارز/مقدار/ارائه دهنده مسیریابی ؛ زمانهای سخت و بی نظمی.
بازی مسئول و انطباق: اولویت به جست و خیز درخواست برای محدودیت/قفل حتی با تخریب (شکست باز/بستن توسط سیاست).

18) فرآیند پیاده سازی (4 سرعت)

1. نقشه ترافیک: پروتکل ها، بارهای p95/p99، مسیرهای بحرانی.
2. پیکربندی LB: الگوریتم ها، سلامت/outlier، TLS، محدودیت/زمان، مشاهده پذیری.
3. GSLB/Edge: Anycast/GeoDNS، پشتیبانی PoP، سیاست های داده های منطقه ای.
4. استراتژی انتشار: canary/shadow، هشدارهای SLO، مقیاس خودکار + تخلیه، تجزیه و تحلیل پس از حادثه.

برگه تقلب نهایی

یک الگوریتم برای نوع ترافیک (P2C/LC/CH) و مدت زمان اتصال انتخاب کنید.
بالادست خود را «سالم» نگه دارید: چک های بهداشتی + outlier + آهسته شروع + تخلیه.
مدیریت اوج بار: نرخ محدود، همزمانی تطبیقی، صف با شکست.
از GSLB/Anycast برای دسترسی جهانی و انطباق با منطقه استفاده کنید.
قابلیت مشاهده و SLO اجباری است. انتشار - از طریق canary/سایه با طرح برگشت.
در صورت امکان، جلسه را از موارد و چسبندگی از LB حذف کنید.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.