Das ist eine Cache Stampede, manchmal Thundering Herd genannt. Tausende gleichzeitige Requests verfehlen im selben Moment den Cache und berechnen alle denselben Wert neu. Fix ist Single-Flight-Locking, sodass nur ein Worker neu berechnet, während die anderen warten oder veraltete Daten ausliefern. Ergänz Jitter auf den TTLs, damit Keys nicht gemeinsam ablaufen, refresh heiße Keys im Hintergrund vor dem Ablauf und liefer bei Fehlern veraltete Daten aus.
Warum Interviewer das fragen
Ein Klassiker, weil die naive Antwort (TTL hochsetzen) nichts löst, sondern das Ereignis nur seltener und größer macht. Interviewer wollen Request Coalescing, probabilistisches frühes Ablaufen und Stale-while-revalidate-Semantik sehen. Es zeigt außerdem, ob du in korrelierten Fehlern denkst, und das ist das Grundthema der meisten Zuverlässigkeitsfragen.
So baust du deine Antwort auf
- Benenn den Fehlermodus und erklär, warum Cache Misses zeitlich korrelieren.
- Gib den Hauptfix: gleichzeitige Neuberechnungen zusammenfassen.
- Ergänz TTL-Jitter und Hintergrund-Refresh für heiße Keys.
- Beschreib das Ausliefern veralteter Daten als bewussten Degraded Mode.
- Erwähn einen Negative Cache für Misses, die nichts zurückgeben.
Beispielantwort
Das ist eine Stampede. Der Key läuft ab, zehntausend laufende Requests verfehlen gleichzeitig, und sie alle fahren dieselbe teure Query, die Datenbank sieht also zehntausend Kopien einer Query, die sie sonst einmal pro Minute sieht. Der erste Fix ist Coalescing, ein Single-Flight-Lock im Cache heißt, ein Worker berechnet neu und alle anderen warten auf dieses Ergebnis oder bekommen den veralteten Wert. Wir haben dafür ein Redis-SETNX-Lock mit kurzer TTL genutzt, und die Datenbanklast auf diesem Pfad ist um etwa zwei Größenordnungen gefallen. Obendrauf gebe ich jeder TTL Jitter, statt exakt 300 Sekunden also 300 plus minus 10%, was den Ablauf über Keys hinweg entkorreliert. Für wirklich heiße Keys bevorzuge ich probabilistische frühe Neuberechnung, bei der ein Request nahe am Ende der TTL im Hintergrund erneuert und weiter den gecachten Wert ausliefert. Und ich cache immer auch negative Ergebnisse, sonst wird aus einer fehlenden Zeile eine unbegrenzte Query-Schleife.
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
- Wie würdest du Single Flight ohne verteiltes Lock umsetzen?
- Was ist das Risiko, veraltete Daten auszuliefern, und wo ist das inakzeptabel?
- Wie gehst du damit um, wenn eine Cache-Node stirbt statt ein Key abläuft?
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