תפעול ותלות שירות ניהול Ac.Name
תלות שירות
1) למה אתה צריך את זה
כל פלטפורמת ייצור היא ספירה: משתמשים * Edge/API * domain services * turns/streams # DB/caches * ספקים חיצוניים (תשלומים, KYC, ספקי משחקים). שגיאה על קצה אחד של הגרף לעתים קרובות ”הליכה” ברחבי הרשת: עיכובים גדלים, מגשים מופעלים, תורים סתומים, כשלים מפלים. ניהול התלות מפחית את ”רדיוס הפיצוץ” ומשחרר חומר צפוי.
מטרות:- ראה את הגרף המלא של שיחות ולהבין מי תלוי במי.
- למנוע כישלונות מפל ו ”מגש מחדש סערה”.
- התוכנית משתחררת בהתבסס על תאימות וקידום SLO.
- מצא את הסיבה האמיתית מהר יותר.
2) סוגי תלויות
Synchronous (RPC: REST/gRPC/GRPC/GRPQL): קישוריות קשה על ידי latency/זמינות. אנחנו צריכים פסקי זמן, מפסקים, תקציב מגש מחדש.
Asynchronous (Event/Stream: Kafka/Rabbit/Pulsar): קישוריות יציבה יותר, אבל יש lag/backlog וסמנטיקה מסירה (לפחות פעם אחת, אידמפוטנטיות).
אחסון (DB/Cache/Object Store): משאבים משותפים = תוכן, גבולות חיבור/IOPS, פינוי, שכפול.
ספקים חיצוניים (PSP/KYC/game speckers): מכסות, קריאות אגרה, חלונות שירות, SLAs חוקיים.
הפעלה (שחרורים, פישפלאגים, תצורות): תלות עקיפה באמצעות הגדרות, סודות, סכימות.
3) קטלוג שירות וגרפי תלות
מה אנו מתקנים בספריה (קטלוג מאחורי הקלעים/שירות/CMDB):- בעלים (Squad/Chat/on-call rota), ריפו, סביבה, חפצים.
- חוזי API (OpenAPI/ASyncAPI), גרסאות, תאימות (אחורה/קדימה).
- תלות כלפי חוץ (במעלה הזרם/במורד הזרם) עם סוג (סינכרון/אסינק), ביקורתיות, ציפיות SLO.
- פסק זמן/תקציב נסיגה, מפסקים, בריכות מחיצה.
- נתונים על מכסות ומגבלות של אינטגרציות חיצוניות.
- 'service: תשלומים-api&fost
- במעלה הזרם: ”פרופיל משתמש” (סינכרון), ”סיכון-ציון” (async).
- במורד הזרם: ”PSP-X” (סנכרון, Cultaculate2k RPS), ”ספר חשבונות” (async).
- p99 300ms, 99. 9% למעלה.
- פסקי זמן: 200 ms עד 'PSP-X', 150 ms כדי ”פרופיל משתמש”.
- 2 עם עיכוב מעריכי, ג 'יטר.
- שובר: פתוח עבור 30 ב 5% שגיאות/10.
4) תעמולה ו ”תקציב לאטה”
עם שרשרת שיחות סינכרוניות, ה-SLO הכולל נוצר מסכום העיכובים והסתברויות הכישלון.
עקרונות:- התקציב של הבקשה מחולק מלמעלה למטה: front-end SLO 500 ms _ Edge 50 ms FI 150 ms domain services 200 ms ach description 100 ms.
- פסק זמן ”קצר יותר מאשר ב”: למתקשר יש פסק זמן קטן מהזמן הפנימי הכולל כך שהמשאבים מתעדכנים, וקריאות זומבים אינן מצטברות.
- רטריי רק עבור קודים מאובטחים/יוצאים מן הכלל ועם ג 'יטר; אין מגשים מחדש לפסקי זמן של צוואר בקבוק (המכונה ”סערה”).
5) חוזים ואינטרפרטציה
API versioning: SemVer לחוזים; שינויים תואמים לאחור דרך שדות ”אופציונליים”, תרחיבי סכימה; מחיקה - רק דרך ”תקופת הפחת”.
חוזים המונעים על ידי צרכנים (CDC): בדיקות צרכניות (Pact-like) רצות נגד ספק ב-CI; שחרור חסום אם לא מתאים.
תרשים (Async): גרסה של נושאים/אירועים, אבולוציה של סכמות (Avro/JSON-Schema), יכול לקרוא/יכול לכתוב-חדש מדיניות.
6) דפוסי יציבות הנדסיים
פסקי זמן: הפרדת SLA עסקים מציפיות טכניות; כל חיבור יוצא הוא פסק זמן מפורש.
Reteries + backoff + jiter: לא יותר מ-2-3 ניסיונות, בהינתן idempotence.
מפסק מעגל: ”ירידה מהירה” בירידה במורד הזרם; חצי משפט פתוח.
מחיצה (בידוד בריכה): עבור נחלים שונים - בריכות נפרדות של נחלים/רצפות/קשרים.
מגבלת קצב/דלי דליפה: כדי לא להרוג במורד הזרם בפסגות.
idempotency & defuplication: request/message level idempotency key; סבא לייטר ותור נסיגה.
מטמון וחסידים: מקומי/מבוזר מטמונים, סטטוסים מעופשים בזמן-ביטול, השפלת תוכן.
outbound:
psp-x:
timeout_ms: 200 retries: 2 retry_on: [5xx, connect_error]
backoff: exponential jitter: true circuit_breaker:
error_rate_threshold: 0. 05 window_s: 10 open_s: 30 pool: dedicated-psp (max_conns: 200)
7) יכולת תצפית של תלויות
עקבות מבוזרות (TRECECID, מטען): ראה את נתיב הבקשה באמצעות קישורים; משתרע לשיחות יוצאות עם 'תגי עמיתים. שירות, נסיון, פסק זמן.
"outbound _ latency _ p99", "outbound _ iror _ rate", "open _ circle", "retry _ count'," תור _ lag ".
- SLO ומפת שירות מקודדת צבעים מוטעית.
- ”תלות בבעיות” בשבוע האחרון.
- ”רדיוס פיצוץ” - רשימת שירותים שיושפעו מנפילתו של אקס.
- לוגי קורלציה: כללו את ”trace _ id'/” span _ id' בלוגים.
8) ניהול שחרור תלות מודע
שחרור הספק חסום אם בדיקות המרכז לבקרת מחלות הן אדומות.
הכללה הדרגתית (phicheflags): שדות חדשים/קורות חיים = = עבור 1% מהצרכנים = 10% 100%.
הקנריים משחררים: אנחנו בודקים תלויות מפתח ו ”תקציב אחסון” על נתח התנועה.
תאימות לתוכניות: המפיק כותב vNew, הצרכנים קוראים vold/vNew; אחרי המעבר - ”אוסף אשפה” של שדות ישנים.
9) תקריות והסלמה בטור
אנו מגדירים את ”האשם האמיתי”: התראה-קורלציה - אם ה-PSP-X התדרדר, איננו מזמנים את כל ”שיח התשלומים”, אלא את בעל האינטגרציה.
Eutodegradation: Phicheflag ”מצב מינימלי” (פחות נקודות קצה כבדות, חבילות מקושטות, מבטל תכונות לא קריטיות).
שמרו מפני מפלים: הגבילו את המקבילות, כבו רטראס על ענף חם, פתחו את המפסק מראש (פתוח מראש).
- אבחון: אילו לוחות מחוונים/מדדים, כיצד לבדוק מכסות/גבולות.
- פעולות: להפחית RPS, לעבור לספק גיבוי, לאפשר באופן זמני תגובות מטמון.
- גלגול חוזר ואימות: החזר פרמטרים, ודא שהנורמה היא p95/p99 וקצב שגיאה.
10) מטריצת ביקורת תלות
הערכת כל קישור לאורך הצירים: כללים:- עבור ”קריטי” - תנאי כפול, פורעים, בריכות בודדות, מבחני כאוס.
- ל ”גבוה” - לפחות השפלה ו ”הכפתור הירוק” לכבות את התכונה.
- עבור ”בינוני/נמוך” - מגש מחדש גבולות ותקציב התור.
11) תהליך: ממלאי לתפעול
1. מיפוי גרף: לאסוף שיחות אמיתיות (עקבות) + תלות הצהרתית מהספרייה.
2. הקצאת בעלים: לכל שירות ושילוב חיצוני - אחראי בכוננות.
3. הגדר סל "ד ותקציבים: ליקויים/שגיאות, פסקי זמן/מגשים/בריכות.
4. הגדר חוזים: OpenAPI/ASyncAPI, סכימות ו CDC.
5. אפשר תבניות יציבות: פסקי זמן/רטריז/מעגל/מחיצה.
6. הגדרת לוחות מחוונים והתראות לכל תלות.
7. התקן שערי שחרור: חסימה על ידי CDC/תאימות/כנרית.
8. ימי משחק רגילים: ניסויים כאוס בקצוות מפתח נופלים.
9. פוסט-מורטמים עם התמקדות בתקשורת: מה חיזק את המפל, איך לצמצם את הרדיוס.
12) התראות על התמכרות (רעיונות שלטון)
זרמים סינכרוניים במורד הזרם:- 3% עבור 10 מטר אזהרה;”> 5% עבור 5m” = קריטי.
- ' bout _ p99 _ latency' to =” X”> SLO1. 3 על 10 מטר אזהרה.
- ' circuit _ open 'to =” X ”= = 1 ל-1 מטר עמוד לבעל האינטגרציה.
- ' retry _ rate 'to =” X ”> baseline2 FOR 5M '+' outbound _ rps> 0 'ac סכנת סערה.
- ' consumer _ lag' נושא =” Y”? growth> סף 10 '+ hpa' at max '_ cultle shell.
- 'usage _ coota' ספק = "PSP-X"> 90% חלון "אזהרה, נתיבי החלפה אוטומטית.
13) אנטי דפוסים
"מאגר זרם משותף אחד לכל הנחלים. ”סה” כ: חסימת ראש הקו. לחלק בריכות.
אין פסקי זמן/עם נסיגות אינסופיות. אז סערה נולדה.
מגשים עיוורים של ניתוחים לא אידמפוטנטים. שכפול רשומות/הימורים.
מוסתר ”DB משותף” כנקודת קישוריות. תחרות חזקה וחסימות.
גרסת API משתנה ללא CDC ותוכנית פחת. לתפוס נפילות המוניות.
יכולת תצפית רק על ידי שירותים, לא על ידי קשרים. לא ניתן לראות היכן השרשרת נשברת.
14) לוחות מחוונים: מינימום סט
מפת שירות: מפה אינטראקטיבית של שירותים עם מדדי קצה (latency/irror/volume).
Optstream/Downstream Overview: עבור בעל השירות - תלויות נכנסות (מי קורא), יוצאות (מי קורא), ”בעיות עליונות”.
קישור כרטיס ספציפי: p50/p95/p99, שגיאות כיתה, אחוז מפסק פתוח, מגשים מחדש, מאגר חיבור, מכסות/עלות.
שחרר הקשר: הערות של שחרור/פישפלאגים על גרפי תלות.
15) רשימת מימושים
[ ] ספריית שירותים עם בעלים וחוזים (OpenAPI/ASyncAPI).
[ ] גרף מלא של תלויות מעקבות (עדכון יומי).
[ ] SLO על ידי שירות ו ”תקציבי לאטה” במורד השרשרת.
[ ] פסקי זמן מפורשים, ג 'יטר נסוג, מפסקים, בידוד מחיצה.
[ ] בדיקות במרכז לבקרת מחלות כשער שחרור.
[ ] לוחות מחוונים לכל תלות וכרטיס שירות.
[ ] התראות על קצוות + דיכוי על ידי סיבה שורשית.
[ ] ימי משחק: ספק/אשכול/הורדת נושא ובדיקת השפלה.
[ תוכנית ההשפלה ]: אילו מאפיינים אנחנו מכבים, אילו מטמונים אנחנו מפעילים.
[ ] בדיקות שלאחר המוות רגילות עם פעולות להפחתת הקישוריות.
16) ניהול תלות באיכות KPIs
תלות MTR: התאוששות צלעות חציונית.
מדד רדיוס פיצוץ: המספר הממוצע של שירותים מושפעים כאשר אחד נופל.
Coupling Score: הפרופורציה של תלות סנכרון בין כולם; מגמה כלפי מטה.
שיעור המעבר של המרכז לבקרת מחלות:% משוחררים ללא הפרות חוזה.
נסה מחדש סערות/חודש יעד = 0.
עלות של שיחות חיצוניות: עלות של שיחות חיצוניות לכל 1k RPS (ראה אפקט של מטמון/חסידים).
17) התחלה מהירה (ברירות מחדל)
פסקי זמן: 70-80% מתקציב הקישור; מבקש פסק זמן גבוה <סכום פנימי.
רטריי: מקסימום 2, רק על אידמפוטנט 5xx/רשת, עם backoff + jitter.
Breaker: סף של 5% שגיאות ב10 S, פתוח = 30 S, דגימות חצי פתוחות.
מחיצה: בריכות ייעודיות/מגבלות חיבור למורד הזרם.
מנדטורי לכל הכניסות הציבוריות ונושאים.
Async-העדפה: היכן שאפשר - לעבור לאירועים/תורים (פירוק בזמן).
18) FAQ
קיו: מה חשוב יותר: נסיגה או מפסק?
א ': שניהם. רטריי חוסך מכישלונות לטווח קצר, מפסק מגן מפני השפלה וסערות תמידיות.
ש: איך אתה יודע שהחיבור הוא ”שביר מדי”?
A: מתאם שגיאות גבוה, מרווח זמן נמוך, מגשים תכופים, ללא חסידים/מטמונים, שרשראות ארוכות סינכרוניות.
קיו: למה במרכז לבקרת מחלות אם יש לנו בדיקות אינטגרציה?
א. המרכז לבקרת מחלות תופס את ציפיות הצרכנים ושובר את שחרור הספק כאשר הוא אינו מתאים - לפני שהקוד נכנס לייצור.