Wybieranie usługi Azure Event Grid

Ukończone

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 z internetowym interfejsem API uruchamianym na platformie Azure. Gdy użytkownik przekazuje nowy utwór, musisz powiadomić wszystkie aplikacje mobilne zainstalowane na urządzeniach użytkowników na całym świecie, których interesuje ten gatunek.

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?

Azure Event Grid to w pełni zarządzana usługa routingu zdarzeń uruchomiona na platformie Azure Service Fabric. Usługa Event Grid dystrybuuje zdarzenia z różnych źródeł, np. kont usługi Azure Blob Storage lub Azure Media Services, do różnych procedur obsługi, np. usługi Azure Functions lub elementów webhook. Usługa Event Grid ułatwia tworzenie bezserwerowych aplikacji opartych na zdarzeniach na platformie Azure.

Usługa Event Grid obsługuje większość usług platformy Azure jako wydawcę lub subskrybenta i można jej używać 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 odbierającą komunikaty z wielu źródeł i dystrybuującą je do procedur obsługi zdarzeń na podstawie subskrypcji.

Istnieje kilka pojęć używanych w usłudze Azure Event Grid, które łączą źródło z subskrybentem:

  • Zdarzenia: co miało miejsce.
  • Źródła zdarzeń: gdzie wystąpiło zdarzenie.
  • Tematy: punkt końcowy, do którego wydawcy wysyłają zdarzenia.
  • Subskrypcje zdarzeń: punkt końcowy lub wbudowany mechanizm przekierowywania zdarzeń (czasami do wielu procedur obsługi). Programy obsługi używają również subskrypcji do inteligentnego filtrowania zdarzeń przychodzących.
  • Procedura obsługi zdarzeń: aplikacja lub usługa reagująca na zdarzenie.

Na następującej ilustracji przedstawiono 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.

Diagram of various event sources sending messages as topics to the Event Grid which in turn sends messages to subscribing event handlers.

Co to jest zdarzenie?

Zdarzenia to komunikaty z danymi przekazywane przez usługę Event Grid, które opisują, co się wydarzyło. Każde zdarzenie jest niezależne, może mieć rozmiar do 64 KB oraz zawiera kilka rodzajów informacji zależnie od schematu zdefiniowanego przez usługę Event Grid:

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]
Pole opis
topic Pełna ścieżka zasobu do źródła zdarzenia. Ta wartość jest podawana przez usługę Event Grid.
subject Zdefiniowana przez wydawcę ścieżka do tematu zdarzenia.
id Unikatowy identyfikator zdarzenia.
eventType Jeden z zarejestrowanych typów zdarzeń dla tego źródła zdarzeń. Można tworzyć filtry względem tej wartości, na przykład , CustomerCreatedBlobDeleted, , HttpRequestReceiveditp.
eventTime Czas wygenerowania zdarzenia zgodnie z czasem UTC dostawcy.
data Informacje dotyczące poszczególnych typów zdarzeń. Na przykład: zdarzenie dotyczące nowego pliku tworzonego w usłudze Azure Storage zawiera szczegółowe informacje o pliku, takie jak lastTimeModified wartość. Zdarzenie usługi Event Hubs ma adres URL pliku funkcji Capture. To pole jest opcjonalne.
dataVersion Wersja schematu obiektu danych. Wydawca definiuje wersję schematu.
metadataVersion Wersja schematu metadanych zdarzeń. Usługa Event Grid definiuje schemat właściwości najwyższego poziomu. Ta wartość jest podawana przez usługę Event Grid.

Napiwek

Usługa Event Grid wysyła zdarzenie, aby poinformować, że coś się stało lub uległo zmianie. Jednak rzeczywisty obiekt, który został zmieniony, nie należy do danych zdarzenia. Zamiast tego adres URL lub identyfikator jest często przekazywany w celu odwołania się do zmienionego obiektu.

Co to jest źródło zdarzenia?

Źródła zdarzeń służą do wysyłania zdarzeń do usługi Event Grid. Każde źródło zdarzenia jest powiązane z co najmniej jednym typem zdarzenia. Na przykład usługa Azure Storage jest źródłem zdarzeń tworzonych przez obiekty blob. Usługa IoT Hub jest źródłem zdarzeń tworzonych przez urządzenia. Aplikacja jest źródłem definiowanych przez Ciebie zdarzeń niestandardowych. Źródła zdarzeń zostaną bardziej szczegółowo omówione za chwilę.

Usługa Azure Event Grid ma koncepcję wydawcy zdarzeń, który często jest mylony ze źródłem zdarzeń. Wydawca zdarzeń jest użytkownikiem lub organizacją, która decyduje się wysyłać zdarzenia do usługi Event Grid. Na przykład firma Microsoft publikuje zdarzenia dla kilku usług platformy Azure. Możesz publikować zdarzenia z własnej aplikacji. Organizacje, które hostują usługi poza platformą Azure, mogą publikować zdarzenia przy użyciu usługi Event Grid. Źródło zdarzeń to konkretna usługa generująca zdarzenie dla tego wydawcy. Chociaż dwa terminy są nieco inne, na potrzeby tej lekcji użyjemy "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ń umożliwiają dzielenie zdarzeń na grupy. Tematy są reprezentowane przez publiczny punkt końcowy i określają lokalizację docelową zdarzeń wysyłanych przez źródło zdarzeń. Podczas projektowania aplikacji można wybrać liczbę tematów do utworzenia. Większe rozwiązania umożliwiają utworzenie niestandardowego tematu dla każdej kategorii powiązanych zdarzeń, natomiast mniejsze rozwiązania mogą wysyłać wszystkie zdarzenia do jednego tematu. Może to na przykład być aplikacja, która wysyła zdarzenia powiązane z modyfikowaniem kont użytkowników i przetwarzaniem zamówień. Istnieje małe prawdopodobieństwo, że procedura obsługi zdarzeń oczekuje obu kategorii zdarzeń. Utwórz dwa tematy niestandardowe, a procedury obsługi zdarzeń subskrybują temat, którymi są zainteresowane. Subskrybenci zdarzeń mogą filtrować według typów zdarzeń, które chcą wyświetlić w ramach danego tematu.

Tematy dzielą się na systemowe i niestandardowe.

Tematy systemowe

Tematy systemowe to wbudowane tematy udostępniane przez usługi platformy Azure. Tematy systemowe nie są widoczne w ramach subskrypcji platformy Azure, ponieważ wydawca jest właścicielem tematów, ale można je subskrybować. Aby zasubskrybować, podaj informacje o zasobie, z którego chcesz odbierać zdarzenia. Możesz subskrybować zdarzenia, dopóki masz dostęp do ich zasobu.

Tematy niestandardowe

Tematy niestandardowe to tematy aplikacji i innych firm. Gdy temat niestandardowy zostanie utworzony lub zostanie przypisany do niego dostęp, będzie on widoczny w ramach subskrypcji.

Co to jest subskrypcja zdarzenia?

Subskrypcje zdarzeń definiują zdarzenia w temacie, które chcą odbierać procedury obsługi zdarzeń. Subskrypcja może również filtrować zdarzenia według typu lub tematu, aby upewnić się, że procedura obsługi zdarzeń odbiera tylko odpowiednie zdarzenia.

Co to jest procedura obsługi zdarzeń?

Procedura obsługi zdarzeń (czasami nazywana subskrybentem zdarzeń) to dowolny składnik (aplikacja lub zasób), który może odbierać zdarzenia z usługi Event Grid. Na przykład usługa Azure Functions może wykonywać kod w odpowiedzi na dodanie nowego utworu 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. Aby uzyskać pełną listę usług platformy Azure, które obsługują tematy systemowe, zobacz Tematy systemowe w usłudze Azure Event Grid.

  • Subskrypcje i grupy zasobów platformy Azure. Subskrypcje i grupy zasobów generują zdarzenia związane z operacjami zarządzania na platformie Azure. Gdy na przykład użytkownik tworzy maszynę wirtualną, to źródło generuje zdarzenie.
  • Rejestr kontenerów. Usługa Azure Container Registry generuje zdarzenia w przypadku dodawania, usuwania lub modyfikowania obrazów.
  • Event Hubs: usługa Event Hubs może służyć do przetwarzania i przechowywania zdarzeń z różnych źródeł danych, zazwyczaj związanych z rejestrowaniem lub telemetrią. Usługa Event Hubs może generować zdarzenia w usłudze Event Grid po przechwyceniu plików.
  • Usługa Service Bus. Usługa Service Bus umożliwia generowanie zdarzeń w usłudze Event Grid, gdy istnieją aktywne komunikaty bez aktywnych odbiorników.
  • Konta magazynu. Konta magazynu mogą generować zdarzenia, gdy użytkownicy dodają obiekty blob, pliki, wpisy tabeli lub komunikaty w kolejce. Możesz użyć kont obiektów blob oraz kont ogólnego przeznaczenia w wersji 2 jako źródeł zdarzeń.
  • Media Services. Usługa Media Services hostuje multimedialne pliki wideo i audio oraz zapewnia zaawansowane funkcje zarządzania plikami multimedialnymi. Usługa Media Services może generować zdarzenia, gdy na pliku wideo zostanie rozpoczęte lub zakończone zadanie kodowania.
  • Azure IoT Hub. Usługa IoT Hub komunikuje się z urządzeniami IoT i zbiera z nich dane telemetryczne. Usługa może generować zdarzenia za każdym razem, gdy odbierze tego typu komunikację.

Aby uzyskać więcej informacji, zobacz Tematy systemowe 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. Na przykład można utworzyć niestandardowe zdarzenie w funkcji Web Apps usługi Azure App Service. Może to nastąpić w roli procesu roboczego, gdy pobierze ona komunikat z kolejki magazynu.

Ta ścisła integracja z różnymi źródłami zdarzeń na platformie Azure gwarantuje, że usługa Event Grid może dystrybuować zdarzenia związane niemal z dowolnym zasobem platformy Azure.

Procedury obsługi zdarzeń

Następujące typy obiektów na platformie Azure mogą odbierać i obsługiwać zdarzenia z usługi Event Grid:

  • Azure Functions: kod niestandardowy uruchamiany na platformie Azure bez konieczności jawnej konfiguracji serwera wirtualnego hosta lub kontenera. Funkcji usługi Azure Functions możesz użyć jako procedury obsługi zdarzeń, jeśli chcesz zakodować niestandardową odpowiedź na zdarzenie.
  • Azure Logic Apps: używanie usługi Logic Apps do implementowania procesów biznesowych w celu przetwarzania zdarzeń usługi Event Grid. W tym scenariuszu nie tworzysz elementu webhook jawnie. Element webhook jest tworzony automatycznie podczas konfigurowania aplikacji logiki do obsługi zdarzeń z usługi Event Grid.
  • Elementy webhook. Element webhook to internetowy interfejs API, którzy implementuje architekturę wypychania. Zdarzenia można również przetwarzać przy użyciu elementów Runbook usługi Azure Automation. Elementy webhook obsługują przetwarzanie zdarzeń przy użyciu zautomatyzowanych elementów Runbook. Utworzysz element webhook dla elementu Runbook, a następnie użyj programu obsługi elementu webhook.
  • Event Hubs: użyj usługi Event Hubs, gdy rozwiązanie pobiera zdarzenia z usługi Event Grid szybciej niż może przetwarzać zdarzenia. Gdy zdarzenia znajdują się w centrum zdarzeń, aplikacja może przetwarzać zdarzenia z centrum zdarzeń zgodnie z własnym harmonogramem.
  • Service Bus: możesz użyć kolejki usługi lub tematu jako procedury obsługi zdarzeń z usługi Event Grid.
  • Kolejki magazynu: użyj usługi Queue Storage, aby odbierać zdarzenia, które należy ściągnąć. Magazyn kolejek może być używany w przypadku długotrwałego procesu, który odpowiada zbyt długo. Wysyłając zdarzenia do usługi Queue Storage, aplikacja może ściągać i przetwarzać zdarzenia we własnym harmonogramie.
  • Microsoft Power Automate: usługa Power Automate hostuje również przepływy pracy, ale łatwiej jest używać pracowników nietechnicznych.

Aby uzyskać więcej informacji, zobacz Programy obsługi zdarzeń.

Kiedy należy użyć usługi Event Grid?

Użyj usługi Event Grid, jeżeli potrzebujesz tych funkcji i cech:

  • Prostota: Łączenie źródeł z subskrybentami w usłudze Event Grid jest proste.
  • Zaawansowane filtrowanie. Subskrypcje mają ścisłą kontrolę nad zdarzeniami odbieranymi z tematu.
  • Rozdysponowywanie. Możesz subskrybować nieograniczoną liczbę punktów końcowych do tych samych zdarzeń i tematów.
  • Niezawodność. Usługa Event Grid ponawia próby dostarczenia zdarzenia do 24 godzin dla każdej subskrypcji.
  • Płatność za zdarzenie. Płacisz tylko za liczbę przekazanych zdarzeń.

Usługa Event Grid jest prostym i wszechstronnym systemem dystrybucji zdarzeń. Użyj jej, aby dostarczać dyskretne zdarzenia subskrybentom, którzy będą odbierać te zdarzenia niezawodnie i szybko. Mamy jeszcze jeden model obsługi komunikatów do zbadania; co zrobić, jeśli chcemy dostarczyć duży strumień zdarzeń? W tym scenariuszu usługa Event Grid nie jest najlepszym rozwiązaniem, ponieważ jest zaprojektowana do dostarczania zdarzeń pojedynczo. Zamiast niej musimy użyć innej usługi platformy Azure: Event Hubs.