Серия о проектировании систем : Кэш
Кэш — это временное хранилище, в котором в памяти сохраняются результаты ресурсоёмких запросов или часто используемые данные, чтобы последующие обращения обрабатывались быстрее.
При каждой загрузке страницы выполняется один или несколько запросов к базе данных. Многократные обращения к базе могут значительно снижать производительность приложения. Кэш помогает решить эту проблему.
> Уровень кэширования
Отдельный уровень кэширования даёт несколько преимуществ:
- повышает производительность системы;
- снижает нагрузку на базу данных;
- позволяет масштабировать кэш независимо от других компонентов.
Работа происходит следующим образом:
1. Получив запрос, веб-сервер сначала проверяет, есть ли нужный ответ в кэше.
2. Если ответ есть, сервер отправляет его клиенту.
3. Если ответа нет, сервер обращается к базе данных, сохраняет результат в кэше и отправляет его клиенту.
Такая стратегия называется read-through cache — «сквозное чтение через кэш».
Существуют и другие стратегии кэширования. Выбор зависит от типа и объёма данных, а также от характера обращений к ним.
> Когда использовать кэш?
Кэш особенно полезен, когда данные:
- часто читаются;
- редко изменяются.
Важные данные должны храниться в постоянном хранилище, поскольку кэш обычно находится в оперативной памяти и не предназначен для долговременного хранения.
> Политика истечения срока действия
Рекомендуется задавать срок жизни кэшированных данных.
Без такой политики данные могут оставаться в памяти неограниченно долго.
Слишком короткий срок жизни приведёт к частым обращениям к базе данных, а слишком длинный — к тому, что данные в кэше устареют.
> Согласованность данных
Необходимо поддерживать синхронизацию между основным хранилищем и кэшем.
Несогласованность может возникнуть, если изменения в базе данных и кэше выполняются не в рамках одной транзакции.
> Предотвращение сбоев
Один сервер кэша является единой точкой отказа, или SPOF — Single Point of Failure.
Поэтому для повышения отказоустойчивости рекомендуется использовать несколько серверов кэша.
> Политика вытеснения
Когда кэш заполняется, добавление новых элементов может приводить к удалению уже существующих.
Этот процесс называется вытеснением из кэша.
Самая популярная политика вытеснения — LRU, Least Recently Used, то есть удаление данных, которые не использовались дольше всего.
👉 Java Portal
Post #2509
978

- ❤ 1