В этой статье представлено решение с высоким уровнем доступности для веб-приложения с большим объемом данных, которые должны быть доступны в течение определенного периода времени. Решение включает использование Azure Cosmos DB в качестве основного хранилища данных и использование канала изменений Azure Cosmos DB для репликации данных в дополнительное хранилище с низкой стоимостью. По истечении указанного периода времени Функции Azure используется для удаления данных из Azure Cosmos DB. Данные в дополнительном хранилище остаются доступными в течение более длительного периода времени, чтобы включить другие решения для аудита и анализа. Решение также обеспечивает высокую устойчивость путем репликации данных в разные службы данных.
Архитектура
Скачайте файл Visio для этой архитектуры.
Поток данных
- Клиент проходит проверку подлинности с помощью идентификатора Microsoft Entra и предоставляет доступ к веб-приложениям, размещенным в службе приложение Azure.
- Azure Front Door, брандмауэр и подсистема балансировки нагрузки уровня 7, переключает трафик пользователей в резервный регион, если произошел региональный сбой.
- Служба приложений размещает веб-сайты и ВЕБ-API RESTful. Клиенты браузера выполняют асинхронные приложения JavaScript и XML (AJAX), использующие API.
- Веб-API делегируют ответственность за код, размещенный функциями для обработки фоновых задач. Задачи помещаются в очереди хранилища очередей Azure.
- Сообщения в очереди активируют функции, которые выполняют фоновые задачи.
- Кэш Azure для Redis кэширует данные базы данных для функций. С помощью кэша решение выгрузит действие базы данных и ускоряет работу приложений-функций и веб-приложений.
- Azure Cosmos DB содержит недавно созданные данные.
- Azure Cosmos DB выдает канал изменений, который можно использовать для репликации изменений.
- Приложение-функция считывает канал изменений и реплицирует изменения в таблицы хранилища таблиц Azure. Другое приложение-функция периодически удаляет истекшие данные из Azure Cosmos DB.
- Хранилище таблиц предоставляет хранилище с низкой стоимостью.
Компоненты
- Идентификатор Microsoft Entra Azure — это служба управления удостоверениями и доступом, которая может синхронизироваться с локальным каталогом.
- Azure DNS — это служба размещения с высоким уровнем доступности для доменов DNS, которая предоставляет приложениям быстрые запросы DNS и быстрые обновления записей DNS. Управление Azure DNS похоже на управление другими службами Azure и использует те же учетные данные, API, средства и выставление счетов.
- Azure Front Door — это безопасная сеть доставки содержимого (CDN) и подсистема балансировки нагрузки с мгновенной отработкой отказа. Он работает на границе близко к пользователям, ускоряя доставку содержимого при защите приложений, API и веб-сайтов от киберугрызений.
- Служба приложений — это полностью управляемая служба для создания, развертывания и масштабирования веб-приложений. Вы можете создавать приложения с помощью .NET, .NET Core, Node.js, Java, Python или PHP. Приложения могут выполняться в контейнерах или в Windows или Linux. При переносе мейнфреймов интерфейсные экраны и веб-интерфейс можно представить в коде как REST API на основе HTTP. Они могут быть разделены и могут быть без отслеживания состояния для оркестрации системы на основе микрослужб. Дополнительные сведения о веб-API см. в статье restful web API design.
- Функции предоставляют среду для запуска небольших частей кода, называемых функциями, без необходимости устанавливать инфраструктуру приложений. Его можно использовать для обработки массовых данных, интеграции систем, работы с устройствами Интернета вещей и создания простых API и микрослужб. С помощью микрослужб можно создавать серверы, которые подключаются к службам Azure и всегда содержат актуальные сведения.
- Служба хранилища Azure — это набор высокомасштабируемых и безопасных облачных служб для данных, приложений и рабочих нагрузок. Он включает в себя Файлы Azure, хранилище таблиц и хранилище очередей. Файлы Azure часто являются эффективным инструментом для переноса рабочих нагрузок мейнфреймов.
- Хранилище очередей обеспечивает простую, эффективную и устойчивую очередь сообщений для больших рабочих нагрузок.
- Хранилище таблиц — это хранилище ключей NoSQL для быстрого разработки, использующего массовые полуструктурированные наборы данных. Таблицы без схемы и легко адаптируются в соответствии с потребностями. Доступ является быстрым и экономичным для многих типов приложений и обычно стоит меньше, чем другие типы хранилища ключей.
- Кэш Azure для Redis — это полностью управляемая служба кэширования в памяти и брокер сообщений для обмена данными и состоянием между вычислительными ресурсами. Он включает как открытый код Redis, так и коммерческий продукт из Redis Labs в качестве управляемых служб. Вы можете повысить производительность приложений обработки транзакций в сети с высокой пропускной способностью, создав их для масштабирования и использования хранилища данных в памяти, например Кэш Azure для Redis.
- Azure Cosmos DB — это глобально распределенная база данных с несколькими моделями от Корпорации Майкрософт, которая позволяет решениям эластично и независимо масштабировать пропускную способность и хранилище в любом количестве географических регионов. Она предлагает гарантии пропускной способности, задержки, доступности и согласованности с комплексными соглашениями об уровне обслуживания (SLA).
Альтернативные варианты
- Диспетчер трафика Azure направляет входящие DNS-запросы в глобальные регионы Azure на основе выбора методов маршрутизации трафика. Она также обеспечивает автоматическую отработку отказа и маршрутизацию производительности.
- Azure сеть доставки содержимого кэширует статическое содержимое на пограничных серверах для быстрого реагирования и использует оптимизацию сети для улучшения отклика динамического содержимого. сеть доставки содержимого особенно полезно, если база пользователей является глобальной.
- Приложения контейнеров Azure — это полностью управляемая бессерверная служба контейнеров , используемая для создания и развертывания современных приложений в масштабе.
- Служба Azure Kubernetes (AKS) — это полностью управляемая служба Kubernetes для развертывания и администрирования контейнерных приложений. Его можно использовать для реализации архитектуры микрослужб, компоненты которых масштабируется независимо по требованию.
- Экземпляры контейнеров Azure предоставляет быстрый и простой способ выполнения задач без необходимости управлять инфраструктурой. Это полезно во время разработки или выполнения незапланированных задач.
- Служебная шина Azure представляет собой надежную облачную службу обмена сообщениями и обеспечивает простую гибридную интеграцию. Его можно использовать вместо хранилища очередей в этой архитектуре. Дополнительные сведения см. в статье о очередях хранилища и служебная шина очередях, сравниваемых и контрастных.
Подробности сценария
Это решение использует Azure Cosmos DB для хранения большого объема данных, которые использует веб-приложение. Веб-приложения, обрабатывающие большие объемы данных, получают преимущества от возможности Azure Cosmos DB эластично и независимо масштабировать пропускную способность и хранилище.
Другим ключевым компонентом решения является канал изменений Azure Cosmos DB. При внесении изменений в базу данных поток канала изменений отправляется в триггер функций, управляемых событиями. Затем функция запускает и реплицирует изменения в таблицы хранилища таблиц, которые предоставляют решение для хранения с низкой стоимостью.
Веб-приложение нуждается в данных только в течение ограниченного периода времени. Решение использует этот факт для дальнейшего сокращения затрат. В частности, другая функция периодически выполняется и удаляет истекшие данные из Azure Cosmos DB. Помимо активации функции также можно запланировать выполнение в заданное время.
Потенциальные варианты использования
Архитектура подходит для любого приложения, которое:
- Использует огромный объем данных.
- Требует, чтобы данные всегда были доступны при необходимости.
- Использует данные, срок действия которого истекает.
Примеры включают приложения, которые:
- Персонализация взаимодействия с клиентами и взаимодействие с помощью динамических веб-каналов данных и датчиков в физических расположениях.
- Отслеживайте привычки расходов клиентов и поведение покупок.
- Отслеживайте автопарки, собирая данные о расположении автомобиля, производительности и поведении водителя для повышения эффективности и безопасности.
- Прогноз погоды.
- Предлагайте интеллектуальные системы трафика или реализуйте интеллектуальные системы трафика или используйте смарт-технологию для мониторинга трафика.
- Анализ производственных данных Интернета вещей.
- Отображение данных смарт-счетчика или использование смарт-технологий для мониторинга данных счетчика.
Рекомендации
Эти рекомендации реализуют основные принципы платформы Azure Well-Architected Framework, которая является набором руководящих принципов, которые можно использовать для улучшения качества рабочей нагрузки. Дополнительные сведения см. в статье Microsoft Azure Well-Architected Framework.
- При реализации и обслуживании этого решения вы влечете за собой дополнительные затраты.
- Использование канала изменений для репликации требует меньше обслуживания кода, чем выполнение репликации в основном приложении.
- Необходимо перенести существующие данные. Процесс миграции требует нерегламентированных скриптов или подпрограмм для копирования старых данных в учетные записи хранения. При переносе данных убедитесь, что для отслеживания хода миграции используются метки времени и флаги копирования.
- Чтобы избежать удаления записей из дополнительного хранилища таблиц Azure, игнорируйте каналы удаления, созданные при удалении записей функций из Azure Cosmos DB.
Соавторы
Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.
Автор субъекта:
- Nabil Siddiqui | Архитектор облачных решений — инновации в сфере цифровых технологий и приложений
Следующие шаги
- Стиль архитектуры веб-очередей и рабочей роли
- Проектирование географически распределенного приложения
- Глобальное распределение данных с помощью Azure Cosmos DB
- Выбор подходящего API для Azure Cosmos DB
- Хранение и доступ к данным NoSQL с помощью Azure Cosmos DB для таблицы
- Работа с данными NoSQL в Azure Cosmos DB
- Как моделировать и секционировать данные в Azure Cosmos DB на примере реальной задачи
- Возможности для переноса локальных или облачных данных в Azure Cosmos DB
- Перенос сотен терабайт данных в Azure Cosmos DB
- Шаблоны проектирования веб-канала изменений в Azure Cosmos DB
- Бессерверные архитектуры на основе событий с помощью Azure Cosmos DB и Функции Azure
- Общие сведения о службе фабрики данных Azure, службе интеграции данных в облаке
- Оркестрация перемещения и преобразования данных в Фабрика данных Azure или Azure Synapse Pipeline