Wybieranie usługi Azure Event Grid
Wiele aplikacji używa modelu publikowania-subskrybowania w celu powiadamiania składników rozproszonych o tym, że coś się stało lub jakiś obiekt uległ zmianie. Załóżmy, że masz aplikację do udostępniania muzyki za pomocą internetowego interfejsu API działającego na platformie Azure. Gdy użytkownik prześle nową piosenkę, musisz powiadomić wszystkie aplikacje mobilne zainstalowane na urządzeniach użytkowników na całym świecie, które są zainteresowane tym gatunkiem.
W tej architekturze wydawca plików dźwiękowych nie musi wiedzieć o żadnym z subskrybentów zainteresowanych udostępnioną muzyką. Ponadto chcemy mieć relację jeden do wielu, w której możemy mieć wielu subskrybentów, którzy opcjonalnie mogą zdecydować, czy są zainteresowani tą nową piosenką. Usługa Azure Event Grid to idealne rozwiązanie dla tego rodzaju architektury.
Co to jest usługa Azure Event Grid?
Usługa Azure Event Grid to w pełni zarządzana usługa routingu zdarzeń działająca na platformie Azure Service Fabric. Usługa Event Grid dystrybuuje zdarzenia z różnych źródeł, takich jak konta usługi Azure Blob Storage lub Azure Media Services, do różnych obsługujących, takich jak Azure Functions lub webhooki. Usługa Event Grid została utworzona, aby ułatwić tworzenie aplikacji opartych na zdarzeniach i bezserwerowych na platformie Azure.
Usługa Event Grid obsługuje większość usług platformy Azure jako wydawcę lub subskrybenta i może być używana z usługami innych firm. Zapewnia dynamicznie skalowalny, ekonomiczny system obsługi komunikatów, który umożliwia wydawcom powiadamianie subskrybentów o zmianie stanu. Poniższa ilustracja przedstawia usługę Azure Event Grid, która odbiera komunikaty z wielu źródeł i dystrybuuje je do programów obsługi zdarzeń na podstawie subskrypcji.
Istnieje kilka pojęć w usłudze Azure Event Grid, które łączą źródło z subskrybentem:
- Zdarzenia: Co się stało?
- źródła zdarzeń: gdzie miało miejsce zdarzenie?
- Tematy: punkt końcowy, do którego wydawcy przesyłają wydarzenia.
- subskrypcje zdarzeń: punkt końcowy lub wbudowany mechanizm kierowania zdarzeń, czasami do wielu obsługujących. Programy obsługi używają również subskrypcji do inteligentnego filtrowania zdarzeń przychodzących.
- programy obsługi zdarzeń: aplikacja lub usługa reagująca na zdarzenie.
Poniższa ilustracja przedstawia usługę Azure Event Grid umieszczoną między wieloma źródłami zdarzeń i wieloma procedurami obsługi zdarzeń. Źródła zdarzeń wysyłają zdarzenia do usługi Event Grid, a usługa Event Grid przekazuje odpowiednie zdarzenia subskrybentom. Usługa Event Grid używa tematów do decydowania, które zdarzenia mają być wysyłane do których programów obsługi. Źródła zdarzeń tagują każde zdarzenie za pomocą co najmniej jednego tematu, a programy obsługi zdarzeń subskrybują interesujące je tematy.
Co to jest zdarzenie?
Zdarzenia to komunikaty o danych przekazywane przez usługę Event Grid, które opisują, co się stało. Każde zdarzenie jest samodzielne, może mieć maksymalnie 64 KB i zawiera kilka elementów informacji na podstawie schematu zdefiniowanego przez usługę Event Grid lub schematu zdarzenia w chmurze .
Oto schemat zdarzeń usługi Event Grid:
[
{
"topic": string,
"subject": string,
"id": string,
"eventType": string,
"eventTime": string,
"data":{
object-unique-to-each-publisher
},
"dataVersion": string,
"metadataVersion": string
}
]
Pole | Opis |
---|---|
temat | Pełna ścieżka zasobu do źródła zdarzenia. Usługa Event Grid udostępnia tę wartość. |
temat | Ścieżka do tematu wydarzenia zdefiniowana przez wydawcę. |
identyfikatora | Unikatowy identyfikator zdarzenia. |
typWydarzenia | Jeden z zarejestrowanych typów zdarzeń dla tego źródła zdarzeń. Można tworzyć filtry względem tej wartości, na przykład CustomerCreated , BlobDeleted , HttpRequestReceived itp. |
czasWydarzenia | Godzina wygenerowania zdarzenia na podstawie czasu UTC dostawcy. |
danych | Określone informacje istotne dla typu zdarzenia. Na przykład: zdarzenie dotyczące nowego pliku tworzonego w usłudze Azure Storage zawiera szczegółowe informacje o pliku, takie jak wartość lastTimeModified . Alternatywnie, zdarzenie usługi Event Hubs ma adres URL pliku z przechwyconymi danymi. To pole jest opcjonalne. |
wersjaDanych | Wersja schematu obiektu danych. Wydawca definiuje wersję schematu. |
metadataVersion | Wersja schematu metadanych wydarzenia. Usługa Event Grid definiuje schemat właściwości najwyższego poziomu. Usługa Event Grid udostępnia tę wartość. |
Napiwek
Usługa Event Grid wysyła zdarzenie, aby wskazać, że coś się stało lub zostało zmienione. Jednak rzeczywisty obiekt, który został zmieniony, nie jest częścią danych zdarzenia. Zamiast tego adres URL lub identyfikator jest często przekazywany do odwołania się do zmienionego obiektu.
Co to jest źródło zdarzeń?
Źródła zdarzeń są odpowiedzialne za wysyłanie zdarzeń do usługi Event Grid. Każde źródło zdarzeń jest powiązane z co najmniej jednym typem zdarzeń. Na przykład usługa Azure Storage jest źródłem zdarzeń dla zdarzeń utworzonych przez obiekt blob. Usługa IoT Hub to źródło zdarzeń dla zdarzeń utworzonych przez urządzenie. Twoja aplikacja jest źródłem niestandardowych zdarzeń, które definiujesz. Na chwilę przyjrzymy się źródłom zdarzeń.
Usługa Azure Event Grid ma koncepcję wydawcy zdarzeń, który często jest mylony ze źródłem zdarzeń. Wydawcą zdarzeń jest użytkownik lub organizacja, która decyduje się wysyłać zdarzenia do Event Grid. Na przykład firma Microsoft publikuje zdarzenia dla kilku usług platformy Azure. Zdarzenia można publikować z własnej aplikacji. Organizacje hostujące usługi spoza platformy Azure mogą publikować zdarzenia za pośrednictwem usługi Event Grid. Źródło zdarzenia to konkretna usługa generująca zdarzenie dla tego wydawcy. Chociaż dwa terminy są nieco inne, na potrzeby tej lekcji używamy "wydawcy" i "źródła zdarzeń" zamiennie do reprezentowania jednostki wysyłającej komunikat do usługi Event Grid.
Co to jest temat zdarzenia?
Tematy zdarzeń kategoryzują zdarzenia na grupy. Tematy są reprezentowane przez publiczny punkt końcowy i są miejscem, w którym źródło zdarzeń wysyła zdarzenia do. Podczas projektowania aplikacji możesz zdecydować, ile tematów należy utworzyć. Większe rozwiązania tworzą temat niestandardowy dla każdej kategorii powiązanych zdarzeń, podczas gdy mniejsze rozwiązania mogą wysyłać wszystkie zdarzenia do jednego tematu. Rozważmy na przykład aplikację, która wysyła zdarzenia związane z modyfikowaniem kont użytkowników i przetwarzaniem zamówień. Jest mało prawdopodobne, że którykolwiek handler zdarzeń chciałby obie kategorie zdarzeń. Utwórz dwa tematy niestandardowe i pozwól, aby programy obsługi zdarzeń subskrybowały te, które je interesują. Subskrybenci zdarzeń mogą filtrować typy zdarzeń, których chcą z określonego tematu.
Tematy są podzielone na systemowe tematy i niestandardowe tematy .
Tematy systemowe
Temat systemowy w usłudze Event Grid reprezentuje co najmniej jedno zdarzenie opublikowane przez usługi platformy Azure, takie jak Azure Storage i Azure Event Hubs. Na przykład temat systemowy może reprezentować wszystkie zdarzenia blobów lub tylko zdarzenia utworzenia i usunięcia obiektów blob opublikowane dla określonego konta przechowywania. W tym przykładzie, gdy obiekt blob zostanie przekazany do konta magazynu, usługa Azure Storage publikuje zdarzenie utworzone przez obiekt blob do tematu systemowego w usłudze Event Grid, który następnie przekazuje zdarzenie subskrybentom tematu, którzy odbierają i przetwarzają zdarzenie.
Możesz subskrybować zdarzenia dla zasobu, takiego jak konto usługi Azure Storage, a usługa Event Grid automatycznie tworzy temat systemowy dla konta magazynu. Możesz również utworzyć temat systemowy i utworzyć subskrypcję tematu ręcznie w witrynie Azure Portal.
Tematy niestandardowe
Tematy niestandardowe to tematy aplikacji i innych firm. Po utworzeniu lub przypisaniu dostępu do tematu niestandardowego zobaczysz ten temat niestandardowy w subskrypcji.
Co to jest subskrypcja zdarzeń?
Subskrypcje zdarzeń definiują zdarzenia dotyczące tematu, które program obsługi zdarzeń chce odbierać. Subskrypcja może również filtrować zdarzenia według ich typu lub tematu, dzięki czemu można zapewnić, że program obsługi zdarzeń odbiera tylko odpowiednie zdarzenia.
Co to jest procedura obsługi zdarzeń?
Obsługiwacz zdarzeń (czasami nazywany "subskrybentem zdarzeń") jest dowolnym składnikiem (aplikacją lub zasobem), który może odbierać zdarzenia z Event Grid. Na przykład usługa Azure Functions może wykonać kod w odpowiedzi na nową piosenkę dodaną do konta usługi Blob Storage. Subskrybenci mogą zdecydować, które zdarzenia mają być obsługiwane, a usługa Event Grid będzie efektywnie powiadamiać każdego zainteresowanego subskrybenta, gdy jest dostępne nowe zdarzenie; nie jest wymagane sondowanie.
Typy źródeł zdarzeń
Następujące typy zasobów platformy Azure mogą generować zdarzenia:
Usługi platformy Azure, które obsługują tematy systemowe
Oto kilka usług platformy Azure, które obsługują tematy systemowe. Pełną listę usług platformy Azure obsługujących tematy systemowe można znaleźć w temacie System w usłudze Azure Event Grid.
- subskrypcje platformy Azure i grupy zasobów: subskrypcje i grupy zasobów generują zdarzenia związane z operacjami zarządzania na platformie Azure. Na przykład gdy użytkownik tworzy maszynę wirtualną, to źródło generuje zdarzenie.
- Rejestr kontenerów: Azure Container Registry generuje zdarzenia podczas dodawania, usuwania lub zmieniania obrazów w rejestrze kontenerów.
- Event Hubs: Event Hubs są wykorzystywane do przetwarzania i przechowywania zdarzeń z różnych źródeł danych, zazwyczaj związanych z rejestrowaniem lub danymi telemetrycznymi. Usługa Event Hubs może generować zdarzenia w usłudze Event Grid po przechwyceniu plików.
- usługi Service Bus: usługa Service Bus może generować zdarzenia w usłudze Event Grid, gdy istnieją aktywne komunikaty bez aktywnych odbiorników.
- konta przechowywania: Konta magazynu mogą generować zdarzenia, gdy użytkownicy dodają obiekty blob, pliki, wpisy tabeli lub komunikaty w kolejce. Konta obiektów blob oraz konta ogólnego przeznaczenia wersji 2 można używać jako źródła zdarzeń.
- Usługa Media Services: Usługa Media Services zarządza materiałami wideo i audio oraz oferuje zaawansowane funkcje zarządzania plikami multimedialnymi. Usługa Media Services może generować zdarzenia po uruchomieniu lub zakończeniu zadania kodowania w pliku wideo.
- Azure IoT Hub: IoT Hub komunikuje się z urządzeniami IoT i zbiera dane telemetryczne. Może generować zdarzenia za każdym razem, gdy taka komunikacja dotrze.
Aby uzyskać więcej informacji, zobacz tematy System w usłudze Azure Event Grid.
Tematy niestandardowe
Zdarzenia niestandardowe można wygenerować przy użyciu interfejsu API REST lub zestawu Azure SDK w językach Java, GO, .NET, Node, Python i Ruby. Można na przykład utworzyć zdarzenie niestandardowe w funkcji Web Apps usługi Azure App Service. Może się to zdarzyć w roli procesu roboczego, gdy odbiera komunikat z kolejki przechowywania.
Ta głęboka integracja z różnymi źródłami zdarzeń na platformie Azure zapewnia, że usługa Event Grid może dystrybuować zdarzenia powiązane z niemal dowolnym zasobem platformy Azure.
Programy obsługi zdarzeń
Następujące typy obiektów na platformie Azure mogą odbierać zdarzenia z usługi Event Grid i obsługiwać je:
- Azure Functions: Kod niestandardowy, który działa na platformie Azure, bez konieczności jawnej konfiguracji serwera wirtualnego hosta lub kontenera. Użyj funkcji platformy Azure jako procedury obsługi zdarzeń, jeśli chcesz utworzyć kod niestandardowej odpowiedzi na zdarzenie.
- Azure Logic Apps: użyj usługi Logic Apps, aby zaimplementować procesy biznesowe w celu przetwarzania zdarzeń usługi Event Grid. W tym scenariuszu nie tworzysz webhooka jawnie. Element webhook jest tworzony automatycznie podczas konfigurowania aplikacji logiki do obsługi zdarzeń z usługi Event Grid.
- Webhooki: Webhook to webowy interfejs API, który stosuje architekturę push. Zdarzenia można także przetwarzać, wykorzystując runbooki usługi Azure Automation. Webhooki obsługują przetwarzanie zdarzeń przy użyciu zautomatyzowanych runbooków. Utworzysz element webhook dla elementu Runbook, a następnie użyj programu obsługi elementu webhook.
- Event Hubs: użyj Event Hubs, gdy rozwiązanie pobiera zdarzenia z Event Grid szybciej niż może je przetwarzać. Gdy zdarzenia znajdują się w centrum zdarzeń, aplikacja może przetwarzać zdarzenia z centrum zdarzeń zgodnie z własnym harmonogramem.
- pl-PL: Service Bus: możesz użyć kolejki lub tematu jako obsługi zdarzeń z Event Grid.
- kolejki magazynowe: użyj usługi Queue Storage do odbierania zdarzeń wymagających pobrania. Magazyn kolejek może być używany w przypadku długotrwałego procesu, którego odpowiedź zajmuje zbyt dużo czasu. Wysyłając zdarzenia do usługi Queue Storage, aplikacja może ściągać i przetwarzać zdarzenia we własnym harmonogramie.
- Microsoft Power Automate: Power Automate również hostuje przepływy pracy, ale jest łatwiejszy do użycia przez pracowników nietechnicznych.
Aby uzyskać więcej informacji, zobacz sekcję "Event Handlers" .
Czy należy używać usługi Event Grid?
Użyj usługi Event Grid, jeśli potrzebujesz następujących funkcji:
- Prostota: Łatwe jest łączenie źródeł z subskrybentami w usłudze Event Grid.
- Filtrowanie zaawansowane: Subskrypcje mają ścisłą kontrolę nad zdarzeniami otrzymywanymi z wątku.
- Fan-out: Możesz przypisać nieograniczoną liczbę punktów końcowych do tych samych zdarzeń i tematów.
- Niezawodność: Usługa Event Grid ponawia dostarczanie zdarzeń do 24 godzin dla każdej subskrypcji.
- płatność za zdarzenie: Płatność tylko za liczbę przesyłanych zdarzeń.
Event Grid to prosty, ale wszechstronny system dystrybucji zdarzeń. Służy do dostarczania dyskretnych zdarzeń subskrybentom, którzy niezawodnie i szybko odbierają te zdarzenia. Mamy jeszcze jeden model wiadomości do zbadania; co zrobić, jeśli chcemy dostarczyć strumień zdarzeń o dużej objętości? W tym scenariuszu Event Grid nie jest najlepszym rozwiązaniem, ponieważ jest zaprojektowany do dostarczania zdarzeń po jednym na raz. Zamiast tego musimy zwrócić się do innej usługi platformy Azure: Event Hubs.