Кэширование в облачном приложении
Совет
Это содержимое является фрагментом из электронной книги, архитектора облачных собственных приложений .NET для Azure, доступных в .NET Docs или в виде бесплатного скачиваемого PDF-файла, который можно прочитать в автономном режиме.
Преимущества кэширования хорошо понятны. Этот метод работает путем временного копирования часто доступ к данным из внутреннего хранилища данных в быстрое хранилище , расположенное ближе к приложению. Кэширование часто реализуется, где...
- Данные остаются относительно статическими.
- Доступ к данным замедляется, особенно по сравнению со скоростью кэша.
- Данные подвергаются высоким уровням состязания.
Почему?
Как описано в руководстве по кэшированию Майкрософт, кэширование может повысить производительность, масштабируемость и доступность отдельных микрослужб и системы в целом. Это снижает задержку и конкурсность обработки больших объемов одновременных запросов к хранилищу данных. По мере увеличения объема данных и числа пользователей становится больше преимуществ кэширования.
Кэширование является наиболее эффективным, когда клиент неоднократно считывает данные, которые неизменяемы или изменяются редко. Примеры включают справочные сведения, такие как сведения о продукте и ценах, или общие статические ресурсы, которые являются дорогостоящими для создания.
Хотя микрослужбы должны быть без отслеживания состояния, распределенный кэш может поддерживать одновременный доступ к данным состояния сеанса при абсолютной необходимости.
Кроме того, рекомендуется кэширование, чтобы избежать повторяющихся вычислений. Если операция преобразует данные или выполняет сложные вычисления, кэшируйте результат для последующих запросов.
Архитектура кэширования
Облачные собственные приложения обычно реализуют архитектуру распределенного кэширования. Кэш размещается как облачная служба резервного копирования, отдельная от микрослужб. На рисунке 5–15 показана архитектура.
Рис. 5-15. Кэширование в облачном собственном приложении
На предыдущем рисунке обратите внимание, что кэш не зависит от микрослужб и совместно используется. В этом сценарии кэш вызывается шлюзом API. Как описано в главе 4, шлюз служит интерфейсом для всех входящих запросов. Распределенный кэш увеличивает скорость реагирования системы, возвращая кэшированные данные всякий раз, когда это возможно. Кроме того, разделение кэша от служб позволяет кэшу масштабировать или выходить независимо, чтобы удовлетворить повышенные требования к трафику.
На предыдущем рисунке представлен общий шаблон кэширования, известный как шаблон кэширования в сторону кэша. Входящий запрос сначала запрашивает кэш (шаг 1) для ответа. При обнаружении данные возвращаются немедленно. Если данные не существуют в кэше (известный как пропущенный кэш), он извлекается из локальной базы данных в подчиненной службе (шаг 2). Затем он записывается в кэш для будущих запросов (шаг 3) и возвращается вызывающему объекту. Необходимо принять меры для периодического вытеснения кэшированных данных, чтобы система оставалась своевременной и согласованной.
По мере роста общего кэша может оказаться полезным секционировать свои данные по нескольким узлам. Это может помочь свести к минимуму спорные ситуации и повысить масштабируемость. Многие службы кэширования поддерживают возможность динамического добавления и удаления узлов и перебалансирования данных между секциями. Этот подход обычно включает кластеризация. Кластеризация предоставляет коллекцию федеративных узлов в виде простого единого кэша. Однако данные распределяются по узлам после предопределенной стратегии распределения, которая равномерно распределяет нагрузку.
Кэш Azure для Redis
Кэш Azure для Redis — это безопасная служба кэширования данных и брокера обмена сообщениями, полностью управляемая корпорацией Майкрософт. Предложение PaaS используется как платформа как услуга, обеспечивает высокую пропускную способность и доступ к данным с низкой задержкой. Служба доступна любому приложению в Azure или за ее пределами.
Служба Кэш Azure для Redis управляет доступом к серверам Redis с открытым исходным кодом, размещенным в центрах обработки данных Azure. Служба выступает в качестве фасада, обеспечивающего управление, управление доступом и безопасность. Служба изначально поддерживает широкий набор структур данных, включая строки, хэши, списки и наборы. Если приложение уже использует Redis, оно будет работать с Кэш Azure для Redis.
Кэш Azure для Redis больше, чем простой сервер кэша. Он может поддерживать ряд сценариев для улучшения архитектуры микрослужб:
- Хранилище данных в памяти
- Распределенная нереляционная база данных
- Брокер обмена сообщениями
- Сервер конфигурации или обнаружения
Для расширенных сценариев копию кэшированных данных можно сохранить на диске. Если катастрофическое событие отключает как основной, так и реплика кэш, кэш восстанавливается из последнего моментального снимка.
Кэш Redis для Azure доступен в нескольких предопределенных конфигурациях и ценовых категориях. Уровень "Премиум" включает множество функций корпоративного уровня, таких как кластеризация, сохраняемость данных, гео-реплика и изоляция виртуальной сети.