Udostępnij za pośrednictwem


Event Grid i niezawodność

Usługa Azure Event Grid umożliwia łatwe tworzenie aplikacji przy użyciu architektur opartych na zdarzeniach. To rozwiązanie ma wbudowaną obsługę zdarzeń pochodzących z usług platformy Azure, takich jak obiekty blob magazynu i grupy zasobów. Usługa Event Grid może obsługiwać również Twoje własne zdarzenia przy użyciu tematów niestandardowych.

Aby uzyskać więcej informacji na temat korzystania z usługi Event Grid, zapoznaj się z tematem Tworzenie i kierowanie zdarzeń niestandardowych za pomocą usługi Azure Event Grid.

Aby dowiedzieć się, jak za pomocą usługi Event Grid utworzysz bardziej niezawodne obciążenie, zapoznaj się z tematem Odzyskiwanie po awarii geograficznej po stronie serwera w usłudze Azure Event Grid.

Poniższe sekcje dotyczą usługi Azure Event Grid i niezawodności:

  • Uwagi dotyczące projektowania
  • Lista kontrolna konfiguracji
  • Zalecane opcje konfiguracji
  • Artefakty źródłowe

Uwagi dotyczące projektowania

Usługa Azure Event Grid zapewnia umowę SLA czasu pracy. Aby uzyskać więcej informacji, zapoznaj się z umową SLA dotyczącą usługi Event Grid.

Lista kontrolna

Czy skonfigurowano usługę Azure Event Grid z myślą o niezawodności?

  • Wdróż wystąpienie usługi Event Grid na region w przypadku rozwiązania platformy Azure z wieloma regionami.
  • Monitorowanie usługi Event Grid pod kątem nieudanego dostarczania zdarzeń.
  • Użyj zdarzeń wsadowych.
  • Partie zdarzeń nie mogą przekraczać 1MB rozmiaru.
  • Konfigurowanie i optymalizowanie wyboru rozmiaru partii podczas testowania obciążenia.
  • Upewnij się, że komunikaty usługi Event Grid są akceptowane z odpowiedziami HTTP 200-204 tylko wtedy, gdy dostarczanie do punktu końcowego zawierającego kod niestandardowy.
  • Monitorowanie usługi Event Grid pod kątem nieudanego publikowania zdarzeń.

Zalecenia dotyczące konfiguracji

Rozważ następujące zalecenia, aby zoptymalizować niezawodność podczas konfigurowania usługi Azure Event Grid:

Zalecenie opis
Monitorowanie usługi Event Grid pod kątem nieudanego dostarczania zdarzeń. Delivery Failed Metryka będzie zwiększać się za każdym razem, gdy komunikat nie może zostać dostarczony do programu obsługi zdarzeń (przekroczenie limitu czasu lub kod stanu inny200-204 HTTP niż). Jeśli nie można utracić zdarzenia, skonfiguruj konto magazynu Dead-Letter-Queue (DLQ). Konto DLQ to miejsce, w którym zostaną umieszczone zdarzenia, których nie można dostarczyć po maksymalnej liczbie ponownych prób. Opcjonalnie zaimplementuj system powiadomień na koncie magazynu DLQ, na przykład, obsługując nowe zdarzenie pliku za pośrednictwem usługi Event Grid.
Używaj zdarzeń wsadowych w scenariuszach o wysokiej przepływności. Usługa dostarczy tablicę json z wieloma zdarzeniami do subskrybentów, zamiast tablicy z jednym zdarzeniem. Aplikacja zużywana musi być w stanie przetworzyć te tablice.
Partie zdarzeń nie mogą przekraczać 1MB rozmiaru. Jeśli ładunek komunikatu jest duży, tylko jeden lub kilka komunikatów będzie pasować do partii. Usługa zużywania będzie musiała przetworzyć więcej partii zdarzeń. Jeśli zdarzenie ma duży ładunek, rozważ zapisanie go w innym miejscu, na przykład w magazynie obiektów blob i przekazanie odwołania w zdarzeniu. W przypadku integracji z usługami innych firm za pośrednictwem schematu CloudEvents nie zaleca się przekraczania zdarzeń 64KB .
Konfigurowanie i optymalizowanie wyboru rozmiaru partii podczas testowania obciążenia. Wybór rozmiaru partii zależy od rozmiaru ładunku i woluminu komunikatów.
Monitorowanie usługi Event Grid pod kątem nieudanego publikowania zdarzeń. Unmatched Metryka będzie wyświetlać komunikaty, które są publikowane, ale nie są zgodne z żadną subskrypcją. W zależności od architektury aplikacji ten ostatni może być zamierzony.

Artefakty źródłowe

Aby określić typ schematu wejściowego dla wszystkich dostępnych tematów usługi Event Grid, użyj następującego zapytania:

Resources 
| where type == 'microsoft.eventgrid/topics'
| project name, resourceGroup, location, subscriptionId, properties['inputSchema']

Aby pobrać identyfikator zasobu istniejących prywatnych punktów końcowych dla domen usługi Event Grid, użyj następującego zapytania:

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']

Aby zidentyfikować stan dostępu do sieci publicznej dla wszystkich dostępnych domen usługi Event Grid, użyj następującego zapytania:

Resources 
| where type == 'microsoft.eventgrid/domains' 
| project name, resourceGroup, location, subscriptionId, properties['publicNetworkAccess']

Aby zidentyfikować reguły zapory dla wszystkich publicznych domen usługi Event Grid, użyj następującego zapytania:

Resources 
| where type == 'microsoft.eventgrid/domains' and properties['publicNetworkAccess'] == 'Enabled'
| project name, resourceGroup, location, subscriptionId, properties['inboundIpRules']

Aby zidentyfikować reguły zapory dla wszystkich publicznych tematów usługi Event Grid, użyj następującego zapytania:

Resources 
| where type == 'microsoft.eventgrid/topics' and properties['publicNetworkAccess'] == 'Enabled'
| project name, resourceGroup, location, subscriptionId, properties['inboundIpRules']

Aby pobrać identyfikator zasobu istniejących prywatnych punktów końcowych dla tematów usługi Event Grid, użyj następującego zapytania:

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']

Aby określić typ schematu wejściowego dla wszystkich dostępnych domen usługi Event Grid, użyj następującego schematu:

Resources 
| where type == 'microsoft.eventgrid/domains'
| project name, resourceGroup, location, subscriptionId, properties['inputSchema']

Aby zidentyfikować stan dostępu do sieci publicznej dla wszystkich dostępnych tematów usługi Event Grid, użyj następującego zapytania:

Resources 
| where type == 'microsoft.eventgrid/topics' 
| project name, resourceGroup, location, subscriptionId, properties['publicNetworkAccess']

Następny krok