Eso es una estampida de caché, también llamada avalancha. Miles de peticiones concurrentes fallan la caché en el mismo instante y todas recalculan el mismo valor. Se arregla con un bloqueo de vuelo único para que solo un worker recalcule mientras los demás esperan o sirven datos caducados. Añade jitter a los TTL para que las claves no caduquen a la vez, refresca las claves calientes en segundo plano antes de que caduquen y sirve datos caducados ante errores.
Por qué lo preguntan los entrevistadores
Es una favorita porque la respuesta ingenua (subir el TTL) no arregla nada, solo hace el evento más raro y más grande. Los entrevistadores quieren ver agrupación de peticiones, caducidad probabilística anticipada y semántica de servir caducado mientras se revalida. También revela si piensas en fallos correlacionados, que es el tema de fondo de casi todas las preguntas de fiabilidad.
Cómo estructurar tu respuesta
- Nombra el modo de fallo y explica por qué los fallos de caché se correlacionan en el tiempo.
- Da el arreglo principal: agrupar los recálculos concurrentes.
- Añade jitter a los TTL y refresco en segundo plano para las claves calientes.
- Describe servir datos caducados como un modo degradado deliberado.
- Menciona una caché negativa para las búsquedas que no devuelven nada.
Ejemplo de respuesta
Es una estampida. La clave caduca, diez mil peticiones en vuelo fallan la caché a la vez y todas ejecutan la misma consulta cara, así que la base de datos ve diez mil copias de una consulta que normalmente ve una vez por minuto. El primer arreglo es agrupar, así que un bloqueo de vuelo único en la caché hace que un worker recalcule y todos los demás esperen ese resultado o reciban el valor caducado. Usamos un bloqueo con SETNX de Redis y un TTL corto para esto, y la carga de base de datos en esa ruta cayó unos dos órdenes de magnitud. Encima de eso añado jitter a cada TTL, así que en vez de exactamente 300 segundos son 300 más menos un 10%, lo que descorrelaciona las caducidades entre claves. Para las claves de verdad calientes prefiero el recálculo probabilístico anticipado, donde una petición que llega cerca del final del TTL refresca en segundo plano mientras sigue sirviendo el valor cacheado. Y siempre cacheo los resultados negativos, porque si no una fila que falta se convierte en un bucle de consultas sin límite.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿Cómo implementarías el vuelo único sin un bloqueo distribuido?
- ¿Cuál es el riesgo de servir datos caducados y dónde es inaceptable?
- ¿Cómo manejas la muerte de un nodo de caché en lugar de la caducidad de una clave?
Más preguntas para Site Reliability Engineer
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas