![HCL Commerce Version 9.1.10.0 or later](../../base/images/91100plus.png)
HCL Cache - interruptores de circuito
HCL Cache implementa interruptores de circuito para la memoria caché remota para proteger la aplicación de un servidor Redis que este fallando o no disponible.
Si un interruptor de circuito detecta que un servidor Redis está fallando, impide nuevas solicitudes al servidor Redis durante un periodo de tiempo. Los interruptores de circuito se utilizan además de las configuraciones de disponibilidad alta proporcionadas por Kubernetes y el propio Redis, como réplicas.
- Memorias caché locales:
- Como los mensajes de invalidación no se pueden enviar ni recibir durante una interrupción de Redis, las memorias caché locales implementan un tiempo de espera más corto para entradas nuevas y existentes. De forma predeterminada, el tiempo de espera durante las interrupciones se configura en cinco minutos.
- Memorias caché solo remotas
- Las memorias caché solo remotas no están disponibles durante una interrupción de Redis.
La configuración predeterminada se puede interpretar de la siguiente manera: Si hay al menos 20 fallos consecutivos (como se ha establecido en minimumConsecutiveFailures
), durante un periodo de al menos 10 segundos (como se ha establecido en minimumFailureTimeMs
), abra el circuito (impedir nuevas conexiones) durante un minuto (el intervalo establecido en retryWaitTimeMs
). Después de ese tiempo, permita nuevas consultas a Redis, pero si las dos primeras solicitudes (minimumConsecutiveFailuresResumeOutage
) siguen fallando, vuelva a abrir el circuito durante otro minuto.
El tiempo de espera de solicitud Redis ha terminado.
timeout: 3000
retryAttempts: 3
retryInterval: 1500
Teniendo en cuenta los reintentos, con la configuración anterior una solicitud necesitará 16,5 segundos antes de devolver una señal de error (3000+3*(3000+1500)). Los tiempos de espera pueden ser más agresivos, pero esto puede dar lugar a errores esporádicos en los registros.
Configuraciones del interruptor de circuito
Las configuraciones del interruptor de circuito se pueden ajustar utilizando la configuración de YAML de memoria caché .
La configuración para el interruptor de circuito está disponible en el archivo YAML de memoria caché en redis
, circuitBreaker
. El tiempo de espera máximo para las memorias caché locales en modalidad de interrupción se configura utilizando el elemento maxTimeToLiveWithRemoteOutage
bajo localCache
, como en el ejemplo siguiente:
redis:
circuitBreaker:
scope: auto
retryWaitTimeMs: 60000
minimumFailureTimeMs: 10000
minimumConsecutiveFailures: 20
minimumConsecutiveFailuresResumeOutage: 2
cacheConfigs:
defaultCacheConfig:
localCache:
enabled: true
maxTimeToLiveWithRemoteOutage: 300
Valor | Valor predeterminado | Utilización |
---|---|---|
scope | automático | En función de la topología, los interruptores de circuito deben configurarse en el cliente (configuración de un solo interruptor de circuito para todos) o en el nivel de memoria caché/fragmento. HCL Cache selecciona automáticamente el ámbito en función de la configuración utilizada: El nivel de memoria caché se utiliza cuando la topología es clúster y HCL Commerce no puede conectarse a Redis durante el inicio o el valor cluster-require-full-coverage se establece en false. De lo contrario, el ámbito se establece en client . |
minimumConsecutiveFailures |
20 | El número mínimo de errores de intentos de conexión consecutivos antes de que una memoria caché se pueda establecer en modalidad de interrupción. Esta valor, y minimumFailureTimeMs debe satisfacerse antes de que el interruptor de circuito rompa la conexión de Redis. Tenga en cuenta que cualquier operación satisfactoria restablece este contador. |
minimumFailureTimeMs |
10000 (10 segundos) | El tiempo, en milisegundos, que debe transcurrir antes de que una memoria caché se pueda poner en modalidad de interrupción. Esta cantidad de tiempo, y minimumConsecutiveFailures debe satisfacerse antes de que el interruptor de circuito rompa la conexión de Redis. |
retryWaitTimeMs |
60000 (60 segundos) | Una vez que se ha establecido una memoria caché en modalidad de interrupción, retryWaitTimeMs es el tiempo, en milisegundos, que debe transcurrir antes de que se reintente la conexión de Redis. |
minimumConsecutiveFailuresResumeOutage |
2 | El número mínimo de errores de intentos de conexión consecutivos antes de que una memoria caché se pueda volver a establecer en modalidad de interrupción. Cuando una conexión está en modalidad de interrupción y alcanza el valor de retryWaitTimeMs , el interruptor de circuito permitirá intentos de conexión al servidor de Redis. Para permitir una rápida prueba de la conexión sin un exceso indebida de intentos de conexión, se utiliza el valor minimumConsecutiveFailuresResumeOutage . Si se alcanza minimumConsecutiveFailuresResumeOutage , la conexión se vuelve a poner en modalidad de interrupción, sin tener que esperar a que se cumpla de nuevo el ciclo de condición completo de minimumFailureTimeMs y minimumConsecutiveFailures . |