Что такое служебная шина Azure?

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

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

Обзор

Данные передаются между приложениями и (или) службами с помощью сообщений. Сообщением называется контейнер с данными, дополненный метаданными. Эти данные могут быть любым типом информации, включая структурированные данные, закодированные с помощью стандартных форматов, таких как JSON, XML, Apache Avro, обычный текст.

Вот несколько распространенных сценариев для обмена сообщениями:

  • Обмен сообщениями. Передача бизнес-данных, например данных о продажах, заказах и перемещении запасов, а также журналов.

  • Разделение задач между приложениями. Повышение надежности и масштабируемости приложений и служб. Производители и потребители не обязаны одновременно быть доступны или подключены к Интернету. Балансировка нагрузки избавляет от перегрузки служб при всплесках трафика.

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

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

  • Транзакции. Вы можете выполнять несколько операций в рамках одной атомарной транзакции. Например, в области транзакции можно выполнить следующие операции:

    1. Получение сообщения из одной очереди.
    2. Публикация результатов обработки в одну или несколько очередей.
    3. Перемещение входного сообщения из исходной очереди.

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

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

Если вы уже работали с другими брокерами сообщений, такими как Apache ActiveMQ, основные понятия Служебной шины будут вам знакомы. Так как Служебная шина предоставляется по модели PaaS (платформа как услуга), она позволяет не беспокоиться о приведенных ниже действиях. которые выполняет платформа Azure:

  • обработка аппаратных сбоев;
  • установка исправлений для операционных систем или продуктов;
  • размещение журналов и управление дисковым пространством;
  • управление резервными копиями;
  • отработка отказа на резервный компьютер;

Основные понятия

В этом разделе описываются основные понятия Служебной шины.

Очереди

Сообщений отправляются и получаются через очереди. Очереди позволяют хранить сообщения, пока принимающее приложение сможет получить и обработать их.

На схеме показана очередь служебная шина с отправителем и получателем отправки и получения сообщений.

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

Сообщения доставляются в режиме запроса (после получения запроса). В отличие от модели с опросом занятости, которая реализована в некоторых других облачных очередях, операция извлечения здесь может существовать долго, вплоть до появления доступного сообщения.

Примечание.

Сравнение очередей Служебной шины с очередями службы хранилища см. в статье Сравнение и сопоставление очередей службы хранилища и очередей Служебной шины.

Разделы

Вы также можете использовать разделы для отправки и получения сообщений. Хотя очередь часто используется для обмена данными с точками, разделы полезны в сценариях публикации и подписки.

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

Разделы могут включать несколько независимых подписок, которые присоединяются к разделу, а в остальном для получателя полностью идентичны обычным очередям. Подписка на раздел может получать копию любого сообщения, отправленного в этот раздел. Подписки — это именованные сущности. По умолчанию подписки являются устойчивыми, но для них можно настроить истечение срока действия с автоматическим удалением. Служебная шина уровня "Премиум" также позволяет использовать API JMS (служба сообщений Java) для создания временных подписок, которые существуют только в течение одного подключения.

Вы можете определить правила для подписки. Правило подписки содержит фильтр для определения условия, по которому сообщение копируется в соответствующую подписку, и необязательное действие, которое может изменять метаданные сообщения. Дополнительные сведения см. в статье Фильтры и действия разделов. Эта возможность удобна в следующих случаях:

  • вы не хотите, чтобы подписка получала все сообщения, отправленные в раздел;
  • вы хотите внедрять дополнительные метаданные в сообщения, проходящие через подписку.

Примечание.

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

Пространства имен

Пространство имен — это контейнер для всех компонентов обмена сообщениями (очереди и разделы). Пространство имен может содержать одну или несколько очередей и разделов, и она часто служит контейнером приложения.

Пространство имен можно сопоставить с тем, что в терминологии других брокеров называется "сервером", но эти понятия не полностью эквивалентны. Пространство имен Служебной шины предоставляет вам долю емкости большого кластера, который состоит из десятков активных виртуальных машин. При необходимости он охватывает три зоны доступности Azure. Благодаря этому вы получаете все преимущества доступности и надежности, предоставляемые использованием брокера сообщений в огромном масштабе. При этом вам также можно не беспокоиться о базовых сложностях. Служебная шина реализует бессерверный обмен сообщениями.

Расширенные функции

Служебная шина также поддерживает дополнительные возможности для более сложных схем обмена сообщениями. В разделах ниже описываются основные возможности.

Сеансы обмена сообщениями

Чтобы реализовать гарантию первого входа (FIFO) в обработке сообщений в очередях или подписках служебная шина, используйте сеансы. Сеансы также можно использовать в реализации шаблонов ответа на запросы. Шаблон ответа на запрос позволяет приложению отправителя отправлять запрос и предоставляет способ правильной отправки ответа в приложение отправителя. Дополнительные сведения см. в статье Сеансы обмена сообщениями.

Автоматическая переадресация

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

Перемещение в очередь недоставленных сообщений

служебная шина очереди и подписки раздела предоставляют вторичную вложенную очередь, называемую очередью недоставленных писем (DLQ). Очередь недоставленных писем содержит сообщения, которые не могут быть доставлены получателю или сообщения, которые не могут быть обработаны. Вы можете удалить сообщения из очереди недоставленных сообщений и проверить их. Приложение может с помощью оператора, исправлять проблемы и повторно отправить сообщение, регистрировать тот факт, что произошла ошибка и предпринять исправление. Дополнительные сведения см. в статье Обзор очередей недоставленных сообщений служебной шины.

Доставка по расписанию

Сообщения можно отправлять в очередь или раздел для отложенной обработки. Например, вы можете запланировать обработку задания системой в определенное время. Дополнительные сведения см. в разделе Запланированные сообщения.

Отсрочка сообщений

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

Транзакции

Транзакция объединяет две или несколько операций в область выполнения. Служебная шина поддерживает операции группирования относительно одной сущности обмена сообщениями (очереди, раздела, подписки) в области транзакции. Дополнительные сведения см. в статье Обзор обработки транзакций в служебной шине.

Фильтры и действия

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

Автоматическое удаление при простое

Автоматическое удаление при простое позволяет настроить интервал бездействия, по истечении которого очередь автоматически удаляется. Интервал сбрасывается при наличии трафика в очереди. Минимальная длительность составляет 5 минут.

Поиск повторяющихся данных

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

Безопасность

служебная шина поддерживает такие протоколы безопасности, как Подписанные URL-адреса (SAS), контроль доступа на основе ролей (RBAC) и управляемые удостоверения для ресурсов Azure.

Служебная шина поддерживает стандартные протоколы AMQP 1.0 и HTTP/REST.

Геоизбыточное аварийное восстановление

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

Примечание.

Дополнительные сведения об этих возможностях см. в статье Дополнительные возможности Служебной шины Azure.

обеспечение соответствия стандартам и протоколам.

Основным протоколом передачи данных для Служебной шины является AMQP (расширенный протокол управления очередью сообщений) версии 1.0, реализованный по открытому стандарту ISO/IEC. Он позволяет клиентам создавать приложения, работающие со Служебной шиной и локальными брокерами, например ActiveMQ или RabbitMQ. Руководство по протоколу AMQP содержит подробные сведения на случай, если вам нужна такая абстракция.

Служебная шина уровня "Премиум" полностью совместима с API службы сообщений Java (JMS) 2.0 для Java/Jakarta EE. И наконец, Служебная шина уровня "Стандартный" поддерживает подмножество JMS 1.1, предназначенное для работы с очередями. JMS представляет собой популярную абстракцию для брокеров сообщений, которая интегрируется со множеством приложений и платформ, включая популярную платформу Spring. Чтобы перейти на использование Служебной шины Azure с других брокеров, достаточно просто воссоздать топологию очередей и разделов, а затем изменить зависимости и конфигурацию на стороне поставщика клиента. Пример вы найдете в руководстве по миграции на ActiveMQ.

Клиентские библиотеки

Полностью поддерживаемые клиентские библиотеки Служебной шины включены в пакет Azure SDK.

Основным протоколом Служебной шины Azure является AMQP 1.0, с которым можно работать из любого совместимого клиента. Некоторые клиенты AMQP с открытым кодом включают примеры, явным образом демонстрирующие взаимодействие со Служебной шиной. Ознакомьтесь с руководством по протоколу AMQP 1.0, чтобы узнать, как напрямую использовать возможности Служебной шины через клиенты AMQP 1.0.

Язык Библиотека
Java Apache Qpid Proton-J
C/C++ Azure uAMQP C, Apache Qpid Proton-C
Python Azure uAMQP для Python, Apache Qpid Proton Python
PHP Azure uAMQP для PHP
Ruby Apache Qpid Proton Ruby
Go Azure Go AMQP, Apache Qpid Proton Go
C#/F#/VB AMQP .NET Lite, Apache NMS AMQP
JavaScript/Node Rhea

Интеграция

Служебная шина полностью интегрируется со многими службами Microsoft и Azure, например со следующими:

Следующие шаги

Сведения о начале работы с обменом сообщениями через служебную шину см. в следующих статьях: