GH GambleHub

מפסק מעגל והשפלה

Circuit Breaker (בראשי תיבות: CB) היא תבנית אבטחה המפריעה לקריאות לתלות מושחתת במיקום הכשל ולהגן על השירותים במעלה הזרם ועל המשתמש. פישוט מכוון של הפונקציונליות במקרה של חוסר משאבים או כשלים (למשל, החזרת נתונים מטופלים/לא שלמים, ביטול תכונות ”יקרות”) ללא השבתה מלאה.

המטרה העיקרית: לשמר את SLO וחוויית המשתמש באמצעות כשלים מבוקרים, במקום טיפות מפלות.

1) מתי ליישם

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

2) מצבי CB ומעברים

משולש קלאסי:

1. סגור - התנועה הולכת, מדדי שגיאה/תלאות נספרים.

2. שיחות פתוחות נדחות מיידית (אל-כשל) ו/או מועברות לנסיגה.

3. מספר מוגבל של בקשות ”ניסוי” לקבוע אם לסגור את המתג.

מפעיל פתיחה

שגיאה/זמן סף לכל חלון (לדוגמה, 50% מהN האחרון).
סף האחיזה (לדוגמה: p95> היעד).
מדיניות משולבת (שגיאות זמן חרגו).

להחזיק זמן (להתקרר)

קבוע (לדוגמה, 10-60 שניות) או הסתגלות (עלייה מעריכית עם פעולות חוזרות).

3) פסקי זמן, נסיגות וריגושים

פסקי זמן הם תמיד קצרים יותר מ-SLOs במעלה הזרם והם התפשטות המועד האחרון.
רטריי רק לפעולות אידמפוטנטיות; 1-2 ניסיונות מספיקים ברוב המקרים.
Backoff + jitter (ג 'יטר מלא) מונע גלים סינכרוניים של חזרות.
גידור (בקשות חילוף) - חסכוני ורק לקריאות ביקורתיות מאוד.

4) בידוד מחיצות ו ”נתיכים”

חיבור/פועל/תור בריכות לפי תחום וסוג התנועה (VIP, משימות רקע, API ציבורי).
כובע על מקביל לניתוחים ”יקרים”.
בקרת כניסה: כישלון קל לפני ביצוע כאשר התור מלא.

5) גיבוי ותרחישי השפלה

אפשרויות

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

כללים

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

6) עדיפות ועיצוב תנועה

תוכניות VIP/בתשלום - עדיפות גבוהה יותר/מכסות במקרה של מחסור.
מגבלות קצב וחנק להפחית את הנטל על תלויות מושחתות.
העומס: הפחתה רכה באיכות (למשל: פחות תוצאות, תמונות מקושטות) עד שהתייצב.

7) יכולת תצפית וסימון

מדדי CB

מצב (סגור/פתוח/חצי פתוח) ומשך זמן במצב.
נתח הכישלונות על ידי גורמים: CB-פתוח, פסק זמן, 5xx, מותש מחדש.
p95/p99 latency ”לפני” ו ”אחרי” המתג.
מספר/אחוז של בקשות באמצעות נסיגה.

איתור

אנוטציות של תוחלת: 'מעגל = נפתח', 'נפילה = מטמון', 'הודאה = נדחתה'.
מתאם עם גבולות (429/EoutLimit-), תורים וקליעי חיבור.

יומנים/Audits

סיבה לפתיחה/סגירה, סף, זיהוי תלות.

8) חוזים ופרוטוקול

HTTP

כשל מהיר: '503 שירות לא זמין' עם 'Retry-After' (או '429' בגבולות).
תוכן חלקי/מעופש: '200 '/' 206' עם מטאדטה מושפלת (לדוגמה, 'X-Direded: True').
מדיניות מטמון: ”מטמון-בקרה: מעופש-אם-טעות, מעופש-בזמן-ביטול”.

gRPC

”לא זמין”, ”דדליין _ חרג”, מגש מחדש סמנטיקה על ידי מדיניות לקוח/פרוקסי.
מועד אחרון/פסק זמן בהקשר הבקשה; להפיץ את המועד האחרון במורד השרשרת.

Idempotency

'Idempotency-Key' עבור פעולות פוסט, שכפול בגבול.

9) יישום טיפוסי (קוד פסאודו)

pseudo onRequest(req):
if circuit. isOpen(dep):
return fallbackOrFail(req)

with timeout(T):
try:
resp = call(dep, req)
circuit. recordSuccess(dep, latency=resp. latency)
return resp except TimeoutError or 5xx as e:
circuit. recordFailure(dep)
if circuit. shouldOpen(dep):
circuit. open(dep, coolDown=adaptive())
return fallbackOrFail(req)

דגימה חצי פתוחה

pseudo onTimer():
if circuit. state(dep) == OPEN and coolDownExpired():
circuit. toHalfOpen(dep)

onRequestHalfOpen(req):
if circuit. allowTrial (dep): # e.g. 1 try: call -> success => close catch: reopen with longer coolDown else:
return fallbackOrFail(req)

10) הגדרת סף

חלון תצפית: הזזה N שניות/שאילתות.
סף שגיאה: 20-50% בחלון (תלוי בפרופיל).
סף Latency: p95 nature SLO (לדוגמה, 300-500 ms); העודף נחשב כ ”שגיאה” עבור הסי-בי.
התקררות אדפטיבית: שנות ה-30/30 עם פעולות חוזרות ונשנות.

11) בדיקות ושיטות תוהו ובוהו

כאוס: הזרקת שגיאות איחור/תלות, התפרקות DNS, טיפת מנות.
ימי משחק: מתחיל ”פתיחה” של המתג על סביבה דמוית קרב, בדיקת הנסיגה.
Canary: אפשר מדיניות POC/Degradation תחילה עבור 1-5% מהתנועה.
תקציב SLO: לאפשר ניסויים עד תקצוב טעות מותש.

12) אינטגרציה עם עמידות מרובה

ניתן לאחסן את מצב ה ־ CB לכל דייר (עבור דיירים רועשים) או באופן גלובלי - בהתאם לפרופיל הטעינה.
הקצה את נתוני הגיבוי והמטמונים של "דייר _ id'.
סדרי עדיפויות/מכסות - בהתאם לתוכניות (אח "מים לא צריכים לסבול מהתנהגות סטרטר).

13) רשימת בדיקות לפני המכירה

[ ] זמן ומועדים הם מקצה אל קצה ועקביים.
[ ] המגשים מוגבלים, רק לפעולות אידמפוטנטיות, עם גיבוי + ג 'יטר.
[ ] סף CB מוצדק על ידי נתוני בדיקת עומס.
[ ] שבילי פלבק קיימים, מהירים ומאובטחים; מטמון מדיניות מוגדר.
[ ] בידוד מחיצה: בריכות נפרדות/תורים/גבולות.
[ ] Metrics/trails/looks flag degradation ומדינות CB.
[ תיעוד חוזה תגובה ] (HTTP/gRPC) עם כותרות/קודים לדוגמה.
[ ] תרחישי כאוס וימי משחק מתרחשים באופן קבוע; יש פנקס ריצות.

14) שגיאות אופייניות

אין פסקי זמן = נסיגות ”כל הדרך” ונפילות מפלים.
CB גלובלי יחיד במקום סלקטיבי (על ידי סוף נקודה/שיטה) - כשלים מיותרים.
Open Switch About Fallback Ackets במקום UX מושפל.
רטריי ללא ג 'יטר * סערות סינכרוניות של בקשות.
התקררות ארוכה עם כישלונות לטווח קצר או קצר מדי עם מדינות יציבה - ”פליפ-פלופ”.
היעדר מחיצה - ריקון בריכות משותפות ו ”חסימת ראש הקו”.

15) בחירת אסטרטגיה מהירה

קריאה בעלת חשיבות גבוהה: CB + cache של תגובות שפל + גידור (חסכוני).
רישומים/תשלומים: פסקי זמן מחמירים, מגשים מינימליים, מפתחות אידמפוטנטיות, אין נסיגה מלוכלכת.
CB עם סף אגרסיבי, התקררות אדפטיבית, חניקה קפדנית.
מיקרו-ארובות עומס פועמות: מחיצות, כיפות לכל מקורה, עדיפות אח "מים.

סיכום

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

Contact

צרו קשר

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

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

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

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

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