Выбор сетки событий Azure

Завершено

Многие приложения используют модель публикации и подписки для уведомления распределенных компонентов о том, что-то произошло или что-то изменилось. Предположим, у вас есть приложение для обмена музыкой с веб-API, который работает в Azure. Когда пользователь выгружает в сеть новую песню, об этом необходимо уведомить все мобильные приложения, установленные на устройствах всех пользователей мира, которых интересует этот жанр.

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

Что такое сетка событий Azure?

Служба "Сетка событий Azure" — это полностью управляемая служба маршрутизации событий, запущенная поверх Azure Service Fabric. Сетка событий распределяет события из различных источников, например учетных записей Хранилища BLOB-объектов или Служб мультимедиа Azure, между различными обработчиками, например Функциями Azure или веб-перехватчиками. Она была создана для того, чтобы упростить процесс создания бессерверных приложений и приложений на основе событий.

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

В Сетке событий Azure используются несколько компонентов, соединяющих источник и подписчика:

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

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

Diagram of various event sources sending messages as topics to the Event Grid which in turn sends messages to subscribing event handlers.

Что такое событие?

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

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]
Поле Description
topic Полный путь к ресурсу для источника событий. Это значение предоставляет Сетка событий.
subject Определенный издателем путь к субъекту события.
id Уникальный идентификатор события.
eventType Один из зарегистрированных типов событий для этого источника событий. Вы можете создавать фильтры по этому значению, например , CustomerCreated, BlobDeletedи HttpRequestReceivedт. д.
eventTime Время создания события с учетом времени поставщика в формате UTC.
data Информация о типе события. Например, событие о новом файле, созданном в служба хранилища Azure, содержит сведения о файле, например о значенииlastTimeModified. А событие службы "Центры событий" включает URL-адрес файла сбора данных. Это поле необязательно.
dataVersion Версия схемы объекта данных. Версию схемы определяет издатель.
metadataVersion Версия схемы метаданных события. Служба "Сетка событий" определяет схему свойств верхнего уровня. Это значение предоставляет Сетка событий.

Совет

Сетка событий отправляет событие и, таким образом, сообщает о том, что нечто произошло или изменилось. Сам измененный объект в данные о событии не входит. Вместо этого для ссылки на измененный объект часто передается URL-адрес или идентификатор.

Что такое источник события?

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

Сетка событий Azure основан на понятии издателя событий, которое часто путают с источником событий. Издатель события — это пользователь или организация, которые решают отправить события в Сетку событий. Например, корпорация Майкрософт публикует события для нескольких служб Azure. Вы можете опубликовать события из своего приложения. Организации, чьи службы размещены за пределами Azure, могут публиковать события через сетку событий. Источник событий — это служба, которая создала событие для этого издателя. Хотя два термина немного отличаются, в целях этого урока мы будем использовать "publisher" и "источник событий" взаимозаменяемо для представления сущности, отправляя сообщение в сетку событий.

Что такое раздел события?

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

Разделы делятся на системные и пользовательские.

Системные темы

Системные разделы — это встроенные разделы, предоставляемые службами Azure. Они не отображаются в подписке Azure, так как принадлежат издателю, но вы можете на них подписаться. Чтобы подписаться, укажите сведения о ресурсе, из которого требуется получать события. Пока у вас есть доступ к ресурсу, вы можете подписаться на его события.

Пользовательские темы

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

Что такое подписка на события?

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

Что такое обработчик событий?

Обработчик событий (иногда называется также "подписчиком" на события) — это любой компонент (приложение или ресурс), который может получать события из Сетки событий. Например, Функции Azure могут выполнить код в ответ на добавление новой песни в учетную запись хранения BLOB-объектов. Подписчики могут решить, какие события они хотят обрабатывать, и Сетка событий будет эффективно уведомлять каждого интересующего подписчика о доступности нового события; опрос не требуется.

Типы источников событий

Следующие типы ресурсов Azure могут создавать события:

Службы Azure, поддерживающие системные разделы

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

  • Подписки Azure и группы ресурсов. Подписки и группы ресурсов создают события, связанные с операциями управления в Azure. Например, этот источник создает событие, когда пользователь создает виртуальную машину.
  • Реестр контейнеров. Служба "Реестр контейнеров Azure" создает события, когда изображения добавляются в реестр, удаляются из него или изменяются.
  • Центры событий. Центры событий можно использовать для обработки и хранения событий из различных источников данных, обычно ведения журнала или телеметрии. Центры событий может создавать события в службе "Сетка событий" при записи файлов.
  • Служебная шина. Служебная шина может создавать события в службе "Сетка событий" при наличии активных сообщений без активных прослушивателей.
  • Учетные записи. Учетные записи хранения могут создавать события, когда пользователи добавляют BLOB-объекты, файлы, записи в таблице или очереди сообщений. Кроме того, и учетные записи больших двоичных объектов, и учетные записи общего назначения версии 2 можно использовать как источники событий.
  • Службы мультимедиа. Службы мультимедиа содержат видео- и аудиофайлы и предоставляют расширенные функции управления медиафайлам. Службы мультимедиа могут создавать события при запуске или по завершении кодирования видеофайла.
  • Центр Интернета вещей. Центр Интернета вещей собирает данные телеметрии с устройств Интернета вещей. Он может создавать события при получении таких сообщений.

Дополнительные сведения см. в разделах системы Сетка событий Azure.

Пользовательские темы

Пользовательские события можно создавать с помощью REST API или с помощью пакета SDK Azure на Java, GO, .NET, Node, Python и Ruby. Например, можно задать создание пользовательского события в компоненте веб-приложений службы приложений Azure. Оно может происходить в рабочей роли, когда та извлекает сообщение из очереди хранилища.

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

Обработчики событий

Получать и обрабатывать события из Сетки событий могут следующие типы объектов в Azure:

  • Функции Azure. Пользовательский код, который выполняется в Azure, без необходимости явной настройки виртуального сервера или контейнера узла. Используйте функцию Azure как обработчик событий, если вам нужно написать код для пользовательского ответа на событие.
  • Azure Logic Apps. Используйте Logic Apps для реализации бизнес-процессов для обработки событий Сетки событий. Веб-перехватчик не создается явным образом в этом сценарии. Веб-перехватчик создается автоматически при настройке приложения логики для обработки событий из службы "Сетка событий".
  • Веб-перехватчик. Это веб-API, реализующий архитектуру push-уведомлений. Вы также можете обрабатывать события с помощью модулей runbook службы автоматизации Azure. Веб-перехватчики поддерживают обработку событий с помощью автоматизированных модулей Runbook. Создайте веб-перехватчик для модуля runbook, а затем используйте обработчик веб-перехватчика.
  • Центры событий. Используйте Центры событий, когда решение получает события из Сетки событий быстрее, чем может их обработать. Когда события находятся в концентраторе событий, приложение может обрабатывать такие события по собственному расписанию.
  • Служебная шина. Очередь или раздел Служебной шины можно использовать в качестве обработчика событий из Сетки событий.
  • Очереди службы хранилища. Используйте Хранилище очередей для получения событий, которые необходимо извлечь. Вы можете использовать хранилище очередей при наличии процесса выполнения, для реагирования которого необходимо много времени. Отправляя события в хранилище очередей, приложение может запрашивать и обрабатывать события по собственному расписанию.
  • Microsoft Power Automate: Power Automate также размещает рабочие процессы, но проще использовать нетехнические сотрудники.

Дополнительные сведения см. в статье об обработчиках событий.

Когда следует использовать службу "Сетка событий"?

Использование Сетки событий дает следующие преимущества.

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

Сетка событий — это простая, но универсальная система распространения событий. Доставляйте с ее помощью отдельные события подписчикам, которые будут получать эти события надежно и быстро. У нас есть еще одна модель обмена сообщениями для изучения; что делать, если мы хотим доставить большой поток событий? В этом случае Сетка событий — не лучшее решение, так как она предназначена для доставки по одному событию за раз. Вместо нее следует обратиться к другой службе Azure — Центрам событий.