Контролировать использование API, ограничивая частоту вызовов (например, 100 вызовов/мин) по сравнению с общим количеством вызовов за более длительный период (например, 10 000 вызовов/месяц).
→Используйте политику `rate-limit` для частоты вызовов. Используйте политику `quota` для общего объема вызовов.
Почему: `rate-limit` ограничивает кратковременные всплески и возвращает HTTP 429. `quota` устанавливает ограничение использования на более длительный срок (например, расчетный период) и возвращает HTTP 403 при превышении.
Источник↗
Кешировать ответы API в API Management для снижения нагрузки на бэкенд, при этом ключ кеша изменяется в зависимости от заголовка запроса.
→Используйте политику `<cache-lookup vary-by-header="..." />` во входящем разделе и политику `<cache-store duration="..." />` в исходящем разделе.
Почему: Эта двухкомпонентная комбинация политик включает кэширование ответов. `cache-lookup` проверяет наличие кэшированного элемента, а `cache-store` сохраняет ответ. Атрибуты `vary-by` обеспечивают уникальные записи кеша для различных вариантов запросов.
Управление изменениями в API. Требуется внесение критического изменения по сравнению с некритическим изменением, которое необходимо протестировать.
→Используйте Versions для критических изменений (например, /v1, /v2). Используйте Revisions для некритических изменений и безопасных, поэтапных развертываний.
Почему: Версионирование позволяет одновременно иметь несколько активных версий API. Редакции позволяют изменять API в автономном режиме, тестировать его, а затем делать его "текущей" редакцией без простоя.
Уведомить несколько независимых нижестоящих служб, когда событие происходит в службе Azure (например, создан BLOB-объект, создана группа ресурсов).
→Используйте Azure Event Grid. Создайте системную тему для ресурса Azure и подписки на события для каждого нижестоящего обработчика.
Почему: Event Grid — это полностью управляемая служба pub/sub на основе push-уведомлений, которая отделяет издателей событий от подписчиков, позволяя создавать реактивные, событийно-ориентированные архитектуры.
Источник↗
Принимать большой объем телеметрии или данных о событиях (миллионы событий в секунду) со многих устройств.
→Используйте Azure Event Hubs.
Почему: Event Hubs — это массово масштабируемая платформа потоковой передачи данных, разработанная для высокопроизводительного приема. Она использует модель разделенного потребителя для параллельной обработки.
Обеспечить, чтобы события из одного и того же источника (например, определенного устройства IoT) обрабатывались в порядке одним и тем же потребителем.
→Отправляйте события в Event Hubs с ключом раздела, установленным на идентификатор источника (например, ID устройства).
Почему: Event Hubs маршрутизирует все сообщения с одним и тем же ключом раздела в один и тот же раздел. Внутри раздела порядок сообщений сохраняется.
Обработать последовательность связанных сообщений в строгом порядке First-In, First-Out (FIFO).
→Используйте сеансы Azure Service Bus. Отправляйте все связанные сообщения с одним и тем же `SessionId`.
Почему: Сеансы предоставляют параллельный, упорядоченный поток сообщений. Приемник, поддерживающий сеансы, блокирует сеанс, гарантируя, что сообщения обрабатываются последовательно одним потребителем.
Один издатель отправляет сообщения в тему, но несколько подписчиков хотят получать только подмножество этих сообщений на основе их свойств.
→Используйте тему Service Bus с несколькими подписками. Примените SQL-фильтры или фильтры корреляции к каждой подписке.
Почему: Это канонический шаблон publish-subscribe с маршрутизацией на основе контента. Каждая подписка получает копию сообщения, если оно соответствует ее правилу фильтрации.
Сообщение не может быть успешно обработано после нескольких попыток и должно быть отложено для последующей проверки.
→Позвольте сообщению завершиться неудачей обработки, пока не будет превышено максимальное количество доставок. Оно будет автоматически перемещено в очередь недоставленных сообщений (DLQ).
Почему: DLQ — это встроенная подочередь для "ядовитых" сообщений. Это предотвращает блокировку основной очереди ошибочным сообщением и позволяет выполнять автономный анализ и повторную обработку.
Выбрать службу обмена сообщениями для: корпоративных команд, реактивных событий или телеметрии большого объема.
→Service Bus для команд (заказы, транзакции). Event Grid для реактивных событий (создан BLOB-объект, изменен ресурс). Event Hubs для телеметрии (данные IoT, потоки кликов).
Почему: Service Bus предлагает богатые функции, такие как упорядочивание, транзакции и отложенные сообщения. Event Grid предназначен для легковесной маршрутизации событий на основе push-уведомлений. Event Hubs предназначен для высокопроизводительной потоковой передачи данных.