Сетка событий и надежность
Служба "Сетка событий Azure" позволяет легко создавать приложения с архитектурой на основе событий. Это решение обеспечивает встроенную поддержку событий, поступающих из таких служб Azure, как хранилища BLOB-объектов и группы ресурсов. В Сетке событий также предусмотрена поддержка собственных событий с помощью пользовательских разделов.
Дополнительные сведения об использовании службы "Сетка событий" см. в разделе Создание и маршрутизация пользовательских событий с помощью службы "Сетка событий Azure".
Сведения о том, как Сетка событий повышает надежность рабочей нагрузки, см. в статье Аварийное восстановление на стороне сервера с учетом географии в Сетке событий Azure.
Представленные ниже разделы связаны с Сеткой событий Azure и обеспечением надежности.
- Рекомендации по проектированию
- Контрольный список для настройки
- Рекомендуемые параметры конфигурации
- Артефакты источника
Рекомендации по проектированию
Сетка событий Azure предоставляет соглашение об уровне обслуживания в отношении времени доступности. Подробнее см. в разделе Соглашение об уровне обслуживания для Сетки событий.
Контрольный список
Вы настроили Сетку событий Azure с учетом требований к обеспечению надежности?
- Разверните экземпляр Сетки событий для каждого региона, если используется решение Azure с несколькими регионами.
- Отслеживайте неудачную доставку событий в Сетке событий.
- Используйте пакетные события.
- Размер пакета событий не может превышать
1MB
. - Настройте и оптимизируйте выбор размера пакета во время нагрузочного тестирования.
- Убедитесь, что сообщения сетки событий принимаются с
HTTP
200-204
ответами, только если доставка в конечную точку, содержащую пользовательский код. - Отслеживайте неудачную публикацию событий в Сетке событий.
Рекомендации по настройке
При настройке Сетки событий Azure примите во внимание следующие рекомендации по оптимизации надежности:
Рекомендация | Description |
---|---|
Отслеживайте неудачную доставку событий в Сетке событий. | Метрика Delivery Failed будет увеличиваться каждый раз, когда сообщение не удается доставить в обработчик событий (превышение времени ожидания или код состояния, отличный от 200-204 HTTP ). Если событие нельзя потерять, настройте учетную запись хранения для очереди недоставленных сообщений (DLQ). В учетную запись DLQ передаются события, которые не удалось доставить после максимального числа повторных попыток. При необходимости реализуйте систему уведомлений в учетной записи хранения DLQ, например, путем обработки события новый файл с помощью Сетки событий. |
Используйте пакетные события в сценариях с высокой пропускной способностью. | Служба будет доставлять подписчикам массив json с несколькими событиями вместо массива с одним событием. Приложение, принимающее данные, должно иметь возможность обрабатывать эти массивы. |
Размер пакета событий не может превышать 1MB . |
Если полезная нагрузка сообщений слишком велика, в пакет будут помещены только одно или несколько сообщений подходящего размера. Службе, принимающей данные, придется обработать больше пакетов событий. Если событие содержит большой объем полезных данных, рекомендуется хранить полезные данные в других местах, например, в хранилище BLOB-объектов, и передавать в событии ссылку на них. При интеграции со сторонними службами с использованием схемы CloudEvents размер события не должен превышать 64KB . |
Настройте и оптимизируйте выбор размера пакета во время нагрузочного тестирования. | Выбор размера пакета зависит от размера полезных данных и объема сообщения. |
Отслеживайте неудачную публикацию событий в Сетке событий. | В метрике Unmatched будут отображаться сообщения, которые опубликованы, но не соответствуют ни одной из подписок. Последнее обстоятельство может быть намеренным в зависимости от архитектуры приложения. |
Артефакты источника
Чтобы определить тип Входной схемы для всех доступных разделов Сетки событий, используйте следующий запрос:
Resources
| where type == 'microsoft.eventgrid/topics'
| project name, resourceGroup, location, subscriptionId, properties['inputSchema']
Чтобы получить Идентификатор ресурса существующих частных конечных точек для доменов Сетки событий, используйте следующий запрос:
Resources
| where type == 'microsoft.eventgrid/domains' and notnull(properties['privateEndpointConnections'])
| mvexpand properties['privateEndpointConnections']
| project-rename privateEndpointConnections = properties_privateEndpointConnections
| project name, resourceGroup, location, subscriptionId, privateEndpointConnections['properties']['privateEndpoint']['id']
Чтобы определить состояние Доступа из публичной сети для всех доступных доменов Сетки событий, используйте следующий запрос:
Resources
| where type == 'microsoft.eventgrid/domains'
| project name, resourceGroup, location, subscriptionId, properties['publicNetworkAccess']
Чтобы определить Правила брандмауэра для всех общедоступных доменов Сетки событий, используйте следующий запрос:
Resources
| where type == 'microsoft.eventgrid/domains' and properties['publicNetworkAccess'] == 'Enabled'
| project name, resourceGroup, location, subscriptionId, properties['inboundIpRules']
Чтобы определить Правила брандмауэра для всех общедоступных разделов Сетки событий, используйте следующий запрос:
Resources
| where type == 'microsoft.eventgrid/topics' and properties['publicNetworkAccess'] == 'Enabled'
| project name, resourceGroup, location, subscriptionId, properties['inboundIpRules']
Чтобы получить Идентификатор ресурса существующих частных конечных точек для разделов Сетки событий, используйте следующий запрос:
Resources
| where type == 'microsoft.eventgrid/topics' and notnull(properties['privateEndpointConnections'])
| mvexpand properties['privateEndpointConnections']
| project-rename privateEndpointConnections = properties_privateEndpointConnections
| project name, resourceGroup, location, subscriptionId, privateEndpointConnections['properties']['privateEndpoint']['id']
Чтобы определить тип Входной схемы для всех доступных доменов Сетки событий, используйте следующую схему:
Resources
| where type == 'microsoft.eventgrid/domains'
| project name, resourceGroup, location, subscriptionId, properties['inputSchema']
Чтобы определить состояние Доступа из публичной сети для всех доступных разделов Сетки событий, используйте следующий запрос:
Resources
| where type == 'microsoft.eventgrid/topics'
| project name, resourceGroup, location, subscriptionId, properties['publicNetworkAccess']