mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 18:07:31 +00:00
feat(cache): redis circuit breaker (#8890)
# Which Problems Are Solved If a redis cache has connection issues or any other type of permament error, it tanks the responsiveness of ZITADEL. We currently do not support things like Redis cluster or sentinel. So adding a simple redis cache improves performance but introduces a single point of failure. # How the Problems Are Solved Implement a [circuit breaker](https://learn.microsoft.com/en-us/previous-versions/msp-n-p/dn589784(v=pandp.10)?redirectedfrom=MSDN) as [`redis.Limiter`](https://pkg.go.dev/github.com/redis/go-redis/v9#Limiter) by wrapping sony's [gobreaker](https://github.com/sony/gobreaker) package. This package is picked as it seems well maintained and we already use their `sonyflake` package # Additional Changes - The unit tests constructed an unused `redis.Client` and didn't cleanup the connector. This is now fixed. # Additional Context Closes #8864
This commit is contained in:
@@ -291,6 +291,19 @@ Caches:
|
||||
DisableIndentity: false
|
||||
# Add suffix to client name. Default is empty.
|
||||
IdentitySuffix: ""
|
||||
# Implementation of [Circuit Breaker Pattern](https://learn.microsoft.com/en-us/previous-versions/msp-n-p/dn589784(v=pandp.10)?redirectedfrom=MSDN)
|
||||
CircuitBreaker:
|
||||
# Interval when the counters are reset to 0.
|
||||
# 0 interval never resets the counters until the CB is opened.
|
||||
Interval: 0
|
||||
# Amount of consecutive failures permitted
|
||||
MaxConsecutiveFailures: 5
|
||||
# The ratio of failed requests out of total requests
|
||||
MaxFailureRatio: 0.1
|
||||
# Timeout after opening of the CB, until the state is set to half-open.
|
||||
Timeout: 60s
|
||||
# The allowed amount of requests that are allowed to pass when the CB is half-open.
|
||||
MaxRetryRequests: 1
|
||||
|
||||
# Instance caches auth middleware instances, gettable by domain or ID.
|
||||
Instance:
|
||||
|
Reference in New Issue
Block a user