Основные понятия пространства имен Сетка событий Azure

В этой статье описываются основные понятия и функциональные возможности, связанные с разделами пространства имен.

События

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

Например, событие создания файла в службе хранилища Azure содержит сведения о файле, такие как значение lastTimeModified. Событие Event Hubs содержит URL-адрес сохранённого файла. Событие о новом заказе в микросервисе Orders может содержать атрибут orderId и атрибут URL-адреса, указывающий на представление состояния заказа. Ниже приведены несколько примеров типов событий: com.yourcompany.Orders.OrderCreated, org.yourorg.GeneralLedger.AccountChangedio.solutionname.Auth.MaximumNumberOfUserLoginAttemptsReached.

Ниже указан пример события.

{
    "specversion" : "1.0",
    "type" : "com.yourcompany.order.created",
    "source" : "/orders/account/123",
    "subject" : "O-28964",
    "id" : "A234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "comexampleextension1" : "value",
    "comexampleothervalue" : 5,
    "datacontenttype" : "application/json",
    "data" : {
       "orderId" : "O-28964",
       "URL" : "https://com.yourcompany/orders/O-28964"
    }
}

Другой вид события

Сообщество пользователей также называет сообщения, содержащие отдельную точку данных, например одно показание устройства или клик на странице веб-приложения, «событиями». Обычно события такого рода анализируют в течение определённого периода времени, чтобы получить полезную информацию и предпринять действие. В документации по сетке событий этот тип события называется точкой данных, потоковыми данными или просто телеметрией. Функция брокера MQTT в Event Grid использует этот тип события наряду с другими типами сообщений.

Поддержка CloudEvents

Разделы пространства имен Event Grid принимают события, соответствующие открытой спецификации стандарта Cloud Native Computing Foundation (CNCF) CloudEvents 1.0, с использованием привязки протокола HTTP и формата JSON. CloudEvent — это своего рода сообщение, которое содержит передаваемые данные, называемые данными события, и метаданные о нём. Данные событий в архитектуре, управляемой событиями, обычно содержат сведения об изменении состояния системы. Метаданные CloudEvents состоят из набора атрибутов, которые предоставляют контекстную информацию о сообщении, например, где она возникла (исходная система) и ее тип.

Дополнительные сведения см. в разделе Поддержка схемы CloudEvents.

Издатели

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

Источники событий

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

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

Пространство имен Сетки событий — это контейнер управления для следующих ресурсов:

Ресурс Поддерживаемый протокол
Разделы пространства имён HTTP
Пространства тем MQTT
Клиенты MQTT
Группы клиентов MQTT
Сертификаты центра сертификации MQTT
Привязки разрешений MQTT

Используя пространство имён Сетка событий Azure, вы можете группировать связанные ресурсы и управлять ими как единое целое в вашей подписке Azure. Это дает вам уникальное полностью определенное доменное имя (FQDN).

Пространство имен обеспечивает доступ к двум конечным точкам:

  • Конечная точка HTTP для обеспечения общих потребностей обмена сообщениями с использованием тем пространства имён.
  • Конечная точка MQTT для обмена сообщениями Интернета вещей или решений, использующих MQTT.

Пространство имен также предоставляет конечные точки сети, интегрированные с DNS. Он также предоставляет ряд функций управления доступом и управления сетевой интеграцией, таких как фильтрация общедоступных IP-адресов и частные каналы. Это также контейнер для управляемых удостоверений, используемых ресурсами, содержащимися в этом пространстве имён.

Ниже приведены несколько дополнительных моментов о пространствах имен:

  • Пространство имён — это отслеживаемый ресурс со свойствами tags и location. После создания её можно найти на resources.azure.com.
  • Имя пространства имен может иметь длину 3–50 символов. Он может включать буквенно-цифровые символы, дефисы (-) и отсутствие пробелов.
  • Имя должно быть уникальным для каждого региона.

Единицы пропускной способности

Единицы пропускной способности (TUS) определяют емкость частоты событий входящего трафика и исходящего трафика в пространствах имен. Дополнительные сведения см. в разделе Сетка событий Azure квоты и ограничения.

Autoscale

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

Чтобы использовать Autoscale, вы включите его в пространстве имён и укажите:

  • Минимальные единицы пропускной способности: минимальный уровень пропускной способности. Пространство имён не масштабируется ниже этого значения.
  • Максимальные единицы пропускной способности: потолок пропускной способности. Пространство имён не масштабируется выше этого значения.

Event Grid оценивает использование по входу событий, выходу событий, скорости входящих и исходящих публикаций MQTT, а также по количеству зарегистрированных клиентов MQTT. Когда какая-либо из категорий превышает порог масштабирования, выделяется больше единиц TU. Когда все категории опускаются ниже порога уменьшения масштаба, выпускаются TU. Периоды перезарядки между операциями масштабирования предотвращают быстрые колебания.

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

Подробные сведения о конфигурации и ограничениях ёмкости для каждой TU см. в обзоре функции Autoscale и практическом руководстве.

Темы

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

Разделы пространства имён

Разделы пространства имен — это разделы, созданные в пространстве имен Сетки событий. Приложение публикует события в конечной точке пространства имен HTTP, указывая раздел пространства имен, в котором опубликованные события логически содержатся. При разработке приложения определите, сколько разделов нужно создать. Для относительно крупных решений создайте раздел пространства имен для каждой категории связанных событий. Например, рассмотрим приложение, которое управляет учетными записями пользователей и другим приложением о заказах клиентов. Вряд ли все подписчики событий хотят событий из обоих приложений. Чтобы разделить проблемы, создайте два раздела пространства имен: по одному для каждого приложения. Позвольте потребителям событий подписаться на раздел в соответствии с их требованиями. Для небольших решений, возможно, целесообразнее отправлять все события в один раздел.

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

Подписки на события

Подписка на события — это ресурс конфигурации, связанный с одним разделом. Среди прочего, используйте подписку на событие для установки критериев выбора событий, чтобы определить коллекцию событий, доступную подписчику, из общего набора событий в теме. События можно фильтровать в соответствии с требованиями подписчика. Например, можно фильтровать события по типу события. Вы также можете задать критерии фильтрации свойств событийных данных, если используете объект JSON в качестве значения свойства данных . Для получения дополнительной информации о свойствах ресурсов см. документацию Event Grid REST API .

Схема, показывающая раздел и связанные подписки на события.

Пример создания подписок для разделов пространства имен см. в статье "Публикация и использование сообщений с помощью тем пространства имен" с помощью ИНТЕРФЕЙСА командной строки.

Примечание.

Подписки на события под темой пространства имён имеют упрощённую модель ресурсов по сравнению с моделью, используемой для пользовательских, доменных, партнерских и системных тем (Event Grid Basic). Дополнительные сведения см. в статье "Создание, просмотр и управление подписками на события".

Доставка по запросу получателя

При доставке по запросу приложение подключается к службе "Сетка событий" для чтения сообщений с помощью семантики очереди. Когда приложения подключаются к Event Grid для обработки событий, они сами управляют скоростью и временем их обработки. Приложения-потребители также могут использовать частные конечные точки при подключении к сетке событий для чтения событий с помощью частного IP-пространства.

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

Фигура данных при получении событий с помощью доставки по запросу

При доставке событий с помощью доставки по запросу сетка событий включает массив объектов, которые, в свою очередь, включают объекты события и brokerProperties . Значение свойства event — CloudEvent, доставленное в режиме структурированного содержимого. Объект brokerProperties содержит маркер блокировки, связанный с доставленным CloudEvent. Следующий объект JSON представляет собой пример ответа от операции получения , возвращающей два события:

{
    "value": [
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDXYS23Z+5Hq754VqQjxywE",
                "deliveryCount": 2
            },
            "event": {
                "specversion": "1.0",
                "id": "A234-1234-1235",
                "source": "/mycontext",
                "time": "2018-04-05T17:31:00Z",
                "type": "com.example.someeventtype",
                "data": "some data"
            }
        },
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDLeaL+nRJLNq3/5NXd/T0b",
                "deliveryCount": 1
            },
            "event": {
                "specversion": "1.0",
                "id": "B688-1234-1235",
                "source": "/mycontext",
                "type": "com.example.someeventtype",
                "time": "2018-04-05T17:31:00Z",
                "data": {
                    "somekey" : "value",
                    "someOtherKey" : 9
                }
            }
        }
    ]
}

Push-доставка

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

Внимание

В настоящее время push-доставка в пространствах имен Event Grid поддерживает Центры событий Azure в качестве места назначения. В будущем пространства имен Сетки событий будут поддерживать больше назначений, включая все назначения, поддерживаемые Сеткой событий Basic.

Доставка событий Event Hubs

Служба "Сетка событий" использует пакет SDK центров событий для отправки событий в центры событий с помощью AMQP. События отправляются в виде массива байтов с каждым элементом в массиве, содержащим CloudEvent.

Доставка по push- и pull-модели

Event Grid поддерживает доставку событий по моделям push и pull с использованием HTTP. При push-доставке в подписке на события определяется конечная точка — веб-перехватчик или служба Azure, куда Event Grid отправляет события. При получении событий по запросу приложения-подписчики подключаются к Event Grid, чтобы получать события. Доставка по запросу поддерживается для разделов в пространстве имен Сетки событий.

Внимание

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

Схема высокого уровня, показывающая доставку push-уведомлений и доставку по запросу с типом задействованных ресурсов.

Когда следует использовать доставку push-уведомлений и доставку по запросу

Ниже приведены общие рекомендации, которые помогут вам определить, когда использовать доставку по запросу, а когда — push-доставку.

Доставка по запросу получателя

  • Вам нужно полностью контролировать, когда получать события. Например, ваше приложение может быть доступно не постоянно, быть недостаточно стабильным или обрабатывать данные только в определенное время.
  • Вам нужен полный контроль над потреблением событий. Например, в нижележащем сервисе или слое вашего приложения-получателя возникает проблема, которая не позволяет вам обрабатывать события. В этом случае API доставки по запросу позволяет приложению-потребителю вернуть брокеру уже прочитанное событие, чтобы его можно было доставить позднее.
  • Вы хотите использовать частные ссылки при получении событий, что возможно только при доставке по запросу, а не при отправке push-уведомлений.
  • У вас нет возможности публиковать конечную точку и использовать push-доставку, но вы можете подключиться к Event Grid для получения событий.

Push-доставка

  • Вы хотите избежать постоянного опроса, чтобы определить, что произошло изменение состояния системы. Вместо этого лучше использовать Event Grid, чтобы она отправляла вам события при изменении состояния.
  • У вас есть приложение, которое не может выполнять исходящие вызовы. Например, ваша организация может беспокоиться о краже данных. Однако приложение может получать события через общедоступную конечную точку.