Рубріки: Подборки

Как обновить кеш. Четыре способа

Богдан Мирченко

Разработчик Вишну Чиламакуру поделился в своем блоге четырьмя способами обновления кеша. Эти стратегии представляют собой добавление слоя кеша перед базой данных (БД), который может помочь избежать неравномерную нагрузку и всплеск трафика приложений.

Стратегия обновления кеша

Стороннее кеширование/отложенная загрузка (Cache Aside)

Стороннее кеширование


В этом случае приложение отвечает за чтение и запись из хранилища. Кеш не взаимодействует с хранилищем напрямую. Приложение ищет запись в кеше, если не находит, то загружает запись из базы данных, затем добавляет запись в кеш и возвращает ее.

Последующие чтения данных, добавленных в кеш, выполняются быстро. Эту стратегию также можно название назвать отложенной загрузкой (lazy loading). То есть кешируются только запрошенные данные, что позволяет избежать заполнения кеша незапрошенными данными. 

Недостатки стратегии:

Каждый промах кеша приводит к трем отключениям, что может спровоцировать задержку;

  • Данные могут устареть, если будут обновлены в базе данных. Эта проблема устраняется установкой времени жизни пакетных данных, которое приводит к обновлению записи кеша, или использованием сквозной записи;
  • Когда узел выходит из строя, он заменяется новым пустым узлом, что увеличивает задержку.

 

Сквозная запись (Write Through)

Сквозная запись

Приложение использует кеш в качестве основного хранилища данных, считывая и записывая в него информацию, в то время как кеш отвечает за чтение и запись в БД. Приложение добавляет/обновляет запись в кеш, затем он синхронно делает запись в хранилище данных, а потом возвращает ее. 

Последующее чтение только что записанных данных происходит быстро. По мнению Вишну Чиламакуру, пользователи обычно более терпимы к задержкам при обновлении данных, чем при их чтении.

Недостатки стратегии:

  • Когда новый узел создается из-за сбоя или масштабирования, он не будет кешировать записи, пока запись не будет обновлена в базе данных;
  • Большая часть записанных данных может никогда не быть прочитана, что можно минимизировать с помощью TTL.

 

Отложенная запись (Write Behind)

Отложенная запись

Приложение добавляет/обновляет запись в кеше, затем асинхронно делает запись в хранилище данных, улучшая производительность.

Недостатки стратегии:

  • Если кеш выйдет из строя до того, как его содержимое попадет в хранилище данных, может произойти их потеря;
  • Этот метод сложнее реализовать, чем два первых.

 

Отложенное обновление (Refresh Ahead)

Отложенное обновление

Стратегия позволяет настроить кеш для автоматического обновления любой недавно использованной записи кеша до истечения срока ее действия. Может привести к уменьшению загрузки по сравнению с методом сквозного чтения, если кеш может точно предсказать, какие элементы могут потребоваться в будущем.

Недостаток стратегии связан с неточным прогнозированием того, какие элементы могут потребоваться в будущем, что может привести к снижению производительности приложения. 

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023