Основные понятия, связанные с Сеткой событий в Kubernetes
В этой статье объясняются основные понятия, связанные с Сеткой событий в Kubernetes с поддержкой Azure Arc (предварительная версия).
Важно!
Служба "Сетка событий" в Kubernetes с поддержкой Azure Arc сейчас находится в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания и не рекомендована для использования рабочей среде. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования предварительных выпусков Microsoft Azure.
События
Событие — это запись данных, которая информирует о факте, связанном с работой программной системы. Как правило, событие информирует об изменении состояния из-за сигнала, выданного или наблюдаемого системой. События содержат данные двух типов:
данные события — представляют периодичность изменения состояния;
атрибуты контекста — предоставляют контекстные сведения о возникновении события.
Для фильтрации событий можно использовать как данные события, так и атрибуты контекста.
Сетка событий в Kubernetes поддерживает спецификацию схемы CloudEvents. Ниже приведен пример события, которое использует схему CloudEvents. Сетка событий поддерживает события размером до 1 МБ.
[{
"specVersion": "1.0",
"type" : "orderCreated",
"source": "myCompanyName/us/webCommerceChannel/myOnlineCommerceSiteBrandName",
"id" : "eventId-n",
"time" : "2020-12-25T20:54:07+00:00",
"subject" : "account/acct-123224/order/o-123456",
"dataSchema" : "1.0",
"data" : {
"orderId" : "123",
"orderType" : "PO",
"reference" : "https://www.myCompanyName.com/orders/123"
}
}]
Источник
Атрибут источника описывает контекст, в котором произошло событие. Источник может быть инициатором событий. Но в некоторых случаях события создают и публикуют производители. И эти производители отличаются от источника. Для простоты в этой статье предполагается, что источник является производителем событий.
Каждый источник событий создает события одного или нескольких типов событий. В качестве источника событий приложение определяет набор связанных событий для информирования об изменении состояния. Каждое событие содержит такие общие сведения, как источник события, время, когда оно произошло, и уникальный идентификатор. Каждое событие также содержит определенные сведения, которые относятся к конкретному типу события. В настоящее время события размером до 1 МБ поддерживаются в предварительном режиме.
Свойства, включаемые в события, см. в разделе Схема CloudEvents.
Издатели
Издатели событий — это приложения или системы, которые отправляют события в Сетку событий для доставки событий подписчикам.
Разделы
Раздел — это своего рода входной канал, предоставляющий конечную точку, в которую издатели отправляют события Сетки событий.
Раздел используется для сбора связанных событий. Вы можете создать раздел для каждой категории связанных событий. В некоторых случаях источник может использоваться для упорядочения событий по категориям, так как источники обычно связаны с набором тесно связанных типов событий (MyApp.OrderCreated, MyApp.OderDeleted, MyApp.OrderRejected и пр.).
Рассмотрим приложение, которое отправляет события, связанные с управлением учетными записями пользователей и обработкой заказов. Маловероятно, что подписчик на события заинтересован в использовании обеих категорий событий. Создайте два пользовательских раздела, чтобы обработчик событий подписался на требуемый раздел. Для небольших решений, возможно, целесообразнее отправлять все события в один раздел.
Подписчики на события
Подписчики на события — это программные системы, такие как микрослужбы, которые предоставляют конечные точки, в которые Сетка событий доставляет события.
Подписки на события
Подписка на события сообщает Сетке событий, какие события по теме вы хотите получить (фильтрация событий) и куда их отправлять (маршрутизация событий). При создании подписки на событие необходимо указать конечную точку для обработки этого события. Вы можете выбрать события, которые необходимо доставить в конечную точку, настроив предложения фильтров в подписке на события.
Обработчики событий
Обработчик событий — это программная система, которая предоставляет конечную точку, в которую отправляются события. Обработчик получает событие и выполняет действия по обработке события. Служба "Сетка событий" поддерживает несколько типов обработчиков. В качестве обработчика можно использовать поддерживаемую службу Azure, размещенную в Kubernetes или Azure, или собственное решение, которое предоставляет веб-перехватчик (конечную точку), везде, где он размещается. В зависимости от типа обработчика служба "Сетка событий" применяет различные механизмы, гарантирующие доставку события. Если обработчик событий назначения является веб-перехватчиком HTTP, событие повторяется до тех пор, пока обработчик не вернет код состояния 200 — ОК. Дополнительные сведения см. в статье Обработчики событий.
Проверка подлинности на основе SAS
Сетка событий в Kubernetes обеспечивает проверку подлинности на основе ключей SAS для публикации событий в разделах.
Доставка событий
Сетка событий в Kubernetes обеспечивает надежную доставку и механизм повторных попыток. Если сетке событий не удается подтвердить, что событие было получено конечной точкой обработчика событий, оно будет повторно получено. Дополнительные сведения см. в разделе Доставка и повторные попытки доставки сообщений сетки событий.
Пакетная публикация событий
При использовании раздела события всегда должны публиковаться в массиве. Для сценариев с низкой пропускной способностью массив будет содержать только одно событие. В сценариях интенсивного использования для повышения эффективности рекомендуется включать в одну публикацию несколько событий. Максимальный размер пакета: 1 МБ. Объем каждого события по-прежнему не должен превышать 1 КБ. Дополнительные сведения см. в статье Пакетная доставка событий.
Компоненты Сетки событий в Kubernetes
Оператор Сетки событий реализует шаблон оператора. Он наблюдает за изменением состояния ресурсов Сетки событий в результате отправки запросов уровня управления к серверу API Kubernetes. При наличии запроса, который влияет на состояние любого ресурса Сетки событий, оператор Сетки событий синхронизирует это состояние с брокером Сетки событий.
Брокер Сетки событий выступает в качестве уровня управления и операций плоскости данных.
Как служба уровня управления она отвечает за перевод состояния Сетки событий в требуемое состояние, сообщаемое оператором Сетки событий. Например, при отправке запроса на создание нового раздела выполняется запрос и обновляются метаданные службы.
Как служба плоскости данных, она обслуживает все запросы на публикацию событий и доставляет события в места назначения, настроенные для подписок на события.
Дальнейшие действия
Чтобы начать работу, см. статью Создание разделов и подписок.