Кэш схем

Кэш схем обеспечивает высокую производительность системы валидации данных через Redis. Он позволяет быстро получать доступ к JSON-схемам без обращения к MongoDB при каждом запросе.
Повышение производительности
Кэширование схем снижает нагрузку на MongoDB и ускоряет валидацию данных в 10-100 раз.
Принцип работы

Система кэширования схем использует Redis как промежуточный слой между приложением и MongoDB. При первом обращении к схеме она загружается из базы данных и сохраняется в кэше.
Алгоритм кэширования:
  1. При запросе схемы система проверяет наличие в Redis кэше
  2. Если схема найдена в кэше, она возвращается немедленно
  3. Если схемы нет в кэше, происходит загрузка из MongoDB
  4. Загруженная схема сохраняется в кэше с TTL 24 часа
  5. При обновлении схемы в базе данных кэш автоматически инвалидируется
Управление кэшем

Очистка кэша отдельной схемы

Для очистки кэша конкретной схемы используется API эндпоинт /sbrs-cache/clear-schema-cache.
curl -X DELETE "https://your-domain.com/sbrs-cache/clear-schema-cache" \
-H "Content-Type: application/json" \
-H "SBRS-Schema-Name: your-schema-name" \
-H "SBRS-Correlation-Id: unique-correlation-id" \
-H "SBRS-Originator: cache-management" \
-H "SBRS-Message-Id: unique-message-id"
Полная очистка кэша

Для очистки всего кэша схем используется эндпоинт /sbrs-cache/clear-all-cache.
curl -X DELETE "https://your-domain.com/sbrs-cache/clear-all-cache" \
-H "Content-Type: application/json" \
-H "SBRS-Correlation-Id: unique-correlation-id" \
-H "SBRS-Originator: cache-management" \
-H "SBRS-Message-Id: unique-message-id"
Получение статистики кэша

Для получения информации о состоянии кэша используется эндпоинт /sbrs-cache/statistics.
curl -X GET "https://your-domain.com/sbrs-cache/statistics" \
-H "Content-Type: application/json" \
-H "SBRS-Correlation-Id: unique-correlation-id" \
-H "SBRS-Originator: monitoring" \
-H "SBRS-Message-Id: unique-message-id"
Пример ответа статистики
{
    "cacheMetrics": {
        "totalCachedSchemas": 15,
        "cachedSchemaNames": [
            "user-schema",
            "product-schema",
            "order-schema"
        ],
        "schemaMemoryUsage": {
            "user-schema": 2048,
            "product-schema": 1536,
            "order-schema": 3072
        },
        "totalMemoryUsage": 6656,
        "cacheProvider": "Redis",
        "cacheEnabled": true,
        "cacheTtlHours": 24,
        "schemaPrefix": "schema:"
    },
    "sbrsMessageType": "success",
    "sbrsStatusMessage": "Cache statistics retrieved successfully",
    "sbrsCorrelationId": "unique-correlation-id",
    "sbrsOriginator": "monitoring",
    "sbrsMessageId": "unique-message-id"
}
Обязательные заголовки

Все запросы к API кэша должны содержать следующие заголовки:
Мониторинг и метрики

Система предоставляет детальную информацию о состоянии кэша схем:
  • Общее количество схем - Количество схем, находящихся в кэше в данный момент
  • Список схем - Названия всех схем, находящихся в кэше
  • Использование памяти - Объем памяти Redis, занимаемый кэшированными схемами
  • Время жизни - TTL настройки и время до истечения срока действия
Автоматическая инвалидация

Система автоматически очищает кэш схемы в следующих случаях:
  • При создании новой версии схемы
  • При обновлении существующей схемы
  • При удалении схемы из системы
  • При истечении TTL (24 часа по умолчанию)
  • При ручной очистке через API
Важно!
Очистка кэша может временно снизить производительность системы, так как схемы будут загружаться из MongoDB.
Структура ключей Redis

Схемы хранятся в Redis с использованием следующей структуры ключей:
Формат ключа: schema:{schema-name}
Примеры:
  • schema:user-schema - Схема пользователя
  • schema:product-catalog - Схема каталога продуктов
  • schema:order-management - Схема управления заказами
Производительность и оптимизация

Кэширование схем обеспечивает значительное улучшение производительности:
Коды ошибок

При работе с кэшем схем могут возникать следующие ошибки:
Лучшие практики
🚀 Производительность
  • Настройте оптимальное значение TTL в зависимости от частоты изменений
  • Мониторьте hit rate кэша и память Redis
  • Используйте автоматическую инвалидацию при обновлениях
  • Отслеживайте использование памяти Redis
Интеграция с мониторингом

Кэш схем интегрируется с общей системой мониторинга SBRS:
  • Метрики кэша отображаются в дашборде мониторинга
  • Логи операций кэша сохраняются в системе логирования
  • Статистика производительности доступна через API
Made on
Tilda