موازنة الحمل
1) لماذا وأين هو في الهندسة المعمارية
التوازن هو «باب دوار» بين العميل والأسطول الخلفي. وتتمثل أهدافه فيما يلي:- التوافر (بدون نقطة فشل واحدة)، والكمون (95 لأسفل)، والمقياس (الأفقي)، والأمن (TLS/WAF)، وإمكانية إدارة الإطلاق (الكناري/الأزرق الأخضر).
- Edge/Global: Anycast، GSLB/GeoDNS، CDN/Edge-LB، DDoS.
- L4 (TCP/UDP): NLB، maglev، الوكيل دون إنهاء.
- L7 (HTTP/2، gRPC، WebSocket، QUIC): مسار التوجيه/الرؤوس/الطوابع، المخبأ/الضغط/إعادة التصوير.
- مستوى البيانات: DB- прокси (PgBouncer/ProxySQL)، Redis Cluster/Conservated Hash، تقسيم كافكا.
2) موازنة النماذج والخوارزميات
Round-Robin (RR): زي موحد بسيط.
Lest Connections (LC): جيد للاتصالات الطويلة (WS، gRPC).
أقل طلب/قوة اثنين (P2C): مقارنة اثنين عشوائيين هو توازن جيد بين السرعة/الجودة.
RR/LC المرجح: أوزان الكناري/العقد الساخنة.
Hashing المتسق (CH): لزوجة الجلسة بدون طاولة (عربة، Redis).
Maglev/Flow-hash: توزيع L3/L4 سريع مع مقاومة رفرفة.
Latency-aware: Selection by sliding p50/p95.
EWMA: يأخذ في الاعتبار تاريخ التأخير.
التوصية: P2C افتراضي (أقل طلب) على L7 ؛ للحالة/المخابئ - التجزئة المتسقة ؛ для WS/gRPC - أقل الاتصالات.
3) صحة المنبع: الفحوصات و «عمليات الإخلاء»
الفحوص الصحية: برنامج التعاون الفني، 200/匹配 HTTP тела، حالة برنامج التعاون التقني ؛ الفترات/المهلات/عتبة الخطأ.
Outlier Ejection: الاستبعاد التلقائي للحالات «الصاخبة» (تسلسل-5xx، نجاح-معدل الطرد).
البداية البطيئة والإحماء: الدخول الناعم للحالات الجديدة (النمو التدريجي للوزن).
استنزاف الاتصال: عند إيقاف/إعادة الضبط - «زيادة» الاتصالات النشطة دون انقطاع.
4) الجلسات واللزوجة (اللزوجة)
لزوجة ملفات تعريف الارتباط (L7): "Set-Cookie: lb = <id> ؛ SameSite ؛ آمن '.
CH by key: 'hash (userId' sessionID 'cartId)'.
IP-hash - فقط في الشبكات المغلقة (فواصل NAT).
ثبات TTL + التراجع في الإخلاء العقدي.
مهم: تقليل الحاجة إلى اللزوجة → تخزين الدولة خارج الحالة (Redis/DB/JWT).
5) التوازن العالمي (GTM/GSLB)
Anycast + health-probe: IP واحد، حركة المرور إلى أقرب PoP ؛ التعب التلقائي.
GeoDNS/Latency-DNS: Geo/Latency Response.
المجموعات الإقليمية: بقاء «بيانات المقيمين» في المنطقة (اللائحة العامة لحماية البيانات) ؛ فشل أقاليمي مع تكرار.
السياسيون: الكتل الجغرافية، «stickeregion» بالحساب/الرمز.
6) البروتوكولات والخصائص
HTTP/2: تعدد الإرسال، الأولويات ؛ بحاجة إلى تجمع اتصال كفء للمنبع.
gRPC: تدفقات طويلة الأمد → وأقل اتصالات، وفحوصات صحية صارمة.
WebSocket/SSE: ثبات على الاتصال، مواعيد خمول كبيرة، إبقاء TCP على قيد الحياة.
QUIC/HTTP/3: البداية السريعة، ومقاومة الخسارة ؛ رصد MTU/patch-MTU.
إنهاء TLS/mTLS: ينتهي عند edge/L7-LB ؛ oral mTLS/identity (SPIFFE).
7) التحكم في الحمل الزائد
الحد الأقصى للمعدل: لكل IP، لكل مفتاح، لكل مسار ؛ انفجار + استدامة.
التزامن التكيفي (المبعوث) - الحد الدينامي للطلبات المتزامنة.
قائمة الانتظار/Surge-buffer: حجم طابور محدود مع رفض عادل 503.
التحوط/السباق المتوازي: تكرار الاستفسارات البطيئة (الخصوصية فقط).
ميزانية المهلة: اتصال/قراءة/كتابة منفصلة.
الضغط الخلفي: «503 + Retry-After»، التراجع الأسي للعميل الجيتر.
حماية اللوريس البطيء: اقرأ/اكتب المهلة، الحد الأدنى للسرعة.
8) الإصدارات وإدارة حركة المرور
الكناري (مرجح): 1-5-10-25-50-100٪ с حواجز الحماية (p95، 5xx، المهلات).
الأزرق الأخضر: مفتاح فوري، تراجع - DNS/LB.
الظل/المرآة: نسخة من الطلبات دون التأثير على الرد ؛ قناع PII.
الرأس/توجيه المطالبة: 'X-Canary: 1' или 'JWT. . المنطقة/الدور ".
9) القياس الذاتي والصرف
HPA/ASG по CPU + RPS + p95 + عمق قائمة الانتظار.
PreStop hook: انتظر حتى تكتمل الاتصالات.
إعادة استخدام حمام السباحة الدافئ/المثال: تقصير البدء البارد.
تخطيط القدرات: الهدف «الاستفادة من 60-70٪» عند 95 هو أمر طبيعي.
10) إمكانية الرصد و SLO
مقاييس LB: RPS، p50/p95/p99، 4xx/5xx، الوصلات المفتوحة، قائمة الانتظار، القذف، الإعادات، مخبأ نسبة الضرب.
التعقب: 'traceparent/x-request-id' من خلال خدمات → LB → قواعد البيانات.
جذوع الأشجار: أقنعة هيكلية PII/PAN، ارتباط مع المنبع.
الطريق SLO: على سبيل المثال، «الكمون p95 ≤ 300 ms'،» التوافر ≥ 99. 9٪ '،' 5xx ≤ 0. 5%`.
التنبيهات: عن طريق الانحرافات (معدل الحرق SLO، زيادة الطرد، نمو 5xx/المهلة).
11) موازنة البيانات والمخابئ
PostgreSQL/MySQL:- اقرأ/اكتب التقسيم (ProxySQL/pgpool) + نسخ طبق الأصل للقراءة ؛ sticky-txn.
- Failover: نسخة طبق الأصل متزامنة لـ RPO = 0 (أغلى).
- Redis Cluster + hash-slot; للدورات - لجنة حقوق الإنسان ؛ المهلة/الأخطاء القابلة للعودة.
- التوازن من خلال التقسيم ومجموعات المستهلكين ؛ لا ينبغي الخلط بينه وبين HTTP-LB.
- تخزين الكائنات (S3/MinIO): فشل متعدد المناطق через GSLB/تكرار.
12) LBs K8s والسحابة
الخدمة (ClusterIP/NodePort/LoadBalancer) - القاعدة L4.
الدخول/بوابة التطبيقات - توجيه L7، أوزان الكناري، TLS.
AWS: NLB (L4، عرض النطاق الترددي العالي)، ALB (L7، WAF، لزج، توجيه رأسي).
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، لزج، كناري)
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. 3 مبعوث (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/allerts by p95/5xx/election/quelue-len.
- أوزان الكناري + خطة التراجع ؛ ظل مع تغييرات كبيرة.
لطرق الدفع/الامتثال
- Idempotency-Key.
- الفشل بين PSPs ؛ نفس طريقة التحقق.
- يتم تطبيع رموز الأخطاء ؛ ETA/أسباب لكل عميل.
لـ DB/Caches
- تقسيم/نسخ طبق الأصل ؛ المهلة، إعادة تجربة الشبكة.
- CH/slot-hash for Redis ؛ الحماية من «المفاتيح الساخنة».
- رصد زمن الانتظار والتأخر في التكرار.
15) مقاييس الجودة (الحد الأدنى)
الكمون p50/p95/p99 حسب المسار/الطريقة.
معدل الخطأ 4xx/5xx، المهلة/الفائض.
اتصالات مفتوحة/نشطة، عمق قائمة الانتظار، إعادة العد.
الطردات والأسباب الخارجية.
نسبة إصابة لزجة/نسبة إصابة مخبأ.
GSLB: التوزيع الإقليمي، العشوائيات، توافر برنامج العمل.
16) الأنماط المضادة
واحد متجانس غير محمي LB.
جلسات لزجة «لكل شيء» بدلاً من إخراج الدولة.
قوائم الانتظار العالمية اللانهائية (تخفي المشكلة، تنمو p99).
Retrai بدون رعب/ميزانية هي «عاصفة» من الطلبات.
Trust' X-Forwed-For "بدون قائمة بالوكلاء الموثوق بهم.
نقص التصريف أثناء النضوب → فواصل WS/gRPC.
عدم مراعاة الروابط طويلة الأمد عند القياس الذاتي.
17) خصوصية iGaming
القمم والبطولات: ذاكرة تخزين مؤقت دقيقة على الأدلة/القوائم (1-5 ث)، بالمقياس التلقائي بدوره.
الألعاب/البث المباشر: LC للاتصالات الطويلة، أولوية أقرب PoP.
المدفوعات: التوجيه الجغرافي/العملة/المبلغ/مقدم الخدمة ؛ مهلة زمنية صارمة وحماقة.
اللعب المسؤول والامتثال: الأولوية لتخطي طلبات الحدود/الأقفال حتى مع التدهور (الفشل - الانفتاح/الإغلاق حسب السياسة).
18) عملية التنفيذ (4 سباقات سريعة)
1. خريطة المرور: البروتوكولات، p95/p99، الطرق الحرجة.
2. تكوين LB: الخوارزميات، الصحة/الخارج، TLS، الحدود/المهلات، القابلية للمراقبة.
3. GSLB/Edge: Anycast/GeoDNS، دعم برنامج العمل، سياسات البيانات الإقليمية.
4. استراتيجية الإصدار: كناري/ظل، تنبيهات SLO، مقياس تلقائي + تصريف، تحليل ما بعد الحادث.
ورقة الغش النهائية
اختر خوارزمية لنوع حركة المرور (P2C/LC/CH) ومدة الاتصال.
حافظ على صحة المنبع: الفحوصات الصحية + الاستبعاد + البداية البطيئة + التصريف.
إدارة ذروة الحمل: حد السعر، وتزامن التكيف، وقوائم الانتظار مع الفشل.
استخدام GSLB/Anycast للتوافر والامتثال العالميين حسب المنطقة.
القابلية للملاحظة ومكتب المدعي العام إلزاميان ؛ الإصدارات - عبر الكناري/الظل مع خطة التراجع.
حيثما أمكن، قم بإزالة الجلسة من الحالات والالتصاق من LB.