Concetti relativi al namespace di Griglia di eventi di Azure

Questo articolo presenta i concetti e le funzionalità principali associati agli argomenti dello spazio dei nomi.

Eventi

Un evento è la quantità minima di informazioni necessarie per descrivere integralmente ciò che si è verificato nel sistema. Spesso si fa riferimento a un evento discreto perché rappresenta un fatto distinto e autonomo su un sistema che fornisce informazioni utili. Ogni evento include informazioni comuni, ad esempiosource dell'evento, time in cui si è verificato l'evento e un identificatore univoco. Ogni evento ha anche un type, che in genere è un identificatore univoco che descrive il tipo di annuncio per cui viene usato l'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 Event Hubs contiene l'URL del file acquisito. Un evento relativo a un nuovo ordine nel microservizio Orders potrebbe avere un attributo orderId e un attributo URL alla rappresentazione dello stato dell'ordine. Altri esempi di tipi di evento includono: com.yourcompany.Orders.OrderCreated, org.yourorg.GeneralLedger.AccountChanged, io.solutionname.Auth.MaximumNumberOfUserLoginAttemptsReached.

Ecco un evento di esempio:

{
    "specversion" : "1.0",
    "type" : "com.yourcompany.order.created",
    "source" : "/orders/account/123",
    "subject" : "O-28964",
    "id" : "A234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "comexampleextension1" : "value",
    "comexampleothervalue" : 5,
    "datacontenttype" : "application/json",
    "data" : {
       "orderId" : "O-28964",
       "URL" : "https://com.yourcompany/orders/O-28964"
    }
}

Un altro tipo di evento

La comunità di utenti si riferisce anche ai messaggi che contengono un dato puntuale con il termine "eventi", ad esempio una singola lettura di un dispositivo o un clic su una pagina di un'applicazione web. Questo tipo di evento viene in genere analizzato in un intervallo di tempo per derivare informazioni dettagliate ed eseguire un'azione. Nella documentazione di Event Grid, indichiamo questo tipo di evento come punto dati, dati in streaming o semplicemente come telemetria. Tra gli altri tipi di messaggi, questo tipo di evento viene utilizzato con la funzionalità del broker MQTT (Message Queuing Telemetry Transport) di Event Grid.

Supporto di CloudEvents

Gli argomenti dello spazio dei nomi di Griglia di eventi accettano eventi conformi alla specifica CloudEvents 1.0, standard aperto, della Cloud Native Computing Foundation (CNCF) usando il binding del protocollo HTTP in formato JSON. Un CloudEvent è un tipo di messaggio che contiene ciò che viene comunicato, detto dati dell'evento e metadati su di esso. I dati degli eventi nelle architetture guidate dagli eventi in genere contengono le informazioni che annunciano una modifica dello stato del sistema. I metadati CloudEvents sono costituiti da un set di attributi che forniscono informazioni contestuali sul messaggio, ad esempio dove ha avuto origine (il sistema di origine), il tipo e così via.

Per altre informazioni, vedere Supporto per lo schema CloudEvents.

Editori

Un editore è l'applicazione che invia gli eventi a Event Grid. Potrebbe trattarsi della stessa applicazione in cui sono stati originati gli eventi, ovvero l'origine evento. È possibile pubblicare eventi dalla propria applicazione quando si usano gli argomenti dello spazio dei nomi.

Origini eventi

Un'origine evento indica la posizione in cui si verifica l'evento. Ogni origine evento supporta uno o più tipi di evento. Ad esempio, l'applicazione è l'origine evento per gli eventi personalizzati definiti dal sistema. Quando si usano i topic del namespace, le origini degli eventi supportate sono le tue applicazioni.

Spazi dei nomi

Uno spazio dei nomi di Event Grid è un contenitore di gestione per le risorse seguenti:

Risorsa Protocollo supportato
Argomenti del namespace HTTP
Spazi tematici MQTT
Clienti MQTT
Gruppi di client MQTT
Certificati CA MQTT
Associazioni autorizzazioni MQTT

Con un namespace di Griglia di eventi di Azure, è possibile raggruppare le risorse correlate e gestirle come una singola unità nella sottoscrizione di Azure. Fornisce un nome di dominio completo (FQDN) univoco.

Uno spazio dei nomi espone due endpoint:

  • Un endpoint HTTP per soddisfare le esigenze generali di messaggistica usando i topic dello spazio dei nomi.
  • Endpoint MQTT per la messaggistica o le soluzioni IoT che usano MQTT.

Uno spazio dei nomi fornisce anche endpoint di rete integrati con DNS. Offre inoltre una gamma di funzionalità di controllo di accesso e gestione dell'integrazione di rete, ad esempio il filtro dell'ingresso IP pubblico e i collegamenti privati. È anche il contenitore delle identità gestite utilizzate per le risorse contenute nello spazio dei nomi.

Ecco alcuni altri punti sui namespace:

  • Lo spazio dei nomi è una risorsa monitorata con le proprietà tags e location e, una volta creato, è disponibile in resources.azure.com.
  • Il nome dello spazio dei nomi può essere lungo 3-50 caratteri. Può includere caratteri alfanumerici e trattini (-) e nessuno spazio.
  • Il nome deve essere univoco per area.

Unità di throughput

Le unità di throughput (TU) definiscono la capacità della frequenza degli eventi in ingresso e in uscita nei namespace. Per altre informazioni, vedere quote e limiti di Griglia di eventi di Azure.

Argomenti

Argomento contenente eventi pubblicati in Griglia di eventi. In genere si usa una risorsa argomento per una raccolta di eventi correlati. Spesso si fa riferimento ad argomenti all'interno di uno spazio dei nomi come argomenti dello spazio dei nomi.

Argomenti del namespace

Gli argomenti del namespace sono argomenti creati in un namespace di Event Grid. L'applicazione pubblica eventi in un endpoint dello spazio dei nomi HTTP specificando un argomento dello spazio dei nomi in cui gli eventi pubblicati sono contenuti logicamente. Quando si progetta l'applicazione, è necessario decidere quanti argomenti creare. Per soluzioni di dimensioni relativamente grandi, creare un topic del namespace per ogni categoria di eventi correlati. Si consideri, ad esempio, un'applicazione che gestisce gli account utente e un'altra applicazione sugli ordini dei clienti. È improbabile che tutti i sottoscrittori di eventi vogliano eventi di entrambe le applicazioni. Per separare le responsabilità, crea due topic del namespace: uno per ogni applicazione. Consentire ai consumatori di eventi di sottoscrivere l'argomento in base ai requisiti. Per le soluzioni di piccole dimensioni, è preferibile inviare tutti gli eventi a un singolo argomento.

I topic dello spazio dei nomi supportano recapito pull e recapito push. Consulta quando utilizzare la distribuzione pull o push per stabilire se la distribuzione pull è la soluzione giusta in base ai tuoi requisiti.

Sottoscrizioni di eventi

Una sottoscrizione di eventi è una risorsa di configurazione associata a un singolo argomento. Tra le altre cose, una sottoscrizione di eventi viene usata per impostare i criteri di selezione degli eventi, al fine di definire la raccolta di eventi disponibile per un sottoscrittore del set totale di eventi disponibili in un argomento. È possibile filtrare gli eventi in base ai requisiti del sottoscrittore. Ad esempio, è possibile filtrare gli eventi in base al tipo di evento. È anche possibile definire criteri di filtro per le proprietà dei dati degli eventi se si usa un oggetto JSON come valore per la proprietà di dati. Per ulteriori informazioni sulle proprietà delle risorse, cercare le operazioni del piano di controllo nell'API REST di Event Grid.

Diagramma che mostra un argomento e le sottoscrizioni di eventi associate.

Per un esempio di creazione di sottoscrizioni per gli argomenti dello spazio dei nomi, vedere Pubblicare e utilizzare messaggi usando gli argomenti dello spazio dei nomi tramite l'interfaccia della riga di comando.

Nota

Le sottoscrizioni di eventi in un argomento dello spazio dei nomi includono un modello di risorse semplificato rispetto a quello usato per argomenti personalizzati, di dominio, partner e di sistema (Griglia di eventi di base). Per altre informazioni, vedere Creare, visualizzare e gestire sottoscrizioni di eventi.

Consegna pull

Con la consegna pull, l'applicazione si connette a Griglia eventi per leggere messaggi tramite una semantica simile a quella di una coda. Quando le applicazioni si connettono a Griglia di eventi per utilizzare gli eventi, sono sotto controllo della frequenza di utilizzo degli eventi e della relativa tempistica. Le applicazioni consumer possono anche usare endpoint privati quando ci si connette a Griglia di eventi per leggere gli eventi usando lo spazio IP privato.

Il recapito pull supporta le operazioni seguenti per la lettura dei messaggi e il controllo dello stato dei messaggi: ricezione, conferma, rilascio, rifiuto e rinnovo del blocco. Per ulteriori informazioni, vedere panoramica della distribuzione pull.

Struttura dei dati alla ricezione di eventi tramite distribuzione pull

Quando si recapitano eventi tramite il recapito pull, Griglia di eventi include una matrice di oggetti che a sua volta include gli oggetti event e brokerProperties. Il valore della proprietà event è il CloudEvent recapitato in modalità contenuto strutturata. L'oggetto brokerProperties contiene il token di blocco associato al CloudEvent recapitato. L'oggetto JSON seguente è una risposta di esempio a un'operazione di ricezione che restituisce due eventi:

{
    "value": [
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDXYS23Z+5Hq754VqQjxywE",
                "deliveryCount": 2
            },
            "event": {
                "specversion": "1.0",
                "id": "A234-1234-1235",
                "source": "/mycontext",
                "time": "2018-04-05T17:31:00Z",
                "type": "com.example.someeventtype",
                "data": "some data"
            }
        },
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDLeaL+nRJLNq3/5NXd/T0b",
                "deliveryCount": 1
            },
            "event": {
                "specversion": "1.0",
                "id": "B688-1234-1235",
                "source": "/mycontext",
                "type": "com.example.someeventtype",
                "time": "2018-04-05T17:31:00Z",
                "data": {
                    "somekey" : "value",
                    "someOtherKey" : 9
                }
            }
        }
    ]
}

Consegna push

Con il recapito push, Event Grid invia gli eventi a una destinazione configurata in una sottoscrizione di evento push (modalità di recapito). Fornisce una logica di ripetizione dei tentativi affidabile nel caso in cui la destinazione non sia in grado di ricevere eventi.

Importante

Il recapito push dei namespace di Event Grid supporta attualmente Hub eventi di Azure come destinazione. In futuro, gli spazi dei nomi di Event Grid supporteranno un numero maggiore di destinazioni, comprese tutte le destinazioni supportate da Event Grid Basic.

Distribuzione di eventi di Event Hubs

Griglia di eventi usa l'SDK di Hub eventi per inviare eventi a Hub eventi tramite AMQP. Gli eventi vengono inviati come matrice di byte con ogni elemento nella matrice contenente un CloudEvent.

Consegna push e pull

Griglia di eventi supporta il recapito di eventi push e pull tramite HTTP. Con il recapito push si definisce una destinazione in una sottoscrizione di eventi, in un webhook o in un servizio di Azure, a cui Event Grid invia gli eventi. Con la consegna pull, le applicazioni sottoscrittore si connettono a Griglia eventi per usare gli eventi. La consegna pull è supportata per gli argomenti in uno spazio dei nomi di Griglia eventi.

Importante

Event Hubs è supportato come destinazione per le sottoscrizioni ai topic del namespace. Nelle prossime versioni, i namespace di Event Grid supporteranno tutte le destinazioni attualmente disponibili in Event Grid Basic, oltre a destinazioni aggiuntive.

Diagramma generale che mostra il recapito push e il recapito pull con il tipo di risorse coinvolte.

Quando utilizzare la consegna push rispetto alla consegna pull

Di seguito sono riportate linee guida generali per aiutarti a decidere quando utilizzare la distribuzione pull o push.

Consegna pull

  • È necessario il controllo completo su quando ricevere gli eventi. Ad esempio, l'applicazione potrebbe non essere sempre aggiornata, non abbastanza stabile o elaborare i dati in determinati momenti.
  • È necessario il controllo completo sull'uso degli eventi. Ad esempio, un servizio downstream o un livello nell'applicazione consumer presenta un problema che impedisce l'elaborazione di eventi. In tal caso, l'API di consegna pull consente all'applicazione consumer di restituire al broker un evento già letto, affinché possa essere consegnato successivamente.
  • Se si desidera usare collegamenti privati quando si ricevono eventi, tenere presente che ciò è possibile solo con la consegna pull e non con la consegna push.
  • Non hai la possibilità di esporre un endpoint e usare il recapito push, ma puoi connetterti a Event Grid per consumare gli eventi.

Consegna push

  • Si vuole evitare il polling costante per determinare che si è verificata una modifica dello stato del sistema. Si preferisce usare Event Grid per inviarti eventi quando si verificano modifiche di stato.
  • È presente un'applicazione che non può effettuare chiamate in uscita. Ad esempio, l'organizzazione potrebbe preoccuparsi dell'esfiltrazione dei dati. Tuttavia, l'applicazione può ricevere eventi tramite un endpoint pubblico.