WinUpGo
חיפוש
CASWINO
SKYSLOTS
BRAMA
TETHERPAY
777 FREE SPINS + 300%
קזינו צפני קזינו קריפטו טורנט גיר הוא חיפוש הזרם שלך! הילוך טורנט

חמש שגיאות אינטגרציה קריטיות של API בהפעלה

שגיאה # 1. אין אימפוטנציה ו ”סערה” של נסיגות

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

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

איך לעשות את זה?

Idempotency-Key/' operation _ id 'לכל השיטות הלא בטוחות (POST/PATCH).

אינדקס ייחודי בבסיס הנתונים עבור "operation _ id'. שידור חוזר - החזר את התוצאה הקודמת.

Webhooks דרך טבלת Inbox (dedupe by ”event _ id + signate”). אירועים יוצאים מהארון.

רטריי: מקסימום 1-2 פעמים, אקספוננט + jitter, רק לפעולות בטוחות.

אמנת HTTP (דוגמה):
http
פוסט/v1/תשלומים
Idempotency-Key: ik_f35a2
תוכן-סוג: יישום/json

”סכום”: 5000, ”מטבע”: ”EUR”, ”מקור”: ”card_..."”
הגנת SQL (מפושטת):
sql
תשלומי שולחן שינוי להוסיף קונסטריינט uniq_op ייחודי (operation_id);
רטריי עם ג 'יטר (פסאודו-קוד):
פיתון עבור i בטווח (2):
נסה: החזר call_api (מטען, פסק זמן = 0. 6)
מלבד פסק זמן:
שינה (0. 05 2i + אקראי. אחיד (0, 0. 05))
הרם את הדמיוןweather condition
רשימת בדיקות:
[ ] לכל ההיגיון ”כסף/יצירת” יש 'operation _ id' and uniq index.
[ ] ספרי אינטרנט נכנסים רק דרך תיבת דנ "א עם עובד אידמפוטנט.
[ ] הלקוח SDK קובע אוטומטית את מפתח האידמפוטנטיות.

שגיאה מספר 2. פסקי זמן/מגשים נגד SLO:
  • תסמינים: p95 פתאום צף משם, תורים גדלים, מפסק ”פוני”.
  • Root: ה-SLO הכולל של התגובה הוא 400-600 ms, ופסקי זמן ל-API חיצוניים הם 1-2 S, ואפילו מגשים מחדש x 3. אתה עושה יותר ממה שאתה יכול ואתה להסתער ההתמכרות עם חזרות.

איך לעשות את זה?

עיתוי התקציב: אם SLO הוא 400 ms, זמן מעבר לזרם: 250-300 ms; פסק זמן מוחלט של בקשת SLO.

Backpressure/Backpressure: semaphores/worker-book לקריאות לכל תלות. צפוף פי 429/503 בבת אחת.

מפסק: ”פתוח” עם פסקי זמן/5xx, ”חצי פתוח” מינון.

בקרת כניסה: להגביל את הקונקורנסי (לכל חוט, לכל פוינט/PSP).

דוגמה (קדימה):
go sem: = הפוך (chan strut;, 64 )//תחרות גבול PSP Func callPSP (ctx. הקשר, Req Req) (Res, שגיאה)
בחר *
case sem <- strut ():
defer func () <- sem ()
c, לבטל: = הקשר. עם Timeout (ctx, 300time. אלפיות שנייה)
דפר ביטול ()
להחזיר psp. דו (c, req)
ברירת מחדל:
החזר RES's, שליחות עסוקה//כישלון מיידי במקום תור אינסופי
}
}
רשימת בדיקות:
[ ] פסקי זמן קצרים יותר מ-SLO; רטריי 2; יש ריגוש.
[ ] בריכות/סמפורות ל-API חיצוני; מפסק חשמלי עם מדדים.
[ ] בדרכים עמוסות, אנחנו חוזרים 429/Retry-After, לא לשמור על קשרים.

שגיאה מספר 3. אבטחה חלשה: חתימות Webhook, סודות, TLS

תסמינים: ”טלפונים של אחרים” עוברים, סודות בקוד/יומן, סיכוני MITM.

אין חתימה/בדיקת רעננות, סודות חיים בקבצי env, TLS ישנים וכותרות חלשות.

איך לעשות את זה?

חתימה של חוברות אינטרנט HMAC-SHA256 + 'X-Timestamp' (חלון ציון 5-10 דקות), השוואה קפדנית של חתימה.

MTLS עבור אינטגרציות קריטיות או IP-list-list.

סיבוב של סודות באמצעות כספת/ענן KMS; זכויות מינימום; ביקורת חיסור.

TLS 1. 2/1. 3 בלבד, HSTS, נכון CORS (רשימת המקור הצרה).

אימות חתימה (פייתון):
Python def לאמת (sig_hdr, ts_hdr, גוף, סוד):
אם שרירי בטן (זמן. זמן () - int (ts_hdr))> 600: להעלות פג תוקף ()
Calc = hmac. (סוד חדש, (ts_hdr + ”” + גוף). Encode (), Haslib. Sha256). הקסדיגסט (באנגלית: hexdigest
אם לא המק. compare_digest (calc, sig_hdr): להעלות BadSig ()
רשימת בדיקות:
[ ] כל הספרים חתומים ומאומתים; חלון הטריות מוגבל.
[ ] סודות בקמ "ס/כספת, יש סיבוב וביקורת.
[ ] TLS/HSTS מופעל; נקודת CORS; IP/mTLS במקום המתאים.

שגיאה מספר 4. סחף חוזה: התוכנית ”חי את חייו”

התסמינים: הדרבן נפל ”רק אצל כמה לקוחות”, 500/422 ביומנים, גרסאות שונות של ה-SDK וה-API.

שורש: אין תיאור קפדני של חוזים, שינויים לא תואמים לאחור, שדות ”שקטים”, משמעויות שונות לאותם שמות.

איך לעשות את זה?

חוזה-ראשון: OpenAPI/AsyncAPI + שרת/לקוח דור; לאירועים - Avro/Protobuf + Schema Registry.

ורסיונינג: 'v1' v2 '(URI/header), סטייה-תכנית, חסד-נקודה.

אחורה-compat: רק שינויים תוספים בשחרורים מינוריים; לא ניתן למחוק/לשנות את שם ללא v-bump.

מבחני חוזה: Pact/Buf - ספק/צרכן נבחנים ב CI.

דוגמאות:
יאמל (yaml)
OpenAPI: ברור סוג של סכום ביחידות amount_minor קטנות:
סוג: מספר שלם מינימום: 0 תיאור: סכום במינימום יחידות מטבע (מספר שלם)
רשימת בדיקות:
[ החוזים ] מאוחסנים ב-GIT, המודיעים מאשרים/שוברים אם אינם מתאימים.
[ סכימה ] נרשמת לאירועים, ”אחורה/קדימה” תאימות.
[ ] עמוד עגינה של שינויים, תאריכי שפל, ספסל מבחן לשותפים.

שגיאה מספר 5. השקת ”עיוור”: ללא מדדים/רישומים/שבילים וארגז חול

התסמינים: ”שום דבר לא נראה לעין”, התמיכה מתמלאת, ידיים מנופחות בדרבן.

שורש: יכולת ההבחנה לא נכללה, אין סינתטיים, ארגז החול נוסה ”במילים”.

איך לעשות את זה?

מדדי RED/USE: קצב/שגיאה/latency על כל קצה, על ידי מסלול/שיטה.

קורלציה: "trace _ id' בכל הרישומים והתגובות; צרור של zapros↔vebkhuk.

סינתטיים: בדיקות בריאות (כניסה/הפקדה), SLA ניטור T + 60 עבור חוברות אינטרנט.

ארגז חול/שלב: מפתחות/תחומים מבודדים לחלוטין, PSP פיקטיבי, רשומות ”לא כלולות בדיווחים”.

תגובה עם זיהוי עקבות:
http
HTTP/1. 1 202 מתקבל
עקבות: 7f2b3d8e9c1a4
מיקום :/ v1/ops/req_42/status
רשימת בדיקות:
[ ] מדדי RED/USE, לוחות מחוונים, התראות (תסמינים + סיבות).
[ ] שבילים מקצה לקצה; יומני JSON, לא PII, עם "trace _ id'.
[ ] סינתטיים מאזורי מפתח; ארגז חול נדרש, מפתחות שונים.

Prelunch Plan (T-7 # T-0)

T-7 ימים:
  • סריקת חוזה סופית: האם יש שינויים לא מתאימים; להקפיא מזימות.
  • סודות/תעודות: בדיקת סבב, גישה, מדיניות KMS.
  • סינתטיים 24 × 7, התראות קשורות בכוננות.
שלושה ימים:
  • העמסת מיני-ריצה (פרץ 2-5 דקות): p95/בריכות/תורים באזור הירוק.
  • DRUN-RUN (שידור חוזר, 5XX, jitter), בדיקת DLQ.
  • ”ספר טלפונים” של שותפים: אנשי קשר L1/L2, ערוץ חדר מלחמה.
T-0:
  • תעבורת ערוצים 5% * 25% * 50% עבור שערי SLO; מוכן לגלגל בחזרה.
  • מתג-חיסול/דגלי תכונה על תכונות מסוכנות כלולים.
  • חדר המלחמה פעיל, תבניות מצב מוכנות.

תוכנית רולבק (אם משהו השתבש)

1. שחרר את התנועה לגרסה היציבה/מסלול הקודם.

2. לבטל פישפלאג שינויים שנויים במחלוקת.

3. לייצב תורים/בריכות, לעצור נסיגות בסערה.

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


התחל טבלת בדיקה עצמית (קצר)

חסימהשאלהכן, לא
Idempotenceהאם לכל שיטות ”יצירת” יש אינדקס Idempotency-Key/' operation _ id' ו-uniq?
מגשים/פסקי זמןפסקי זמן קצרים יותר מ-SLO; רטריי 2; ג 'יטר על?
בטיחותספרים חתומים, חלון רעננות, 10 דקות, סודות בקמ "ס?
חוזיםOpenAPI/ASyncAPI קבוע, CI תופס אי התאמה?
יכולת תצפיתאדום/שימוש, שבילים, T סינתטי + 60, ארגז חול מבודד?
Rollbackהאם יש כפתור גלגול-מתג להרוג, תכנית תקשורת?

לעתים קרובות שאל ”מה אם”...

... הספק אינו תומך במפתח אידמפוטנטי?

Stork 'hash' (גוף) '+' partner _ request _ id 'והכנס את האידמפוטנטיות שלך.

... קובצי אינטרנט לפעמים באים ”לפני” התשובה?

לתפור על "operation _ id' ולשמור באופן זמני את הסטטוס" לא ידוע pressibile "; מפייס תקופתי יסגור סתירות.

... צריך לתמוך בלקוחות ישנים וחדשים?

גרסה של נקודות הקצה ('/v1&fospos ו- '/v2 '), מסלול על ידי כותרת/URI, שמור על תאימות לאחור לפחות למשך N חודשים.


המשך תקציר

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

× חיפוש לפי משחקים
הזן לפחות 3 תווים כדי להתחיל את החיפוש.