Что такое служебная шина Azure?
Служебная шина Azure — это полностью управляемый корпоративный брокер сообщений с поддержкой очередей сообщений и разделов для публикации и подписки (в пространстве имен). Служебная шина используется для разделения приложений и служб, что предоставляет следующие преимущества:
- распределение нагрузки между конкурирующими рабочими ролями;
- безопасная маршрутизация для передачи данных и команд управления через границы служб и приложений;
- координация транзакционных работ, которые требуют высокий надежности.
Примечание
Сравнение служб сообщений Azure см. в статье Сравнение трех служб обмена сообщениями Azure: Сетка событий, Центры событий и Служебная шина.
Обзор
Данные передаются между приложениями и (или) службами с помощью сообщений. Сообщением называется контейнер с данными, дополненный метаданными. В нем могут содержаться любые данные, включая структурированные данные, закодированные в любом из распространенных форматов (например, JSON, XML, Apache Avro, обычный текст).
Вот несколько распространенных сценариев для обмена сообщениями:
Обмен сообщениями. Передача бизнес-данных, например данных о продажах, заказах и перемещении запасов, а также журналов.
Разделение задач между приложениями. Повышение надежности и масштабируемости приложений и служб. Производители и потребители не обязаны одновременно быть доступны или подключены к Интернету. Балансировка нагрузки избавляет от перегрузки служб при всплесках трафика.
Балансировка нагрузки. Несколько конкурирующих потребителей могут одновременно считывать из очереди сообщения, которые безопасно и эксклюзивно закрепляются за конкретными потребителями.
Разделы и подписки. Включите поддержку отношений один ко многим между издателями и подписчиками, чтобы подписчики могли выбирать определенные сообщения из потока опубликованных сообщений.
Транзакции. Вы можете выполнять несколько операций в рамках одной атомарной транзакции. Например, в области транзакции можно выполнить следующие операции:
- Получение сообщения из одной очереди.
- Публикация результатов обработки в одну или несколько очередей.
- Перемещение входного сообщения из исходной очереди.
Результаты обработки становятся доступными для следующих потребителей только при условии успешного выполнения каждой из операций, включая успешное согласование входного сообщения, что гарантирует однократную обработку. Такая модель транзакций служит надежной основой для реализации шаблона компенсирующих транзакций в общем контексте решения.
Сеансы обмена сообщениями. Реализуют крупномасштабную координацию рабочих процессов и мультиплексированных передач, при которых требуется строгое упорядочение сообщений или обработка сообщений с отсрочкой.
Если вы уже работали с другими брокерами сообщений, такими как Apache ActiveMQ, основные понятия Служебной шины будут вам знакомы. Так как Служебная шина предоставляется по модели PaaS (платформа как услуга), она позволяет не беспокоиться о приведенных ниже действиях. которые выполняет платформа Azure:
- обработка аппаратных сбоев;
- установка исправлений для операционных систем или продуктов;
- размещение журналов и управление дисковым пространством;
- управление резервными копиями;
- отработка отказа на резервный компьютер;
Основные понятия
В этом разделе описываются основные понятия Служебной шины.
Очереди
Сообщений отправляются и получаются через очереди. Очереди позволяют хранить сообщения, пока принимающее приложение сможет получить и обработать их.
Сообщения в очередях упорядочиваются и получают метку времени поступления. После того как брокер примет сообщение, сообщение всегда хранится в хранилище с тройным избыточным хранилищем, распределенным между зонами доступности, если пространство имен с поддержкой зоны. Служебная шина хранит сообщения в памяти или энергонезависимом хранилище до тех пор, пока клиент не сообщит о них как принятые.
Сообщения доставляются в режиме запроса (после получения запроса). В отличие от модели с опросом занятости, которая реализована в некоторых других облачных очередях, операция извлечения здесь может существовать долго, вплоть до появления доступного сообщения.
Примечание
Сравнение очередей Служебной шины с очередями службы хранилища см. в статье Сравнение и сопоставление очередей службы хранилища и очередей Служебной шины.
Разделы
Вы также можете использовать разделы для отправки и получения сообщений. Очереди часто используются для взаимодействия в режиме "точка — точка", но разделы позволяют реализовать сценарии публикации и подписки.
Разделы могут включать несколько независимых подписок, которые присоединяются к разделу, а в остальном для получателя полностью идентичны обычным очередям. Подписка на раздел может получать копию любого сообщения, отправленного в этот раздел. Подписки — это именованные сущности. По умолчанию подписки являются устойчивыми, но для них можно настроить истечение срока действия с автоматическим удалением. Служебная шина уровня "Премиум" также позволяет использовать API JMS (служба сообщений Java) для создания временных подписок, которые существуют только в течение одного подключения.
Вы можете определить правила для подписки. Правило подписки содержит фильтр для определения условия, по которому сообщение копируется в соответствующую подписку, и необязательное действие, которое может изменять метаданные сообщения. Дополнительные сведения см. в статье Фильтры и действия разделов. Эта возможность удобна в следующих случаях:
- вы не хотите, чтобы подписка получала все сообщения, отправленные в раздел;
- вы хотите внедрять дополнительные метаданные в сообщения, проходящие через подписку.
Примечание
Дополнительные сведения об очередях и разделах см. в статье Очереди, разделы и подписки служебной шины.
Пространства имен
Пространство имен — это контейнер для всех компонентов обмена сообщениями (очереди и разделы). В одном пространстве имен могут содержаться несколько очередей и разделов. Часто пространства имен выполняют роль контейнеров приложений.
Пространство имен можно сопоставить с тем, что в терминологии других брокеров называется "сервером", но эти понятия не полностью эквивалентны. Пространство имен Служебной шины предоставляет вам долю емкости большого кластера, который состоит из десятков активных виртуальных машин. При необходимости оно может охватывать три зоны доступности Azure. Благодаря этому вы получаете все преимущества доступности и надежности, предоставляемые использованием брокера сообщений в огромном масштабе. При этом вам также можно не беспокоиться о базовых сложностях. Служебная шина реализует бессерверный обмен сообщениями.
Дополнительные функции
Служебная шина также поддерживает дополнительные возможности для более сложных схем обмена сообщениями. В разделах ниже описываются основные возможности.
Сеансы обмена сообщениями
Чтобы реализовать гарантию fifo при обработке сообщений в очереди или подписках служебной шины, используйте сеансы. Сеансы также можно использовать при реализации шаблонов запроса и ответа. Шаблон "запрос—ответ" позволяет приложению-отправителю отправлять запрос и предоставляет получателю способ правильной отправки ответа обратно в приложение отправителя. Дополнительные сведения см. в разделе Сеансы сообщений.
Автоматическая переадресация
Функция автоматической пересылки позволяет связать очередь или подписку с другой очередью или разделом, которые являются частью того же пространства имен. Если включена автоматическая переадресация, служебная шина автоматически удаляет сообщения, помещенные в первую очередь или подписку (источник), и помещает их во вторую очередь или раздел (место назначения). Дополнительные сведения см. в разделе Связывание сущностей служебной шины с автоматической пересылкой.
Перемещение в очередь недоставленных сообщений
Очереди служебной шины и подписки раздела предоставляют вторичную вложенную очередь, называемую очередью недоставленных сообщений (DLQ). Очередь недоставленных сообщений содержит сообщения, которые не могут быть доставлены получателю, или сообщения, которые не могут быть обработаны. Вы можете удалить сообщения из очереди недоставленных сообщений и проверить их. Приложение может с помощью оператора исправить проблемы и повторно отправить сообщение, записать в журнал тот факт, что произошла ошибка, и предпринять корректирующие действия. Дополнительные сведения см. в статье Обзор очередей недоставленных сообщений служебной шины.
Доставка по расписанию
Сообщения можно отправлять в очередь или раздел для отложенной обработки. Например, вы можете запланировать обработку задания системой в определенное время. Дополнительные сведения см. в разделе Запланированные сообщения.
Откладывание сообщений
Когда клиент очереди или подписки получает сообщение, которое предназначено этому клиенту, но не может быть сразу обработано из-за каких-либо ограничений в приложении, этот клиент может отложить получение такого сообщения на более позднее время. Сообщение остается в очереди или подписке, но игнорируется. Дополнительные сведения см. в статье Откладывание сообщений.
Transactions
Транзакция объединяет две или более операций в область выполнения. Служебная шина поддерживает операции группирования относительно одной сущности обмена сообщениями (очереди, раздела, подписки) в области транзакции. Дополнительные сведения см. в статье Обзор обработки транзакций в служебной шине.
Фильтры и действия
Подписчики могут самостоятельно определять, какие сообщения они хотят получать из раздела. Эти сообщения определяются в одном или нескольких именованных правилах подписки. Каждое правило состоит из условия фильтра , которое выбирает определенные сообщения, и при необходимости содержит действие , которое примечает выбранное сообщение. При каждом совпадении с условиями правила подписка создает копию сообщения, каждая из которых может содержать разные заметки в соответствии с разными правилами. Дополнительные сведения см. в статье Фильтры и действия разделов.
Автоматическое удаление при простое
Автоматическое удаление при простое позволяет настроить интервал бездействия, по истечении которого очередь автоматически удаляется. Интервал сбрасывается при наличии трафика в очереди. Минимальная длительность составляет 5 минут.
Обнаружение дубликатов
В случае ошибок, которые не позволяют клиенту точно установить состояние операции отправки, можно выполнить поиск повторяющихся сообщений. Отправитель может повторно отправить то же самое сообщение, а очередь или раздел автоматически отклонит возможные дубликаты. Дополнительные сведения см. в разделе Синхронизация удостоверений и устойчивость обнаружения.
Безопасность
Служебная шина поддерживает протоколы безопасности, такие как подписанные URL-адреса (SAS), контроль доступа на основе ролей (RBAC) (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 для .NET
- Библиотеки Служебной шины Azure для Java
- Поставщик Служебной шины Azure для Java JMS 2.0
- модули Служебная шина Azure для JavaScript и TypeScript
- Библиотеки Служебной шины для Python
Основным протоколом Служебной шины 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, например со следующими:
Дальнейшие действия
Сведения о начале работы с обменом сообщениями через служебную шину см. в следующих статьях: