التشكيل وتوجيه حركة المرور
1) لماذا كل هذا
التشكيل والتوجيه - قاعدة للتوافر المُدار والوقت الذي يمكن التنبؤ به:- الاستقرار: لا تعطي «الجيران الصاخبين» لتسجيل القنوات.
- الإنصاف: الأولويات والحصص بين المستأجرين/الفئات.
- الكفاءة: نرسل الطلب إلى حيث تتم معالجته بشكل أسرع/أرخص.
- التحكم في التغيير: إطلاقات كناري/مرجحة بدون مخاطر.
- المدخرات: تحسين تكاليف الخروج/الخروج و CDN-cache-hitrate.
2) المفاهيم الأساسية
2. 1 تشكيل حركة المرور مقابل الشرطة
التشكيل - مواءمة حركة المرور عن طريق التخزين المؤقت وإرسال الحزم بالمعدل المستهدف (تنعيم «الانفجارات»).
الشرطة - «تعاقب» التجاوزات (إسقاط/وضع العلامات) دون التخزين المؤقت. أصعب، لكن أرخص.
2. 2 دروس وطوابير وتخصصات
قوائم الانتظار ذات الأولوية (PRIO)، WFQ/DRR (التخصيص العادل)، HTB (الحصص الهرمية)، CoDel/RED (التحكم في الكتلة العازلة)، ECN (إشارة عدم إسقاط الازدحام).
في L7 - «قوائم الانتظار» في شكل حدود RPS/الوصلات/البايت وحمامات الأولويات.
2. 3 خوارزميات الحد من
Token Bucket (n tokens added with rate r; طلب «ينفق» رموز k).
Leaky Bucket (تدفق خارجي ثابت ؛ جيد للتنعيم).
الحدود العالمية/المحلية: المحلية - السريعة، العالمية - العادلة (Redis/etcd/لكل مستأجر).
3) QoS لكل L3/L4
3. 1 DSCP/ToS وفئات الخدمة
حزم الملصقات حسب نوع المرور (تفاعلي، RPC خلفي، وظائف خلفية).
في مراكز البيانات، تفاوض على سياسة DSCP مع نسيج الشبكة/السحابة.
3. 2 Linux tc: HTB + fq_codel (صورة مصغرة)
bash
Clearing tc qdisc del dev eth0 root 2 >/dev/null true
Корневая HTB с 1Gbit tc qdisc add dev eth0 root handle 1: htb default 30 tc class add dev eth0 parent 1: classid 1:1 htb rate 1gbit
Класс latency-critical 200Mbit tc class add dev eth0 parent 1:1 classid 1:10 htb rate 200mbit ceil 1gbit prio 0 tc qdisc add dev eth0 parent 1:10 handle 10: fq_codel
Класс background 100Mbit tc class add dev eth0 parent 1:1 classid 1:30 htb rate 100mbit ceil 1gbit prio 2 tc qdisc add dev eth0 parent 1:30 handle 30: fq_codel
3. 3 ECN/RED/BBR
يقلل ECN من الانخفاضات في القمم ؛ يقيد RED/CoDel التخزين المؤقت.
غالبًا ما يقلل BBR (بدلاً من Cubic) من زمن انتظار p99، خاصة فوق طوابير WAN/الثقيلة.
4) توجيه L7 (HTTP/gRPC/WS)
4. 1 معايير التوجيه
المسارات/الطرق ('/api/v1/'، 'POST')، الرؤوس (إصدار العميل، أعلام الميزات، رأس الكناري)، ملفات تعريف الارتباط (A/B، لزج)، طوابع JWT (مستأجر/دور)، geo/ASN، نوافذ الوقت، الحمل (الكشف الخارجي).
البروتوكول: HTTP/2 (تعدد الإرسال)، HTTP/3/QUIC (مقاومة فقدان الحزم)، gRPC (تدفقات ثنائية البروم)، WebSocket (اتصالات طويلة الأمد).
4. 2 إطلاقات مقسمة/كناري مرجحة
الجذر 'v1: 95٪'، 'v2: 5٪'، زيادة تلقائية مع المقاييس «الخضراء».
القطع: الأخطاء/زمن الانتظار/الأعمال الثابتة.
مبعوث (رسم تخطيطي)
yaml route:
weighted_clusters:
clusters:
- name: svc-v1 weight: 95
- name: svc-v2 weight: 5
إستيو
yaml apiVersion: networking. istio. io/v1beta1 kind: VirtualService spec:
hosts: ["svc"]
http:
- route:
- destination: { host: svc, subset: v1, weight: 95 }
- destination: { host: svc, subset: v2, weight: 5 }
4. 3 جلسات لزجة وتجزئة متسقة
تقارب الجلسة حسب معرف ملف تعريف الارتباط/IP/JWT.
التجزئة المتسقة لمجموعات المخابئ، والخدمات القشرية، وبوابات الحد من الأسعار.
Nginx
nginx upstream api {
hash $cookie_user_id consistent;
server 10. 0. 0. 1;
server 10. 0. 0. 2;
}
4. 4 التوجيه الواعي بالأرض والكمون
GeoIP/ASN على الحافة (CDN/edge) → أقرب ملوثات عضوية ثابتة/منطقة.
الكمون الواعي: عينات صحية دورية + قياسات RTT → حركة المرور إلى المجموعة «الأسرع».
4. 5 الكشف الخارجي/كسر الدائرة
التخلص من الحالات «السيئة»: الحد الأقصى للطرد بالمائة، الأخطاء الأساسية/زمن الانتقال.
قاطع الدائرة: حدود على الاتصالات/RPS/في قوائم الانتظار.
5) تشكيل حركة المرور على مستوى البوابة/مكدس الهريس
5. 1 الحد من المعدل
المحلية (لكل جراب): رخيصة، ولكن ليست نسخة طبق الأصل عادلة.
Global (Redis/etcd): صلاحية المفتاح لكل مستأجر/واجهة برمجة التطبيقات.
السياسيون: لكل مسار، لكل طريقة، لكل مستأجر، انفجر.
المبعوث RLS (رسم تخطيطي)
yaml typed_per_filter_config:
envoy. filters. http. ratelimit:
"@type": type. googleapis. com/envoy. extensions. filters. http. ratelimit. v3. RateLimit domain: "api"
rate_limit_service:
grpc_service: { envoy_grpc: { cluster_name: rate_limit_cluster } }
5. ٢ الانصاف والأولويات
مجمعات الأولويات تفاعلية> النظام> الخلفية.
مكافئات DRR/WFQ على L7: الحصص/الأوزان لكل عميل/مستأجر.
5. 3 الحمل الزائد والحماية
سقيفة الأحمال: الفشل/التدهور عند تجاوز الميزانيات.
التزامن التكيفي: ديناميكيات الحدود من p50/p95/queue-len.
ضغط الخلف بجانب الخادم: 429/503 + Retry-After.
6) eBPF و CNI
6. 1 Cilium/eBPF
الترشيح/التوجيه في النواة: عدد أقل من المفاتيح السياقية وسياسات L3-L7 الرقيقة.
تجزئة ماجليف للتوزيع المستقر.
برامج eBPF لكل جراب QoS (خطافات TC/XDP).
6. 2 كاليكو/NetworkPolicies
سياسات الوصول إلى L3/L4، الفئات ذات الأولوية الأساسية، التكامل مع Kubernetes QoS (مضمون/Burstable/BestFound).
7) بوابات Edge/CDN وواجهة برمجة التطبيقات
CDN: مفاتيح ذاكرة التخزين المؤقت (استعلام التطبيع/الرؤوس)، إعادة التأهيل القديمة، حماية المنشأ (مرشحات حد المعدل/الروبوت).
بوابات واجهة برمجة التطبيقات: المصادقة، الحصص/خطط التعريفة (لكل مستهلك)، قيود SLA، التوجيه الجغرافي، إصدار API.
WAF: الترشيح عند الحافة حتى لا تضيع وحدة المعالجة المركزية للنواة.
8) الحافلات/البث غير المتزامن
كافكا/ناتس/بولسار: حصص المنتج/المستهلك، حد حجم الدفعة، الضغط الخلفي عبر التأخير.
توجيه الحدث: المستأجر/مفتاح الخصوصية، التقسيمات الوامضة للتوحيد.
مرة واحدة بالضبط ≈ «فعال مرة واحدة»: منتجو المعاملات + الكدمات الحمقاء.
9) المهلة، التراجع، التراجع
المهلة من البداية إلى النهاية: العميل <الوكيل <الخدمة (وليس العكس).
Retrai: رقم محدود مع تراجع أسي متوتر ولكن بدون عواصف.
فالفراغ إلزامي في حالات التراجع ؛ خلاف ذلك - SAGA/التعويض.
الطلبات التحوطية/الموازية (تحذير): تحسن p99، وتزيد من حركة المرور الإجمالية.
10) إمكانية الرصد و SLO
10. 1 مقاييس
، ، ، ، ، ، .
10. 2 التعقب
Scan Correlation-ID; علامة الامتدادات مع نوع السبب: "إعادة" تسليط "دواسة الوقود" قائمة انتظار ".
وصلات لإعادة/تحوطات لفهم التأثير على النظم الفرعية.
10. 3 سجلات/تقارير
ملخص القطرات/التخلص/الحدود، خرائط الحرارة حسب المسار.
لوحات منفصلة لمؤشر الإنصاف.
10. 4 أمثلة SLO
"p99 ≤ 300 مللي ثانية عند حمل 95 في المائة ؛ سقيفة ≤ 0. 1%; error_ratio ≤ 0. 5%».
«ما لا يقل عن 95٪ من الحصة مضمونة للفئة التفاعلية عند تحميلها بشكل زائد».
11) أمثلة التكوين
11. 1 Nginx: حد السعر + انفجار + تقسيم الكناري
nginx map $http_x_canary $canary { default 0; 1 1; }
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
upstream api_v1 { server 10. 0. 0. 1; }
upstream api_v2 { server 10. 0. 0. 2; }
server {
location /api/ {
limit_req zone=perip burst=20 nodelay;
if ($canary) { proxy_pass http://api_v2; break; }
proxy_next_upstream error timeout http_502 http_503 http_504;
proxy_pass http://api_v1;
}
}
11. 2 المبعوث: قاطع الدائرة + الكشف الخارجي
yaml circuit_breakers:
thresholds:
- priority: DEFAULT max_connections: 1000 max_pending_requests: 500 max_requests: 2000 outlier_detection:
consecutive_5xx: 5 interval: 10s max_ejection_percent: 50 base_ejection_time: 30s
11. 3 إستيو: مستأجر حصة (احتياطي عبر الملصق)
yaml apiVersion: security. istio. io/v1 kind: AuthorizationPolicy spec:
selector: { matchLabels: { app: api } }
rules:
- when:
- key: request. headers[x-tenant]
values: ["gold"]
Next - RateLimitPolicy in the limit provider with a large quota pool for "gold."
11. 4 تلميحات Kubernetes QoS
مضمون للقيعان الحرجة (الطلبات = الحدود).
PodPriority & Preemption: ستحل القيعان الحرجة اختناقات الخلفية.
Topology Spread Restructions: distribunation for sustainability (باللغة الإنجليزية).
12) الأنماط المضادة
حد العين العالمي → 429/مهلة زائفة للعملاء المهمين.
Retrai بدون رعشة/غباء → عاصفة.
ارتباك المهلات (العميل> الخادم) → التجميد و «العمل المزدوج».
مخابئ/قوائم انتظار مشتركة للحث والتجارب → تلوث البيانات.
«لزج دائمًا» بدون الفطرة السليمة → حمل غير متكافئ/عقدة ساخنة.
الكشف الخارجي المعاق → حالة فاسدة يفسد مقاييس الأسبوع.
13) قائمة التنفيذ المرجعية
- حركة المرور القطاعية: الفئات/المستأجرين/الطرق.
- تحديد الميزانيات المستهدفة إلى RPS/connections/bytes و p95/p99.
- تمكين حد السعر (المحلي + العالمي)، قاطع الدائرة، الكشف الخارجي.
- اضبط تقسيم الكناري + التراجع التلقائي عن المقاييس.
- سجل المهلات/عمليات إعادة التدوير مع تراجع أسي + نفض.
- تمكين ECN/BBR (عند الاقتضاء) fq_codel/HTB للخروج.
- برك/مخابئ/قوائم انتظار فردية للظل والتجارب.
- لوحات القيادة: مقاييس الحدود، قوائم الانتظار، زمن الوصول، الإنصاف.
- SLO وكتاب التشغيل: معايير التخلص/التراجع/التمكين.
14) الأسئلة الشائعة
س: ماذا تختار: التشكيل أم الشرطة ؟
ج: للمسارات المخصصة - التشكيل (مكافحة التسلية بدون قطرات). بالنسبة لفئات الخدمة «الخلفية «/» الكتلة «- الشرطة لحماية التدفقات الحرجة.
س: كيف تتجنب العواصف المتراجعة ؟
ج: التراجع المتقلب، حد المحاولات، الخصوصية، الخادم يطالب بـ «إعادة التجربة بعد»، الحصص العالمية.
س: لزج أم تجزئة ؟
ج: لزج - عندما تكون هناك حاجة إلى جلسة/يكون المخبأ محليًا للمستخدم ؛ التجزئة - عندما تحتاج إلى التوحيد واستقرار الشق.
س: ما الذي يعطي HTTP/3/QUIC ؟
ج: بدون أقفال TCP HOL، وتحمل أفضل للخسارة، واسترداد أسرع - يقلل بشكل كبير من ذيول p99/p999.
15) المجاميع
التشكيل الفعال والتوجيه L7 هو مجموعة متسقة من السياسات: الأولويات والحصص، والتوزيع العادل، والحدود الآمنة والتوجيه الذكي، مدعومة بقابلية الملاحظة و SLO. من خلال اتباع الممارسات الموصوفة (HTB/fq_codel/ECN في المستويات الدنيا والمبعوث/Istio/Nginx/eBPF في الأعلى)، ستحصل على ذيول زمن انتقال يمكن التنبؤ بها، ومقاومة للحمل الزائد والإطلاقات الخاضعة للرقابة والآمنة.