Scegliere Griglia di eventi di Azure

Completato

Molte applicazioni usano un modello di pubblicazione/sottoscrizione per notificare ai componenti distribuiti che si è verificato un evento o che è stato modificato un oggetto. Si supponga di avere un'applicazione per la condivisione di musica con un'API Web in esecuzione in Azure. Quando un utente carica un nuovo brano, è necessario inviare una notifica a tutte le app per dispositivi mobili installate nei dispositivi degli utenti di tutto il mondo interessati a tale genere.

In questa architettura non è necessario che l'origine di pubblicazione del file audio conosca i sottoscrittori interessati alla musica condivisa. Si vuole anche stabilire una relazione uno-a-molti in cui siano presenti più sottoscrittori che possono facoltativamente decidere se sono interessati a questo nuovo brano. Griglia di eventi di Azure è la soluzione ideale per questo genere di architettura.

Che cos'è Griglia di eventi di Azure?

Griglia di eventi di Azure è un servizio di routing di eventi completamente gestito in esecuzione in Azure Service Fabric. Griglia di eventi distribuisce gli eventi provenienti da origini diverse, come account di archiviazione BLOB di Azure o Servizi multimediali di Azure, a gestori diversi, ad esempio Funzioni di Azure o webhook. Il servizio Griglia di eventi è stato creato per semplificare la creazione di applicazioni basate su eventi e serverless in Azure.

Griglia di eventi supporta la maggior parte dei servizi di Azure come origine di pubblicazione o sottoscrittore e questa soluzione può essere usata con servizi di terze parti. Fornisce un sistema di messaggistica scalabile dinamicamente e a basso costo, che consente alle origini di pubblicazione di notificare una modifica di stato ai sottoscrittori. Nell'immagine seguente viene illustrata la ricezione da parte di Griglia di eventi di Azure di messaggi provenienti da origini diverse e la loro distribuzione a gestori eventi in base alla sottoscrizione.

Griglia di eventi di Azure include vari concetti relativi alla connessione di un'origine a un sottoscrittore:

  • Eventi: ciò che è accaduto.
  • Origini eventi: dove si è verificato l'evento.
  • Argomenti: endpoint a cui le origini di pubblicazione inviano gli eventi.
  • Sottoscrizioni di eventi: endpoint o meccanismo predefinito per il routing degli eventi, a volte a più gestori. Le sottoscrizioni vengono usate dai gestori anche per filtrare in modo intelligente gli eventi in ingresso.
  • Gestori eventi: l'app o il servizio che reagisce all'evento.

La figura seguente illustra Griglia di eventi di Azure tra più origini eventi e più gestori eventi. Le origini eventi inviano gli eventi a Griglia di eventi di Azure, che inoltra quelli rilevanti ai sottoscrittori. Griglia di eventi usa gli argomenti per decidere quali eventi inviare a quali gestori. Le origini eventi contrassegnano ogni evento con uno o più argomenti e i gestori degli eventi sottoscrivono gli argomenti a cui sono interessati.

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

Che cos'è un evento?

Gli eventi sono i messaggi di dati che passano attraverso Griglia di eventi e descrivono cosa è avvenuto. Ogni evento è indipendente, può avere dimensioni fino a 64 KB e contiene diverse informazioni basate su uno schema definito da Griglia di eventi:

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]
Campo Descrizione
topic Percorso completo della risorsa all'origine evento. Questo valore viene specificato da Griglia di eventi.
subject Percorso definito dall'editore all'oggetto dell'evento.
id Identificatore univoco per l'evento.
eventType Uno dei tipi di evento registrati per l'origine evento. È possibile creare filtri in base a questo valore, ad esempio CustomerCreated, BlobDeleted, HttpRequestReceived e così via.
eventTime Ora di generazione dell'evento in base all'ora UTC del provider.
data Informazioni specifiche rilevanti per il tipo di evento. Un evento di creazione di un nuovo file in Archiviazione di Azure, ad esempio, contiene i dettagli sul file, come il valore lastTimeModified. Un evento di Hub eventi include invece l'URL del file di Acquisizione. Questo campo è facoltativo.
dataVersion Versione dello schema dell'oggetto dati. La versione dello schema è definita dall'origine di pubblicazione.
metadataVersion Versione dello schema dei metadati dell'evento. Lo schema delle proprietà di primo livello è definito da Griglia di eventi. Questo valore viene specificato da Griglia di eventi.

Suggerimento

Griglia di eventi invia un evento per indicare che qualcosa si è verificato o che c'è stata una modifica. L'oggetto effettivo modificato, tuttavia, non fa parte dei dati dell'evento. Viene invece spesso passato un URL o un identificatore per fare riferimento all'oggetto modificato.

Che cos'è un'origine evento?

Le origini eventi sono responsabili dell'invio degli eventi a Griglia di eventi. Ogni origine evento è correlata a uno o più tipi di evento. Archiviazione di Azure è, ad esempio, l'origine degli eventi creati dai BLOB. Hub IoT è l'origine degli eventi creati dai dispositivi. L'applicazione è l'origine degli eventi personalizzati definiti dall'utente. Le origini eventi verranno analizzate in modo più dettagliato più avanti.

Griglia di eventi di Azure include il concetto di autore di eventi, spesso confuso con l'origine evento. Un autore di eventi è un utente o un'organizzazione che decide di inviare eventi a Griglia di eventi. Microsoft pubblica ad esempio gli eventi per diversi servizi di Azure. È possibile pubblicare eventi dalla propria applicazione. Le organizzazioni che ospitano servizi all'esterno di Azure possono pubblicare eventi tramite Griglia di eventi. L'origine evento è il servizio specifico che genera l'evento per quell'autore. Anche se i due termini sono leggermente diversi, ai fini di questa unità si userà "autore" e "origine evento" in modo intercambiabile per rappresentare l'entità che invia il messaggio a Griglia di eventi.

Che cos'è l'argomento di un evento?

Gli argomenti degli eventi classificano gli eventi in gruppi. Gli argomenti sono rappresentati da un endpoint pubblico e rappresentano la posizione di destinazione degli eventi inviati dall'origine evento. Quando si progetta l'applicazione, è possibile decidere il numero di argomenti da creare. Per le soluzioni di dimensioni maggiori è possibile creare un argomento personalizzato per ogni categoria di eventi correlati, mentre le soluzioni più piccole potrebbero inviare tutti gli eventi a un singolo argomento. Si consideri, ad esempio, un'applicazione che invia gli eventi correlati alla modifica degli account utente e all'elaborazione degli ordini. È improbabile che un gestore eventi richieda entrambe le categorie di eventi. Creare due argomenti personalizzati e consentire ai gestori eventi di sottoscrivere l'argomento di interesse. I sottoscrittori di eventi possono filtrare in base ai tipi di eventi desiderati di un argomento specifico.

Gli argomenti sono suddivisi in argomenti di sistema e argomenti personalizzati.

Argomenti di sistema

Gli argomenti di sistema sono argomenti predefiniti forniti dai servizi di Azure. Gli argomenti di sistema non vengono visualizzati nella sottoscrizione di Azure perché sono di proprietà dell'origine di pubblicazione, ma possono essere sottoscritti. Per eseguire la sottoscrizione, fornire le informazioni sulla risorsa da cui si vuole ricevere gli eventi. È possibile sottoscrivere gli eventi di una risorsa se si ha accesso alla risorsa.

Argomenti personalizzati

Gli argomenti personalizzati sono argomenti di applicazioni e di terze parti. Quando l'utente crea o gli viene assegnato l'accesso a un argomento personalizzato, tale argomento personalizzato viene visualizzato nella sottoscrizione.

Che cos'è una sottoscrizione di eventi?

Le sottoscrizioni di eventi definiscono gli eventi relativi a un argomento che un gestore eventi vuole ricevere. Una sottoscrizione consente anche di filtrare gli eventi in base al tipo o all'oggetto, in modo che un gestore eventi riceva solo gli eventi pertinenti.

Che cos'è un gestore eventi?

Un gestore eventi, detto anche "sottoscrittore" di eventi, è qualsiasi componente (applicazione o risorsa) che può ricevere eventi da Griglia di eventi. Funzioni di Azure, ad esempio, può eseguire un codice in risposta al nuovo brano che viene aggiunto all'account di archiviazione BLOB. I sottoscrittori possono decidere quali eventi vogliono gestire e Griglia di eventi invierà una notifica a ogni sottoscrittore interessato quando è disponibile un nuovo evento, senza necessità di polling.

Tipi di origini evento

I tipi di risorse di Azure seguenti possono generare eventi:

Servizi di Azure che supportano gli argomenti del sistema

Ecco alcuni servizi di Azure che supportano gli argomenti del sistema. Per l'elenco completo dei servizi di Azure che supportano gli argomenti del sistema, vedere Argomenti del sistema in Griglia di eventi di Azure.

  • Sottoscrizioni e gruppi di risorse di Azure: le sottoscrizioni e i gruppi di risorse generano eventi correlati alle operazioni di gestione in Azure. Ad esempio, quando un utente crea una macchina virtuale, questa origine genera un evento.
  • Registro Container: il servizio Registro Azure Container genera eventi quando vengono aggiunte, rimosse o modificate immagini nel registro.
  • Hub eventi: l'hub eventi può essere usato per elaborare e archiviare eventi da un'ampia gamma di origini dati, in genere correlate a registrazione o telemetria. L'hub eventi può generare eventi in Griglia di eventi quando vengono acquisiti i file.
  • Bus di servizio: il bus di servizio può generare eventi in Griglia di eventi quando sono presenti messaggi attivi senza listener attivi.
  • Account di archiviazione: gli account di archiviazione possono generare eventi quando gli utenti aggiungono BLOB, file, voci di tabella o messaggi in coda. È possibile usare come origini eventi sia account BLOB che account per uso generico V2.
  • Servizi multimediali: Servizi multimediali ospita contenuti multimediali audio e video e offre funzionalità di gestione avanzate per i file multimediali. Servizi multimediali può generare eventi all'avvio o al completamento di un processo di codifica in un file video.
  • Hub IoT di Azure: l'hub IoT comunica con i dispositivi IoT, da cui raccoglie dati di telemetria. Può generare eventi ogni volta che arrivano comunicazioni di questo tipo.

Per altre informazioni, vedere Argomenti del sistema in Griglia di eventi di Azure.

Argomenti personalizzati

È possibile generare gli eventi personalizzati tramite l'API REST o con Azure SDK in Java, GO, .NET, Node, Python e Ruby. È ad esempio possibile creare un evento personalizzato nella funzionalità App Web di Servizio app di Azure. Ciò può avvenire nel ruolo di lavoro, quando un messaggio viene prelevato da una coda di archiviazione.

Questa profonda integrazione con svariate origini eventi all'interno di Azure garantisce che Griglia di eventi possa distribuire eventi correlati a quasi tutte le risorse di Azure.

Gestori eventi

I tipi di oggetto seguenti in Azure possono ricevere e gestire gli eventi da Griglia di eventi:

  • Funzioni di Azure: codice personalizzato che viene eseguito in Azure senza la necessità di una configurazione esplicita di un server o contenitore host virtuale. Usare una funzione di Azure come gestore eventi quando si vuole scrivere una risposta personalizzata per l'evento.
  • App per la logica di Azure: usare le app per la logica per implementare i processi aziendali per elaborare gli eventi di Griglia di eventi. In questo scenario non si crea un webhook in modo esplicito. Il webhook viene creato automaticamente quando si configura l'app per la logica in modo che gestisca gli eventi di Griglia di eventi.
  • Webhook: un webhook è un'API Web che implementa un'architettura push. È possibile elaborare gli eventi usando i runbook di Automazione di Azure. I webhook supportano l'elaborazione di eventi usando runbook automatizzati. È necessario creare un webhook per il runbook e usare il gestore di webhook.
  • Hub eventi: Usare Hub eventi quando la soluzione riceve gli eventi da Griglia di eventi più velocemente di quanto sia possibile elaborarli. Una volta che gli eventi si trovano in un hub eventi, l'applicazione può elaborare gli eventi dall'hub eventi in base a una propria pianificazione.
  • Bus di servizio: è possibile usare una coda del servizio o un argomento come gestore per eventi da Griglia di eventi.
  • Code di archiviazione: usare l'archiviazione code per ricevere gli eventi di cui è necessario eseguire il pull. È possibile usare l'archiviazione code quando si dispone di un processo a esecuzione prolungata che impiega troppo tempo per rispondere. Mediante l'invio di eventi all'archiviazione code, l'app può eseguire il pull ed elaborare eventi in base alla propria pianificazione.
  • Microsoft Power Automate: anche Power Automate ospita flussi di lavoro, ma è più facile da usare per il personale non tecnico.

Per altre informazioni, vedere Gestori di eventi.

È consigliabile usare Griglia di eventi?

Usare Griglia di eventi quando sono necessarie queste caratteristiche:

  • Semplicità: in Griglia di eventi è molto semplice connettere le origini ai sottoscrittori.
  • Filtro avanzato: le sottoscrizioni possono controllare in modo preciso gli eventi ricevuti da un argomento.
  • Ampia estensione: è possibile sottoscrivere un numero illimitato di endpoint per gli stessi eventi e argomenti.
  • Affidabilità: Griglia di eventi ritenta il recapito degli eventi per 24 ore per ogni sottoscrizione.
  • Pagamento per evento: si paga solo per il numero di eventi trasmessi.

Griglia di eventi è un sistema di distribuzione di eventi semplice, ma versatile. Usarlo per recapitare eventi separati ai sottoscrittori, che riceveranno tali eventi in modo rapido e affidabile. Resta ancora da esaminare il modello di messaggistica in cui si recapita un flusso di eventi di grandi dimensioni. In questo scenario, Griglia di eventi non è la soluzione ideale perché è progettato per il recapito di un evento alla volta. È invece necessario usare un altro servizio di Azure: Hub eventi.