Общие сведения о доменах событий, используемых для управления разделами службы "Сетка событий Azure"
Домен событий предоставляет конечную точку для тысяч отдельных разделов, связанных с тем же приложением. Его можно считать метаразделом, в котором может содержаться тысячи отдельных разделов. Она предоставляет одну конечную точку публикации для всех разделов в домене. При публикации события издатель должен указать целевой раздел в домене, в котором он хочет опубликовать. Издатель может отправлять массив или пакет событий, в которых события отправляются в разные разделы в домене. Дополнительные сведения см. в разделе "Публикация событий в домене событий".
Домены также обеспечивают проверку подлинности и авторизацию для каждого раздела, чтобы можно было секционирование клиентов. В этой статье описывается, как использовать домены событий для управления потоком настраиваемых событий для различных бизнес-организаций, клиентов или приложений. Домены событий можно использовать для выполнения следующих задач:
- Управление многотенантными архитектурами на основе событий в масштабе.
- Управление проверкой подлинности и авторизацией.
- Распределение разделов без необходимости управлять каждым из них по отдельности.
- Избежание индивидуальной публикации в каждой конечной точке раздела.
Примечание.
Домен событий не предназначен для поддержки сценария трансляции, когда событие отправляется в домен, и каждый раздел в домене получает копию события. При публикации событий издатель должен указать целевой раздел в домене, в котором он хочет опубликовать. Если издатель хочет опубликовать одну и ту же полезные данные события в нескольких разделах в домене, издатель должен дублировать полезные данные события и изменить имя раздела и опубликовать их в сетке событий с помощью конечной точки домена либо отдельно, либо как пакет.
Примеры использования
Работу доменов событий можно легко объяснить на примере. Допустим, вы управляете компанией Contoso, занимающейся производством тракторов и землеройного оборудования. В рамках ведения бизнеса вы отправляете клиентам сведения в режиме реального времени об обслуживании оборудования, работоспособности системы, обновлениях контрактов. Вся эта информация поступает на различные конечные точки, включая ваше приложение, конечные точки клиента и другие настроенные компоненты инфраструктуры.
Домены событий позволяют моделировать contoso Construction Machinery в виде одной сущности Сетки событий. Каждый из ваших клиентов представляется как раздел в пределах домена. Проверка подлинности и авторизация обрабатываются с помощью идентификатора Microsoft Entra. Каждый из этих клиентов может подписаться на свой раздел и настроить отправку событий в него. Благодаря управляемому доступу через домен событий клиенты получают доступ только к своим разделам.
Вы также получаете единую конечную точку, в которой можете публиковать все ваши клиентские события. Служба "Сетка событий" уведомляет каждый раздел о событиях клиента.
Управление доступом
Использование домена гарантирует вам точное управление авторизацией и проверкой подлинности в каждом разделе за счет применения проверки доступа на основе ролей Azure (Azure RBAC). С помощью этих ролей вы можете ограничивать каждого клиента в приложении для использования только тех разделов, к которым вы хотите предоставить доступ. Модель Azure RBAC в доменах событий работает так же, как управляемый контроль доступа в остальной части Сетки событий и Azure. Используйте Azure RBAC для создания и применения определений настраиваемых ролей в доменах событий.
Встроенные роли
Для упрощенной работы Azure RBAC с доменами событий в службе "Сетка событий" доступны два определения встроенных ролей. Эти роли являются участником EventGrid EventSubscription и средством чтения EventGrid EventSubscription. Вы назначаете эти роли пользователям, которым необходимо подписаться на разделы в вашем домене событий. Вы ограничиваете назначение роли разделом, на который пользователям необходимо подписаться. Сведения об этих ролях см. в разделе Встроенные роли для службы "Сетка событий".
Подписка на разделы
Подписка на события для раздела в домене событий совпадает с созданием подписки на событие в пользовательском разделе или подписке на событие из службы Azure.
Внимание
Раздел домена рассматривается как автоматически управляемый ресурс в Сетке событий. Вы можете создать подписку на события в области домена, не создавая раздел домена. В этом случае Сетка событий автоматически создает раздел домена от вашего имени. Тем не менее вы также можете создать раздел домена вручную. Такая схема позволяет автоматизировать настройку одного из ресурсов при работе с огромным числом разделов доменов. При удалении последней подписки на раздел домена этот раздел также удаляется независимо от того, был ли создан вручную или автоматически.
Подписки на область Домена
Домены событий также позволяют оформить подписку на область домена. Подписка на событие в домене событий получает все события, отправленные в домен независимо от темы, в которую отправляются события. Подписки на область Домена могут быть необходимы для целей управления и аудита.
Публикация в домене событий
При создании домена событий вам предоставляется конечная точка публикации точно так же, как при создании раздела в Сетке событий. Чтобы опубликовать события в любом разделе в домене событий, отправьте события в конечную точку домена так же, как и для пользовательского раздела. Единственное различие заключается в том, что вы должны указать раздел, в который хотите отправить событие. Например, публикация следующего массива событий будет отправлять событие с разделомfoo
, пока событие "id": "2222"
с ним будет отправлено в разделbar
."id": "1111"
При использовании схемы облачного события укажите имя раздела сетки событий в домене в качестве значения свойства source
. В следующем примере source
свойство имеет foo
значение для первого события и для bar
второго события.
Если вы хотите использовать другое поле для указания предполагаемого раздела в домене, укажите сопоставление входных схем при создании домена. Например, если вы используете REST API, используйте свойство properties.inputSchemaMapping при сопоставлении этого поля properties.topic
. Если вы используете пакет SDK для .NET, используйте EventGridJsonInputSchemaMapping
. Другие пакеты SDK также поддерживают сопоставление схем.
[{
"source": "foo",
"id": "1111",
"type": "maintenanceRequested",
"subject": "myapp/vehicles/diggers",
"time": "2018-10-30T21:03:07+00:00",
"data": {
"make": "Contoso",
"model": "Small Digger"
},
"specversion": "1.0"
},
{
"source": "bar",
"id": "2222",
"type": "maintenanceCompleted",
"subject": "myapp/vehicles/tractors",
"time": "2018-10-30T21:04:12+00:00",
"data": {
"make": "Contoso",
"model": "Big Tractor"
},
"specversion": "1.0"
}]
Домены событий выполняют публикацию в разделы автоматически. Вместо того, чтобы публиковать события в каждом управляемом вами разделе отдельно, вы можете опубликовать все свои события в конечной точке домена, а Сетка событий позаботится о том, чтобы каждое событие было отправлено в нужный раздел.
Цены
Для доменов событий действуют те же цены на операции, что и для остальных функций в Сетке событий. Операции работают в доменах событий точно так же, как и в настраиваемых разделах. Каждое поступление события в домене событий является операцией, и каждая попытка отправки события также является операцией.
Следующие шаги
Сведения о настройке доменов событий, создании разделов, оформлении подписок на события и публикации событий см. в статье Управление разделами и публикация событий с помощью Доменов событий.