Red de conocimiento informático - Problemas con los teléfonos móviles - Degradación de QPS en Sentinel - DegradeSlot

Degradación de QPS en Sentinel - DegradeSlot

Sentinel implementa diferentes funciones a través de varias ranuras. Entre ellas, DegradeSlot ingresa a la operación de degradación de acuerdo con varias reglas. La siguiente es una introducción a DegradeSlot.

DegradeSlot #entry

Degrade implementa la operación de degradación a través de la función checkDegrade. Primero obtenga el conjunto DegradeRules de degradeRules según el nombre del recurso y luego llame a la función passCheck en DegradeRule uno por uno para verificar.

DegradeRule#passCheck

Este método primero obtiene el valor de corte. Si es verdadero, va directamente al límite de flujo. Luego obtiene el nodo global ClusterNode según el recurso. Bajando en la lista, realiza rebajas basadas en tres estrategias diferentes.

Si la degradación se basa en el tiempo de respuesta, se obtendrá el tiempo de respuesta promedio del clusterNode. Si el tiempo de respuesta promedio es mayor que el recuento establecido (el valor predeterminado es milisegundos), se llamará a passCount. y se incrementa en 1. Si passCount es mayor que 5, la degradación procederá directamente.

Entonces, cuando veamos esto, debemos saber que las primeras solicitudes se degradan según el tiempo de respuesta promedio. Incluso si el tiempo de respuesta es demasiado largo, no se degradarán inmediatamente, sino que esperarán. hasta que llegue la sexta solicitud.

Accedamos al método avgRt de clusterNode y veamos cómo podemos obtener el tiempo de respuesta promedio de clusterNode.

Este método esencialmente llama a RollingCounterInSecond para obtener el número de éxitos, luego obtiene el tiempo de respuesta dentro de la ventana y luego divide el tiempo de respuesta total por el número de veces para obtener el tiempo de respuesta promedio para cada llamada exitosa. . El tiempo total de respuesta y el número total de éxitos dentro de la ventana de tiempo se calcularán en todo el espacio de StatisticSlot mediante una función de ventana deslizante.

DEGRADE_GRADE_RT Degradar según el tiempo de respuesta

Este método obtiene los Qps de llamadas exitosas y los Qps de llamadas de excepción, los verifica, luego solicita la proporción y devuelve verdadero si la proporción no es mayor que count; de lo contrario, devuelve false y genera una excepción.

Luego vamos al método excepciónQps y vemos:

El método RollingCounterInSecond.getWindowIntervalInSec se utiliza para representar la longitud de la ventana en segundos. Aquí devuelve 1.

La degradación basada en el número de excepciones es muy simple: se basa directamente en el número total calculado de excepciones para determinar si se ha excedido el recuento.