Concetti relativi al namespace di Griglia di eventi di Azure

Questo articolo descrive 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. Un evento viene spesso chiamato evento discreto perché rappresenta un fatto distinto e autonomo su un sistema che fornisce informazioni dettagliate praticabili. 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 community degli utenti fa riferimento anche ai messaggi che contengono un punto dati, ad esempio la lettura di un singolo dispositivo o un clic su una pagina dell'applicazione Web, come "eventi". In genere si analizza questo tipo di evento in un intervallo di tempo per derivare informazioni dettagliate ed eseguire un'azione. Nella documentazione di Griglia di eventi questo tipo di evento è denominato punto dati, dati di streaming o semplicemente dati di telemetria. La funzionalità broker MQTT della griglia di eventi usa questo tipo di evento, tra gli altri tipi di messaggi.

Supporto di CloudEvents

I topic dello spazio dei nomi di Event Grid accettano eventi conformi alla specifica dello standard aperto della Cloud Native Computing Foundation (CNCF) CloudEvents 1.0 tramite il binding del protocollo HTTP con il 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) e il relativo tipo.

Per altre informazioni, vedere Supporto per lo schema CloudEvents.

Editori

Un editore è l'applicazione che invia gli eventi a Event Grid. Può essere la stessa applicazione in cui hanno avuto origine gli eventi, 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

Utilizzando uno spazio di Griglia di eventi di Azure, puoi raggruppare le risorse correlate e gestirle come un'unica unità nel tuo abbonamento Azure. Fornisce un nome di dominio completo (FQDN) univoco.

Lo spazio dei nomi dispone di due endpoint:

  • Un endpoint HTTP per supportare requisiti generali di messaggistica utilizzando argomenti per i namespace.
  • 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:

  • Un namespace è una risorsa tracciata con tags proprietà e location . Dopo averlo creato, puoi trovarlo su resources.azure.com.
  • Il nome dello spazio dei nomi può essere lungo 3-50 caratteri. Può includere caratteri alfanumerici, 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.

Scalabilità automatica

L'autoscala regola automaticamente il numero di unità di throughput assegnate a uno spazio di nomi Event Grid in base al traffico in tempo reale e all'utilizzo delle risorse. Monitora continuamente indicatori chiave di prestazione e scala la capacità entro i limiti minimi e massimi che configuri. Questo comportamento aiuta a mantenere prestazioni costanti durante picchi di carico di lavoro e riduce i costi nei periodi di bassa attività senza richiedere interventi manuali.

Per usare Autoscala, lo abiliti nello spazio dei nomi e specifichi:

  • Unità minime di throughput: La soglia minima della capacità. Il namespace non scala al di sotto di questo valore.
  • Unità di massima produttività: Il tetto massimo della capacità. Il namespace non scala oltre questo valore.

Event Grid valuta l'utilizzo in base agli eventi in ingresso, agli eventi in uscita, ai tassi di pubblicazione MQTT in ingresso e in uscita e al numero di client MQTT registrati. Quando una categoria supera la soglia di scalabilità verso l'alto, vengono allocate ulteriori TU. Quando tutte le categorie scendono al di sotto della soglia di ridimensionamento, le TU vengono rilasciate. I periodi di recupero tra le operazioni di scala prevengono oscillazioni rapide.

La scalabilità automatica è utile per i carichi di lavoro MQTT, dove la distribuzione dei messaggi e la crescita delle sottoscrizioni possono variare rapidamente man mano che i dispositivi si connettono e si disconnettono. È anche utile per i carichi di lavoro dei broker di eventi con modelli di traffico intermittente.

Per i dettagli di configurazione e i limiti di capacità per ogni TU, consulta la panoramica di Autoscale e la guida dettagliata.

Argomenti

Argomento contenente eventi pubblicati in Griglia di eventi. In genere si usa una risorsa argomento per una raccolta di eventi correlati. Gli argomenti all'interno di uno spazio dei nomi vengono spesso chiamati 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, 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, utilizza un abbonamento a eventi per impostare i criteri di selezione dell'evento e definire la collezione di eventi disponibile per un abbonato tra l'insieme 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. Puoi anche definire criteri di filtro sulle proprietà dei dati degli eventi se usi un oggetto JSON come valore per la proprietà dati . Per maggiori informazioni sulle proprietà delle risorse, consulta la documentazione dell'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

Gli abbonamenti agli eventi sotto un argomento di namespace presentano un modello di risorse semplificato rispetto al modello utilizzato per argomenti personalizzati, di dominio, partner e di sistema (Event Grid Basic). 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, controllano la frequenza e la tempistica dell'evento. 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 da 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 possa 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.