Naive Retries vervielfachen Last genau dann, wenn ein Service ohnehin kämpft, und synchronisierte Clients wiederholen im Gleichschritt in Wellen. Nimm Exponential Backoff mit Full Jitter, deckel die Gesamtzahl der Versuche und wiederhol nur idempotente Operationen bei wiederholbaren Fehlern. Ergänz ein clientseitiges Retry-Budget, damit Retries ein kleiner Anteil am Traffic bleiben, plus einen Circuit Breaker, der Aufrufe ganz stoppt, wenn die Fehlerrate hochschießt. Wiederhol nie unabhängig auf jeder Ebene des Stacks.
Warum Interviewer das fragen
Retry-Stürme sind eine der häufigsten Ursachen dafür, dass aus einem kleinen Fehler ein Totalausfall wird, diese Frage trennt also Kandidaten, die eine echte kaskadierende Störung debuggt haben, von denen, die nur eine Client-Library konfiguriert haben. Der Interviewer will Jitter, Budgets, Idempotenz und vor allem den Punkt, dass geschichtete Retries die Versuche multiplizieren.
So baust du deine Antwort auf
- Erklär die Verstärkung: Retries fügen während des Fehlers Last hinzu.
- Nenn Jitter ausdrücklich, nicht nur Exponential Backoff.
- Beschränk Retries auf idempotente Operationen und wiederholbare Statuscodes.
- Ergänz ein Retry-Budget und einen Circuit Breaker als Obergrenze.
- Warn vor der Multiplikation über verschachtelte Ebenen.
Beispielantwort
Das Problem ist, dass Retries zusätzliche Last zum denkbar schlechtesten Zeitpunkt sind. Scheitert ein Service zu 50% und jeder Client wiederholt dreimal, hast du den Traffic auf etwas verdreifacht, das schon über der Kapazität liegt, und es bekommt nie eine Chance, sich zu erholen. Reines Exponential Backoff reicht auch nicht, denn alle deine Clients sind im selben Moment gescheitert, also wachen sie im selben Moment wieder auf. Full Jitter behebt das, die Wartezeit ist dann ein Zufallswert zwischen null und der aktuellen Backoff-Obergrenze. Darüber hinaus würde ich nur idempotente Aufrufe wiederholen, nur bei 503, 429 und Fehlern auf Verbindungsebene, nie bei einem 400, und ich würde ein Retry-Budget durchsetzen, das Retries auf etwa 10% aller Requests deckelt. Was uns erwischt hat, war das Schichten. Das SDK hat dreimal wiederholt, das Mesh zweimal und der Job Runner noch einmal, das sind achtzehn Versuche für einen logischen Aufruf.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Was ist Full Jitter im Vergleich zu Decorrelated Jitter?
- Welche HTTP-Statuscodes sind sicher zu wiederholen und warum?
- Wie verhinderst du, dass sich Retries über ein Service Mesh multiplizieren?
Weitere Fragen für Site Reliability Engineer
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen