GH GambleHub

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

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

צרו קשר

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

Telegram
@Gamble_GC
התחלת אינטגרציה

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

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

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