Кеширование
Кеширование можно настроить отредактировав файл config.json
.
Изменения параметров конфигурации в этом разделе требуют перезапуска сервера перед вступлением в силу.
Выбрать тип кеширования
Доступно только в On-Premise инсталляции Time.
- Переменная среды:
TIME_CACHESETTINGS_CACHETYPE
- Значения:
- redis: кеширование производится через Redis.
- lru: (По умолчанию) кеширование производится с использованием локального lru-кеша, т.е. в режиме высокой доступности у каждого time-server собственный кеш, который кластерно инвалидируется.
Тайм-аут чтения из Redis
Доступно только в On-Premise инсталляции Time.
Максимально допустимое время от момента установки соединения до полного чтения/записи объекта из/в Redis.
Формат ввода: numeric в миллисекундах. По умолчанию 300 (миллисекунд).
- Переменная среды:
TIME_CACHESETTINGS_READWRITETIMEOUT
Выключить client-side кеширование
Доступно только в On-Premise инсталляции Time.
- Переменная среды:
TIME_CACHESETTINGS_DISABLECLIENTSIDECACHE
- Значения:
-
нет: (По умолчанию) при чтении из Redis полученные данные записываются в локальный кеш и переиспользуются в течении 5 минут.
Это способствует уменьшению времени выполнения запросов. Для фиксирования изменений ключей используется
broadcast
. -
да: при чтении всегда идет обращение к Redis.
-
Circuit Breaker
Circuit Breaker - механизм, который предотвращает обращения к Redis в случае его недоступности, используя LRU-кэш в качестве резервного решения. Это позволяет обеспечить стабильную работу системы, поддерживая её функциональность даже при сбоях в Redis.
Механизм работает в трех состояниях:
Closed
— Все запросы обрабатываются через Redis, так как он доступен.Open
— Redis признан недоступным, все запросы перенаправляются в LRU-кэш.HalfOpen
— Система продолжает использовать LRU-кэш, но периодически проверяет доступность Redis, отправляя часть запросов.
Включение Circuit Breaker
- Переменная среды:
TIME_CACHESETTINGS_CIRCUITBREAKERSETTINGS_ENABLE
- Значения:
- Нет: (По умолчанию) Circuit Breaker отключен, все запросы обрабатываются напрямую через Redis.
- Да: Circuit Breaker включен, запросы автоматически переключаются между Redis и LRU при сбоях.
Длительность открытого состояния Circuit Breaker
Этот параметр задаёт время (в секундах), в течение которого Circuit Breaker остаётся в состоянии Open
. После истечения этого времени механизм переходит в режим HalfOpen
, чтобы проверить доступность Redis.
Формат ввода: integer (default: 30
).
- Переменная среды:
TIME_CACHESETTINGS_CIRCUITBREAKERSETTINGS_OPENSTATEDURATIONSECONDS
Порог последовательных операций Circuit Breaker
Этот параметр определяет:
- Сколько подряд ошибок должно произойти в Redis, чтобы Circuit Breaker перешёл из состояния
Closed
вOpen
. - Сколько подряд ошибок должно быть выполнено в Redis, чтобы Circuit Breaker вернулся из состояния
HalfOpen
вOpen
. - Сколько подряд успешных операций должно быть выполнено в Redis, чтобы Circuit Breaker вернулся из
HalfOpen
в состояниеClosed
.
Формат ввода: integer (default: 5
).
- Переменная среды:
TIME_CACHESETTINGS_CIRCUITBREAKERSETTINGS_CONSECUTIVETHRESHOLD