Logo GH

עיצוב וניתוב תנועה

1) מדוע כל זה

עיצוב וניתוב - בסיס של זמינות מנוהלת ואיחור צפוי:
  • יציבות: אל תתנו ל ”שכנים רועשים” להבקיע ערוצים.
  • סדרי עדיפויות ומכסות בין דיירים/כיתות.
  • יעילות: אנו שולחים את הבקשה למקום בו היא מעובדת מהר/זול יותר.
  • שינוי שליטה: הקנרית/משוקללת משחררת ללא סיכון.
  • חיסכון: אופטימיזציה של עלויות יציאה והיטראט CDN-מטמון.

2) מושגים בסיסיים

2. 1 עיצוב תנועה נגד שיטור

מעצב - מיישר את התנועה על ידי חציצה ושליחת מנות בקצב היעד (מחליק ”פיצוצים”).
שיטור - ”מעניש” מופרז (טיפה/סימון) ללא חציצה. קשה יותר, אבל זול יותר.

2. כיתות 2, תורים ודיסציפלינות

תורים עדיפים (Priority Queues), CODEL/RED (Buffer Block Control), ECN (No Drop Congestion Signal).
בתורים L7 - ”תורים” בצורת גבולות RPS/חיבורים/בייטים ובריכות עדיפות.

2. 3 אלגוריתמים מגבילים

Token Bucket (n אסימונים שנוספו בשיעור r; בקשה ”מבלה” k אסימונים).
דליפה באקט (זרם חוץ קבוע; טוב להחליק).
גבולות גלובליים/מקומיים: מקומי - מהיר, גלובלי - הוגן (Redis/etcd/per-derent).

3) QOS לכל L3/L4

3. 1 DSCP/TOS ושיעורי שירות

חבילות תווית לפי סוג התנועה (אינטראקטיבי, backend RPC, עבודות רקע).
במרכזי נתונים, משא ומתן על מדיניות DSCP עם רשת אריג/ענן.

3. 2 לינוקס 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 latency, במיוחד על גבי תורים כבדים של WAN.

4) ניתוב L7 (HTTP/gRPC/WS)

4. קריטריון ניתוב 1

מסלולים/שיטות ('/api/v1/', 'POST'), כותרות (גרסת לקוח, דגלים, כותרת קנרית), עוגיות (A/B, דביקות), בולי JWT (דייר/תפקיד), Geo/ASN, חלונות זמן, טעינה (זיהוי חוץ).
פרוטוקול: HTTP/2 (multiplexing), HTTP/3/QUIC (התנגדות לאובדן פאק), gRPC (bi-di streams), WebSocket (קשרים ארוכי ימים).

4. 2 פיצול משוקלל/שחרור כנרית

שורש 'v1: 95%', 'v2: 5%', עלייה אוטומטית עם מדדים ”ירוקים”.
חיתוך: שגיאות/latency/business invariants.

שליח (סקיצה)

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 מגביל

מקומי (לכל תרמיל): זול, אבל לא הוגן בין העתק.
גלובל (Redis/etcd): תוקף לכל דייר/מפתח API.
פוליטיקאים: לכל מסלול, לכל שיטה, לכל דייר, התפוצץ.

שליח 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. 2 הגינות וסדרי עדיפויות

בריכות עדיפות הן אינטראקטיביות> רקע מערכת>.
DR/WFQ מקביל על L7: מכסות/משקולות ללקוח/דייר.

5. 3 עומס יתר והגנה

מחסן העומס: כישלון/הידרדרות כשהתקציבים מוגזמים.
קונקורנסי אדפטיבי: דינמיקה של גבולות מ-p50/p95/תור לן.
תרמיל גב בצד השרת: 429/503 + Retry-After.

6) רמת eBPF ו ־ CNI

6. 1 Cilium/eBPF

סינון/ניתוב בגרעין: פחות מתגי הקשר, מדיניות L3-L7 דקה.
חשיש מגלב להפצה יציבה.
תוכנות EBPF לקווי QOS (TC/XDP).

6. 2 מדיניות קליקו/NetworkName

מדיניות גישה L3/L4, כיתות עדיפות בסיסיות, אינטגרציה עם Kubernetes QOS (מובטח/Burstable/Butstable/Extreme).

7) שערי קצה/CDN ו ־ API

CDN: מפתחות מטמון (normalization query/headers), מעופש-בזמן-חידוש, הגנה על מקורות (rate limit/bot filters).
שערי API: אימות, מכסות/תוכניות תעריפים (לצרכן), הגבלות SLA, ניתוב גיאו, גרסת API.
סינון בקצה כדי לא לבזבז את המעבד של הליבה.

8) אוטובוסים אסינכרונים/הזרמה

קפקא/NATS/Pulsar: מכסות יצרן/צרכן, מגבלת גודל אצווה, תרמיל גב דרך לג.
ניתוב אירועים: דייר/מפתח אידמפוטנטיות, מחיצות מהבהבות עבור אחידות.
בדיוק פעם אחת ”יעיל פעם אחת”: יצרנים עסקיים + חבורות אידמפוטנטיות.

9) פסקי זמן, נסיגות, גיבוי

פסקי זמן מקצה לקצה: לקוח <proxy <שירות (לא להיפך).
מספר מוגבל עם גיבוי מעריכי מפוקפק אבל ללא סערות.
אידמפוטנטיות היא חובה בנסיגה; אחרת - סאגה/פיצוי.
בקשות מגודרות/מקבילות (זהירות): משפרות את p99, מגבירות את התנועה הכוללת.

10) יכולת תצפית ו ־ SLO

10. 1 מדדים

, , , , .

כיתות: מחלקה = אינטראקטיביתמערכתרקע, דייר, מסלול.

10. 2 איתור

סרוק קורלציה-זיהוי; הסימן משתרע עם הטיפוס: ”נסה לשפוך את תור המצערת”.
קישורים למגשים/שיחים כדי להבין את ההשפעה על תת-מערכות.

10. 3 יומנים/דוחות

סיכום של טיפות/שפיכת/גבולות, מפות חום לפי מסלול.
לוחות נפרדים לאינדקס הגינות.

10. 4 דוגמאות של SLO

"p99 בלום 300 ms בעומס 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 רמזי QOS של קוברנטס

מובטח לתחתונים קריטיים (בקשות = גבולות).
PodePriority & Prevement: תחתונים קריטיים יזיזו צוואר תחתון רקע.
טופולוגיה מפזרת אילוצים: איזורים לקיימות.

12) אנטי דפוסים

הגבלת העין הגלובלית * 429/פסק זמן שגוי ללקוחות חשובים.
רטריי בלי ג 'יטר/אידמפוטנטיות * סערה.
בלבול של פסקי זמן (לקוח> שרת) * מקפיא ו ”עבודה כפולה”.
מטמונים/תורים נפוצים עבור פרוד וניסויים = זיהום נתונים.
”תמיד דביק” בלי שכל ישר.
זיהוי יוצא מנוטרל * מקרה רקוב מקלקל את המדדים של השבוע.

13) רשימת מימושים

[ ] תנועה: כיתות/דיירים/נתיבים.
[ ] הגדרת תקציבי היעד ל-RPS/חיבורים/בייטים ו-p95/p99.
[ ] אפשר הגבלת קצב (מקומי + גלובלי), מפסק חשמלי, גילוי יוצא.
[ ] הגדרת פיצול כנרית + גלגול אוטומטי על מדדים.
[ ] להקליט פסקי זמן/מגשים עם גיבוי מעריכי + jitter.
[ ] לאפשר ECN/BBR (היכן שניתן ליישם) fq_codel/HTB ליציאה.
[ ] בריכות בודדות/מטמונים/תורים לצל וניסויים.
[ ] לוחות מחוונים: מדדים של גבולות, תורים, איחור, הגינות.
[ ] SLO ו-Runbook: sheding/rollback/אפשר קריטריונים.

14) FAQ

ש: מה לבחור: עיצוב או שיטור? ‏

א. עבור נתיבים מותאמים אישית - עיצוב (אנטי-חייזרים ללא טיפות). לשיעורי שירות ”רקע ”/” נפח ”- שיטור כדי להגן על זרימות קריטיות.

קיו: כיצד אתה נמנע מסופות נסיגה? ‏

A: Gitterized Backoff, Limite of Nessions, idempotency, server מעלה את 'Retry-After', מכסות גלובליות.

קיו: דביק או חשיש?
A: דביק - כאשר נדרשת הפעלה/המטמון הוא מקומי למשתמש; כשצריך אחידות ויציבות של שריד.

קיו: מה נותן HTTP/3/QUIC? ‏

א. ללא מנעולי TCP HOL, סבילות איבוד טובה יותר, התאוששות מהירה יותר - מפחיתה משמעותית את זנבות p99/p999.

15) סיכומים

עיצוב יעיל וניתוב L7 הוא מערכת עקבית של מדיניות: סדרי עדיפויות ומכסות, הפצה הוגנת, גבולות בטוחים וניתוב חכם, מגובה על ידי תצפית ו-SLO. על ידי ביצוע השיטות המתוארות (HTB/fq_codel/ECN ברמות הנמוכות יותר ו-Transboy/Istio/Nginx/eBPF בחלק העליון), תקבלו זנבות תלויים צפויים, התנגדות לעומס יתר ושחרורים מבוקרים ובטוחים.

Contact

צרו קשר

פנו אלינו בכל שאלה או צורך בתמיכה.אנחנו תמיד כאן כדי לעזור.

התחלת אינטגרציה

Email הוא חובה. Telegram או WhatsApp — אופציונליים.

השם שלכם לא חובה
Email לא חובה
נושא לא חובה
הודעה לא חובה
Telegram לא חובה
@
אם תציינו Telegram — נענה גם שם, בנוסף ל-Email.
WhatsApp לא חובה
פורמט: קידומת מדינה ומספר (לדוגמה, +972XXXXXXXXX).

בלחיצה על הכפתור אתם מסכימים לעיבוד הנתונים שלכם.