Almacenamiento en caché distribuido de los puntos de conocimiento básicos de JAVA: descripción general y explicación detallada

1.1. Avalancha de caché

La avalancha de caché se puede entender simplemente como: debido a la falla del caché original, todas las solicitudes que deberían tener acceso al caché antes de que llegue el nuevo caché consultarán la base de datos, lo que causará una gran presión en la CPU y la memoria de la base de datos, lo que causará seriamente tiempo de inactividad de la base de datos. . Así se formó una serie de reacciones en cadena, provocando el colapso de todo el sistema. En general, hay tres formas de solucionarlo:

  1. Generalmente, cuando la cantidad de simultaneidad no es particularmente alta, la solución más utilizada es bloquear y poner en cola.
  2. Agregue una marca de caché correspondiente a cada dato en caché, registre si el caché no es válido, si la marca de caché no es válida, actualice el caché de datos.
  3. Establezca diferentes tiempos de invalidación de caché para la clave.

1.2. Penetración de caché

La penetración de la caché se refiere a los usuarios que consultan datos, que no están en la base de datos y, naturalmente, no estarán en la caché. Esto hará que el usuario consulte, pero no se puede encontrar en la caché, y cada vez que tenga que ir a la base de datos para volver a consultarlo, y luego volver vacío (equivalente a dos consultas inútiles). De esta manera, la solicitud pasa por alto el caché y verifica directamente la base de datos, que también es un problema de tasa de aciertos del caché mencionado con frecuencia.
Hay muchas formas de resolver eficazmente el problema de la penetración de la memoria caché. La más común es 布隆过滤器dividir todos los datos posibles en un mapa de bits lo suficientemente grande, y este mapa de bits interceptará ciertos datos inexistentes. Evite la presión de las consultas sobre el sistema de almacenamiento subyacente. También existe una forma más sencilla y grosera, 如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。 通过这个直接设置的默认值存放到缓存,这样第二次到缓冲中获取就有值了sin seguir accediendo a la base de datos.

1.3. Calentamiento de caché

El calentamiento de caché consiste en cargar los datos de caché relacionados directamente en el sistema de caché después de que el sistema esté en línea. De esta manera, puede evitar el problema de consultar la base de datos primero y luego almacenar en caché los datos cuando el usuario lo solicita. ¡El usuario consulta directamente los datos de caché precalentados!

1.4. Actualización de caché

Además de la estrategia de invalidación de caché que viene con el servidor de caché para la actualización de caché (Redis tiene 6 estrategias para elegir de manera predeterminada), también podemos personalizar la eliminación de caché de acuerdo con las necesidades comerciales específicas. Hay dos estrategias comunes:
(1 ) Limpie la caché caducada con regularidad;
(2) Cuando llegue una solicitud de usuario, juzgue si la caché utilizada por la solicitud está caducada, si caduca, vaya al sistema subyacente para obtener nuevos datos y actualizar la caché.

1.5. Degradación de la caché

Cuando el tráfico aumenta drásticamente, el servicio tiene problemas (como un tiempo de respuesta lento o no responde), o los servicios no básicos afectan el rendimiento del proceso principal, es necesario asegurarse de que el servicio sigue estando disponible, incluso si el servicio está dañado. El sistema se puede degradar automáticamente en función de algunos datos clave, o se puede configurar con un interruptor para degradar manualmente. El objetivo final de la degradación es garantizar que los servicios básicos estén disponibles, incluso si tienen pérdidas. Y algunos servicios no se pueden degradar (como agregar al carrito de compras, liquidación)

Supongo que te gusta

Origin blog.csdn.net/qq_46914021/article/details/109216759
Recomendado
Clasificación