Где мы кэшируем данные? Данные кэшируются везде, от внешнего интерфейса до серверного! Воспользуйтесь принципом локальности ссылки: недавно запрошенные данные, скорее всего, будут запрошены снова. Существуют на всех уровнях архитектуры, но часто встречаются на уровне, ближайшем к внешнему интерфейсу.

На этой диаграмме показано, где мы кэшируем данные в типичной архитектуре.

В потоке есть несколько слоев.

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

2. CDN

  • CDN — это сеть серверов, которая распространяет контент с «исходного» сервера по всему миру путем кэширования контента рядом с местом, где каждый конечный пользователь выходит в Интернет через устройство с доступом в Интернет.
  • CDN кэширует статические веб-ресурсы. Клиенты могут получать данные с ближайшего узла CDN.

3. Балансировщик нагрузки

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

4. Инфраструктура обмена сообщениями

  • Брокеры сообщений сначала сохраняют сообщения на диске, а затем потребители извлекают их в своем собственном темпе. В зависимости от политики хранения данные кэшируются в кластерах Kafka на определенный период времени.

5. Кэширование сервисов/приложений

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

6. Распределенный кэш

  • Распределенный кеш — это кеш, данные которого распределены по нескольким узлам в кластере, а также по нескольким кластерам в нескольких центрах обработки данных, расположенных по всему миру.
  • Распределенный кеш, такой как Redis, хранит пары ключ-значение для нескольких служб в памяти. Он обеспечивает гораздо лучшую производительность чтения/записи, чем база данных.

7. Полнотекстовый поиск

  • Иногда нам нужно использовать полнотекстовый поиск, такой как Elastic Search, для поиска документов или поиска по журналам. Копия данных также индексируется в поисковой системе.

8. База данных —Даже в базе данных у нас есть разные уровни кеша:

  • WAL (журнал опережающей записи):данные сначала записываются в WAL перед построением индекса B-дерева.
  • Bufferpool: область памяти, выделенная для кэширования результатов запроса.
  • Материализованное представление. Предварительно вычисляйте результаты запросов и сохраняйте их в таблицах базы данных для повышения производительности запросов.
  • Журнал транзакций: запись всех транзакций и обновлений базы данных.
  • Журнал репликации: используется для записи состояния репликации в кластере базы данных.

9. Кэш диска:

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

10. Кэширование DNS

  • Помогает повысить скорость доступа к веб-страницам, сохраняя IP-адрес доменного имени в кеше. Другими словами, вместо того, чтобы каждый раз выполнять DNS-запрос, IP-адрес можно быстро извлечь из кеша.

Для получения дополнительной информации перейдите по ссылке

Не забывайте нажимать кнопки «Аплодисменты» и «Подписаться», чтобы помочь мне написать больше подобных статей.

Рекомендации