Diferencias y soluciones entre penetración de caché, desglose de caché, avalancha de caché, calentamiento de caché, actualización de caché y degradación de caché

1. Flujo de procesamiento de caché

      Para la solicitud de primer plano, el segundo plano primero obtiene los datos de la caché y devuelve el resultado directamente. Si no está disponible, lo obtiene de la base de datos. La base de datos obtiene la caché de actualización y devuelve el resultado. Si la base de datos no recupera , entonces el resultado vacío se devuelve directamente.

2. Penetración de caché

       descripción:

       La penetración de la caché se refiere a los datos que no están en la caché o en la base de datos, y los usuarios continúan iniciando solicitudes, como datos con una identificación de "-1" o datos con una identificación de muy grande inexistente. ( Solicite continuamente datos que no existen en la base de datos ) En este momento, es probable que el usuario sea un atacante y el ataque causará una presión excesiva sobre la base de datos.

      solución:

La capa de interfaz agrega verificación, como verificación de autenticación de usuario, id para verificación básica e interceptación directa para id <= 0; los
datos que no se pueden recuperar de la caché tampoco se recuperan en la base de datos. En este momento, también puede configurar la clave: el par de valores se escribe como clave nula, y el tiempo de validez de la caché se puede establecer en un punto corto, como 30 segundos (si se establece demasiado largo, no se podrá utilizar en condiciones normales). Esto puede evitar que los usuarios atacantes utilicen repetidamente el mismo ataque de fuerza bruta de identificación
 

Tres, desglose de caché

      descripción:

      El desglose de la caché se refiere a los datos que no están en la caché sino en la base de datos (generalmente cuando expira el tiempo de la caché). En este momento, debido a que hay tantos usuarios concurrentes, los datos no se leen en la caché de lectura al mismo tiempo tiempo, los datos se recuperan de la base de datos al mismo tiempo , lo que hace que la presión de la base de datos aumente instantáneamente, lo que provoca una presión excesiva

      solución:

Configure los datos del hotspot para que nunca caduquen.
Agregue el bloqueo de mutex, el código de referencia para el bloqueo de mutex es el siguiente:

//如果不存在就设置,且设置成功60秒后key自动失效,成功会返回字符串"OK ", 如果存在就不设置该key
String ret = jedis.set(key, value, "NX", "EX", 60);
flag = ret.equals("OK") ? true : false;
jedis.del(key);
String ret = jedis.setnx(key, value);//如果不存在就设置key,成功会返回 Long类型的 1, 如果存在就不设置该key ,且会返回Long 类型的 0
jedis.expire(60); //60秒后key自动失效
jedis.del(key);

          Descripción:

SET KEY VALUE [EX seconds] [PX milliseconds] [NX|XX]

EX seconds − 设置指定的到期时间(以秒为单位)。
PX milliseconds - 设置指定的到期时间(以毫秒为单位)。
NX - 仅在键不存在时设置键。
XX - 只有在键已存在时才设置。

   实现互斥锁需要用到以上命令,比如:

//设置“锁”
if(redis.set("lock", "1", "EX 180", "NX")){
    //业务逻辑
    .......
    //执行完业务逻辑后,释放锁
    redis.delete("lock");
}
 因为“NX”保证了只有redis没有该键才会设值该键值对,这样只有第一次访问的线程才能执行后面的逻辑,后面的线程再访问,只能阻塞等待

         

Cuarto, la avalancha de caché

      descripción:

      La avalancha de caché se refiere a la gran cantidad de datos en el caché hasta el momento de caducidad , y la gran cantidad de datos de consulta provoca una presión excesiva en la base de datos o incluso un tiempo de inactividad. A diferencia del desglose de caché, el desglose de caché se refiere a la verificación simultánea de la misma pieza de datos. La avalancha de caché significa que diferentes datos han expirado y muchos datos no se pueden verificar, por lo que se puede verificar la base de datos.

     solución:

El tiempo de caducidad de los datos almacenados en caché se establece de forma aleatoria para evitar que una gran cantidad de datos caduquen al mismo tiempo.
Si la base de datos de caché es una implementación distribuida, distribuya uniformemente los datos activos en diferentes bases de datos de caché.
Configure los datos del hotspot para que nunca caduquen.

5. Calentamiento de la caché:

El calentamiento de caché consiste en cargar directamente los datos de caché relacionados en el sistema de caché después de que el sistema esté en línea. Esto evita cargar los datos relevantes cuando el usuario lo solicita.

Solución:

1. Escriba un caché para actualizar la página directamente y utilícelo manualmente cuando se conecte.
2. La cantidad de datos no es grande y se puede cargar cuando se inicia el sistema WEB.
3. Actualice la caché con regularidad.


Seis, actualización de caché

Hay dos estrategias para la eliminación de la caché:

1. Limpie la caché caducada con regularidad.
2. Cuando llega una solicitud de usuario, se juzga si la caché utilizada para esta solicitud ha caducado; si caduca, irá al sistema subyacente para obtener nuevos datos y actualizar la caché.
Ambos tienen sus propias ventajas y desventajas, la desventaja de la primera es que es problemático mantener una gran cantidad de claves en caché, la desventaja de la segunda es que la caché no es válida cada vez que un usuario la solicita.

Siete, 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 central, es necesario asegurarse de que el servicio sigue estando disponible, incluso si lo está. perjudicial para el servicio. El sistema se puede degradar automáticamente en función de algunos datos clave, o se puede configurar con conmutadores para lograr la degradación manual.
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). Antes de bajar de categoría, el sistema debe clasificarse para ver si el sistema puede perder el peón y proteger al comandante; de ​​modo de determinar cuáles deben protegerse y cuáles pueden ser degradados.

Por ejemplo, puede consultar el plan de configuración del nivel de registro:
(1) General: por ejemplo, algunos servicios ocasionalmente caducan debido a la inestabilidad de la red o cuando el servicio está en línea, y se pueden degradar automáticamente;
(2) Advertencia: algunos servicios fluctuar en la tasa de éxito dentro de un período de tiempo (como 95 ~ 100%), se puede degradar automáticamente o manualmente y enviar una alarma;
(3) Error: Por ejemplo, la tasa de disponibilidad es inferior al 90%, o el el grupo de conexiones de la base de datos ha explotado o el tráfico ha aumentado repentinamente hasta el final del sistema. En este momento, se puede degradar automáticamente o manualmente según la situación;
(4) Errores graves: por ejemplo, debido a razones especiales , los datos son incorrectos y en este momento se requiere una degradación manual urgente.
 

Supongo que te gusta

Origin blog.csdn.net/qq_27828675/article/details/102628337
Recomendado
Clasificación