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

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

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

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

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

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

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


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

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

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

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

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

 

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

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

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

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

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

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

 

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

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

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

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

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

 

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

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

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

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

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

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024