Поделиться через


Кэширование в облачном приложении

Подсказка

Это фрагмент из электронной книги «Архитектура облачных нативных приложений .NET для Azure», доступен на .NET Docs или как бесплатный загружаемый PDF-файл, который можно прочитать в автономном режиме.

Миниатюра обложки электронной книги Azure с Cloud Native .NET приложениями.

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

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

Почему?

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

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

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

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

Архитектура кэширования

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

Кэширование в облачном собственном приложении

Рис. 5-15. Кэширование в облачном собственном приложении

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

На предыдущем рисунке представлен общий шаблон кэширования, известный как шаблон обхода кэша. Для входящего запроса сначала проверьте кэш (шаг 1) на наличие ответа. При обнаружении данные возвращаются немедленно. Если данные не существуют в кэше (известный как пропущенный кэш), он извлекается из локальной базы данных в подчиненной службе (шаг 2). Затем он записывается в кэш для будущих запросов (шаг 3) и возвращается вызывающему объекту. Необходимо принять меры для периодического вытеснения кэшированных данных, чтобы система оставалась своевременной и согласованной.

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

Кэш Azure для Redis

Кэш Azure для Redis — это безопасная служба кэширования данных и брокера обмена сообщениями, полностью управляемая корпорацией Майкрософт. Потребляемая как предложение платформы как услуги (PaaS), она обеспечивает высокую пропускную способность для доступа к данным с низкой задержкой. Служба доступна любому приложению в Azure или за ее пределами.

Служба кэша Azure для Redis управляет доступом к серверам Redis с открытым кодом, размещенным в центрах обработки данных Azure. Служба выступает в качестве фасада, обеспечивающего управление, контроль доступа и безопасность. Служба изначально поддерживает широкий набор структур данных, включая строки, хэши, списки и наборы. Если приложение уже использует Redis, оно будет работать as-is с кэшем Azure для Redis.

Кэш Azure для Redis — это больше, чем простой сервер кэша. Он может поддерживать ряд сценариев для улучшения архитектуры микрослужб:

  • Хранилище данных в памяти
  • Распределенная нереляционная база данных
  • Брокер сообщений
  • Сервер конфигурации или сервер обнаружения

Для расширенных сценариев копию кэшированных данных можно сохранить на диске. Если катастрофическое событие отключает как основной, так и кэш реплики, кэш восстанавливается из последнего моментального снимка.

Кэш Redis для Azure доступен в нескольких предопределенных конфигурациях и ценовых категориях. Уровень "Премиум" включает множество функций корпоративного уровня, таких как кластеризация, сохраняемость данных, георепликация и изоляция виртуальной сети.