שרת, ממשקים ונתונים · מתקדם

אמינות בקריאות לשירותים חיצוניים

בשורה אחת: כל קריאה החוצה תיכשל מתישהו — השאלה היחידה היא אם התכננתם מה קורה אז.

ארבעה מנגנונים

פסק זמן. לכל קריאה, תמיד. קריאה בלי מגבלת זמן תופסת משאב עד שהמערכת נחנקת.

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

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

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

הבעיה של הכפילות

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

מה לנטר

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

לעומק

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