digital-garden/dev/architecture/highload/Перестройка кэша.md
Struchkov Mark d5e6b54a58
All checks were successful
continuous-integration/drone/push Build is passing
Кэширование
2024-09-11 21:28:43 +03:00

2.2 KiB
Raw Blame History

aliases tags date zero-link parents linked
thundering herd
maturity/🌱
2024-06-18
../../../meta/zero/00 HighLoad
../Кэширование

Представим, что у нас 3 реплики сервиса, которые выполняют какие-то вычисления раз в 30 секунд, а в вычислениях используется кэшированные значения. При Инвалидация кэша может сложиться ситуация при которой все 3 реплики начнут наперегонки обновлять значение в кэше. Это приводит как минимум к лишней нагрузке на базу данных, а как максимум к отказу в обслуживании.

Решить эту проблему можно с использованием ../../../../../_inbox/Блокировка:

  • Получаем доступ к кэшу, его срок жизни истёк. Пытаемся заблокироваться по ключу.
    • Не удалось получить блокировку
      • Ждём снятия ../../../../../_inbox/Блокировка.
        • Если не дождались, возвращаем старые данные кэша
        • Если дождались, значит кто-то построил кэш за нас, выбираем значения ключа заново, возвращаем новые данные.
      • Удалось получить блокировку
        • Строим кэш самостоятельно
        • Снимаем блокировку

Мета информация

Область:: ../../../meta/zero/00 HighLoad Родитель:: ../Кэширование Источник:: Автор:: Создана::

Дополнительные материалы

Дочерние заметки

LIST 
FROM [[]]
WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link)