concetti relativi agli spazi dei nomi Griglia di eventi di Azure

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

evento

Un evento è la quantità minima di informazioni che descrivono completamente qualcosa che si è verificato in un 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 ha informazioni comuni come source l'evento, time l'evento si è verificato 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 Hub eventi ha l'URL del file acquisito. Un evento relativo a un nuovo ordine nel microservizio Orders potrebbe avere un orderId attributo e un attributo URL alla rappresentazione dello stato dell'ordine. Altri esempi di tipi di evento includono: com.yourcompany.Orders.OrderCreated, , io.solutionname.Auth.MaximumNumberOfUserLoginAttemptsReachedorg.yourorg.GeneralLedger.AccountChanged.

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 si riferisce anche a "eventi" ai messaggi che contengono un punto dati, ad esempio la lettura di un singolo dispositivo o un clic su una pagina dell'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 Griglia di eventi si fa riferimento a questo tipo di evento come punto dati, streaming di dati o semplicemente come dati di telemetria. Tra gli altri tipi di messaggi, questo tipo di eventi viene usato con la funzionalità broker MQTT (Message Queuing Telemetry Transport) di Griglia di eventi.

CloudEvents

Gli argomenti dello spazio dei nomi di Griglia di eventi accettano eventi conformi alla specifica open standard cloudEvents 1.0 di CloudEvents 1.0 di Cloud Native Computing Foundation (CLOUD Native Computing Foundation) con 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. Tutti i messaggi validi che seguono le specifiche CloudEvents devono includere gli attributi di contesto obbligatori seguenti:

La specifica CloudEvents definisce anche gli attributi facoltativi e di contesto dell'estensione che è possibile includere quando si usa Griglia di eventi.

Quando si usa Griglia di eventi, CloudEvents è il formato di evento preferito a causa dei casi d'uso ben documentati (modalità di trasferimento di eventi, formati di eventi e così via), estendibilità e interoperabilità migliorata. CloudEvents migliora l'interoperabilità fornendo un formato di evento comune per la pubblicazione e l'utilizzo di eventi. Consente strumenti uniformi e modi standard di routing e gestione degli eventi.

CloudEvents con modalità tenda s

La specifica CloudEvents definisce tre con modalità tenda: binario, strutturato e in batch.

Importante

Con qualsiasi con modalità tenda è possibile scambiare dati di testo (JSON, text/*e così via) o di eventi con codifica binaria. La con modalità tenda binaria non viene usata esclusivamente per l'invio di dati binari.

Le con modalità tenda non riguardano la codifica usata, binaria o testo, ma sul modo in cui i dati dell'evento e i relativi metadati vengono descritti e scambiati. La con struttura strutturata modalità tenda usa una singola struttura, ad esempio un oggetto JSON, in cui sia gli attributi di contesto che i dati dell'evento si trovano insieme nel payload HTTP. La con modalità tenda binaria separa gli attributi di contesto, di cui viene eseguito il mapping alle intestazioni HTTP e ai dati dell'evento, ovvero il payload HTTP codificato in base al tipo di supporto impostato in Content-Type.

Supporto di CloudEvents

Questa tabella mostra il supporto corrente per la specifica CloudEvents:

CloudEvents con modalità tenda Supportata
JSON strutturato
Json strutturato in batch Sì, per la pubblicazione di eventi
Binario Sì, per la pubblicazione di eventi

La dimensione massima consentita per un evento è 1 MB. Gli eventi superiori a 64 KB vengono addebitati in incrementi di 64 KB.

Strutturata con modalità tenda

Un messaggio in CloudEvents structured con modalità tenda include sia gli attributi di contesto che i dati dell'evento insieme in un payload HTTP.

Importante

Attualmente Griglia di eventi supporta il formato JSON CloudEvents con HTTP.

Ecco un esempio di CloudEvents in modalità strutturata usando il formato JSON. Entrambi i metadati (tutti gli attributi che non sono "dati") e i dati di messaggio/evento (l'oggetto "dati") vengono descritti usando JSON. L'esempio include tutti gli attributi di contesto obbligatori insieme ad alcuni attributi facoltativi (subject, timee ) e datacontenttypeattributi di estensione (comexampleextension1, comexampleothervalue).

{
    "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"
    }
}

È possibile usare il formato JSON con contenuto strutturato per inviare dati dell'evento che non sono un valore JSON. A tale scopo, seguire questa procedura:

  1. Includere un datacontenttype attributo con il tipo di supporto in cui vengono codificati i dati.
  2. Se il tipo di supporto è codificato in un formato di testo come text/plain, text/csvo application/xml, è consigliabile usare un data attributo con una stringa JSON contenente ciò che si sta comunicando come valore.
  3. Se il tipo di supporto rappresenta una codifica binaria, è necessario usare un data_base64 attributo il cui valore è una stringa JSON contenente il valore binario con codifica BA edizione Standard 64.

Ad esempio, questo CloudEvent contiene i dati dell'evento codificati in per application/protobuf scambiare messaggi Protobuf.

{
    "specversion" : "1.0",
    "type" : "com.yourcompany.order.created",
    "source" : "/orders/account/123",
    "id" : "A234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "datacontenttype" : "application/protobuf",
    "data_base64" : "VGhpcyBpcyBub3QgZW5jb2RlZCBpbiBwcm90b2J1ZmYgYnV0IGZvciBpbGx1c3RyYXRpb24gcHVycG9zZXMsIGltYWdpbmUgdGhhdCBpdCBpcyA6KQ=="
}

Per altre informazioni sull'uso degli data attributi o data_base64 , vedere Gestione dei dati .

Per altre informazioni su questo con modalità tenda, vedere le specifiche HTTP strutturate di CloudEvents modalità tenda .

Batch con modalità tenda

Griglia di eventi supporta attualmente il batch JSON con modalità tenda durante la pubblicazione di CloudEvent in Griglia di eventi. Questo con modalità tenda usa una matrice JSON compilata con CloudEvents in struttura con modalità tenda. Ad esempio, l'applicazione può pubblicare due eventi usando una matrice simile alla seguente. Analogamente, se si usa l'SDK del piano dati di Griglia di eventi, questo payload è anche ciò che viene inviato:

[
    {
        "specversion": "1.0",
        "id": "E921-1234-1235",
        "source": "/mycontext",
        "type": "com.example.someeventtype",
        "time": "2018-04-05T17:31:00Z",
        "data": "some data"
    },
    {
        "specversion": "1.0",
        "id": "F555-1234-1235",
        "source": "/mycontext",
        "type": "com.example.someeventtype",
        "time": "2018-04-05T17:31:00Z",
        "data": {
            "somekey" : "value",
            "someOtherKey" : 9
        }
    }
]

Per altre informazioni, vedere Specifiche della modalità contenuto in batch cloudEvents.

Batch

L'applicazione deve raggruppare più eventi in una matrice per ottenere una maggiore efficienza e una maggiore velocità effettiva con una singola richiesta di pubblicazione. I batch possono essere fino a 1 MB e la dimensione massima di un evento è 1 MB.

Con binario modalità tenda

Un CloudEvent in una con modalità tenda binaria ha gli attributi di contesto descritti come intestazioni HTTP. I nomi delle intestazioni HTTP sono il nome dell'attributo di contesto preceduto da ce-. L'intestazione Content-Type riflette il tipo di supporto in cui vengono codificati i dati dell'evento.

Importante

Quando si usa il con binario modalità tenda anche l'intestazione ce-datacontenttype HTTP NON DEVE essere presente.

Importante

Se si prevede di includere attributi personalizzati (ad esempio attributi di estensione) quando si usa il con binario con modalità tenda, assicurarsi che i nomi siano costituiti da lettere minuscole ('a' a 'z') o cifre ('0' a '9') dal carattere ASCII e che non superino i 20 caratteri. Ovvero, la convenzione di denominazione per la denominazione degli attributi di contesto CloudEvents è più restrittiva rispetto a quella dei nomi di intestazione HTTP validi. Non tutti i nomi di intestazione HTTP validi sono un nome di attributo di estensione valido.

Il payload HTTP è i dati dell'evento codificati in base al tipo di supporto in Content-Type.

Una richiesta HTTP usata per pubblicare un cloudEvent in modalità binaria del contenuto può essere simile all'esempio seguente:

POST / HTTP/1.1
HOST mynamespace.eastus-1.eventgrid.azure.net/topics/mytopic
ce-specversion: 1.0
ce-type: com.example.someevent
ce-source: /mycontext
ce-id: A234-1234-1234
ce-time: 2018-04-05T17:31:00Z
ce-comexampleextension1: value
ce-comexampleothervalue: 5
content-type: application/protobuf

Binary data according to protobuf encoding format. No context attributes are included.

Quando usare il file binario o strutturato di CloudEvents modalità tenda

È possibile usare con strutturati modalità tenda se si vuole un approccio semplice per l'inoltro di CloudEvent tra hop e protocolli. Poiché un CloudEvent in con strutturato modalità tenda contiene il messaggio insieme ai relativi metadati, è facile per i client utilizzarlo nel suo complesso e inoltrarlo ad altri sistemi.

È possibile usare il con binario modalità tenda se si conoscono le applicazioni downstream richiedono solo il messaggio senza informazioni aggiuntive, ovvero gli attributi di contesto. Anche se con strutturati con modalità tenda è comunque possibile ottenere i dati dell'evento (messaggio) dal CloudEvent, è più semplice se un'applicazione consumer lo contiene solo nel payload HTTP. Ad esempio, altre applicazioni possono usare altri protocolli e potrebbero essere interessati solo al messaggio principale, non ai relativi metadati. Infatti, i metadati potrebbero essere rilevanti solo per il primo hop immediato. In questo caso, avere i dati che si desidera scambiare oltre ai relativi metadati si presta alla gestione e all'inoltro più semplici.

Autori

Un server di pubblicazione è l'applicazione che invia eventi a Griglia di eventi. 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 gli argomenti dello spazio dei nomi, le origini eventi supportate sono applicazioni personalizzate.

Namespaces (Spazi dei nomi)

Uno spazio dei nomi di Griglia di eventi è un contenitore di gestione per le risorse seguenti:

Conto risorse Protocollo supportato
Argomenti dello spazio dei nomi HTTP
Spazi degli argomenti MQTT
Client MQTT
Gruppi di client MQTT
Certificati CA MQTT
Associazioni di autorizzazioni MQTT

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

Uno spazio dei nomi espone due endpoint:

  • Endpoint HTTP per supportare i requisiti generali di messaggistica usando gli argomenti 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 di identità gestite usate per le risorse contenute nello spazio dei nomi .

Ecco alcuni altri punti sugli spazi dei nomi:

  • Lo spazio dei nomi è una risorsa rilevata con tags le proprietà e location e, una volta creata, è disponibile in resources.azure.com.
  • Il nome dello spazio dei nomi può essere lungo 3-50 caratteri. Può includere caratteri alfanumerici e trattini (-) e nessuna spazi.
  • Il nome deve essere univoco per area.
  • Aree attualmente supportate: Stati Uniti centrali, Asia orientale, Stati Uniti orientali, Stati Uniti orientali 2, Europa settentrionale, Stati Uniti centro-meridionali, Asia sud-orientale, Emirati Arabi Uniti settentrionali, Europa occidentale, Stati Uniti occidentali 2, Stati Uniti occidentali 3.

Unità elaborate

Le unità elaborate definiscono la capacità di ingresso e velocità in uscita degli eventi negli spazi dei nomi. Per altre informazioni, vedere Griglia di eventi di Azure quote e limiti.

Argomenti

Un argomento contiene 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 dello spazio dei nomi

Gli argomenti dello spazio dei nomi sono argomenti creati all'interno di uno spazio dei nomi di Griglia di eventi. 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 relativamente grandi, creare un argomento dello spazio dei nomi 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 i problemi, creare due argomenti dello spazio dei nomi: uno per ogni applicazione. Consentire ai consumer 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.

Gli argomenti dello spazio dei nomi supportano il recapito pull e il recapito push. Vedere quando usare il recapito pull o push per decidere se il recapito pull è l'approccio appropriato in base ai requisiti.

Sottoscrizioni di eventi

Una sottoscrizione di eventi è una risorsa di configurazione associata a un singolo argomento. Tra le altre cose, si usa una sottoscrizione di eventi per impostare i criteri di selezione degli eventi per 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 altre informazioni sulle proprietà delle risorse, cercare le operazioni del piano di controllo nell'API REST di Griglia di eventi.

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.

Recapito pull

Con il recapito pull, l'applicazione si connette a Griglia di eventi per leggere i messaggi usando una semantica simile alla 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 altre informazioni, vedere Panoramica del recapito pull.

Forma dei dati durante la ricezione di eventi tramite il recapito pull

Quando si distribuisce 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à dell'evento è cloudEvent fornito in struttura con modalità tenda. 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
                }
            }
        }
    ]
}

Recapito push

Con il recapito push, Griglia di eventi invia eventi a una destinazione configurata in una sottoscrizione di eventi push (modalità di recapito in). 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 degli spazi dei nomi di Griglia di eventi supporta attualmente Hub eventi di Azure come destinazione. In futuro, gli spazi dei nomi di Griglia di eventi supporteranno più destinazioni, incluse tutte le destinazioni supportate da Griglia di eventi Basic.

Recapito di eventi di Hub eventi

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.

Recapito 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, un webhook o un servizio di Azure a cui Griglia di eventi invia eventi. Con il recapito pull, le applicazioni sottoscrittori si connettono a Griglia di eventi per utilizzare gli eventi. Il recapito pull è supportato per gli argomenti in uno spazio dei nomi di Griglia di eventi.

Importante

Hub eventi è supportato come destinazione per le sottoscrizioni agli argomenti dello spazio dei nomi. Nelle prossime versioni, gli spazi dei nomi di Griglia di eventi supporteranno tutte le destinazioni attualmente disponibili in Griglia di eventi Basic insieme a destinazioni aggiuntive.

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

Quando usare il recapito push e il recapito pull

Di seguito sono riportate linee guida generali che consentono di decidere quando usare il recapito pull o push.

Recapito 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'utilizzo 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 recapito pull consente all'app consumer di rilasciare un evento già letto al broker in modo che possa essere recapitato in un secondo momento.
  • Si vogliono usare collegamenti privati quando si ricevono eventi, che è possibile solo con il recapito pull, non con il recapito push.
  • Non è possibile esporre un endpoint e usare il recapito push, ma è possibile connettersi a Griglia di eventi per utilizzare gli eventi.

Recapito push

  • Si vuole evitare il polling costante per determinare che si è verificata una modifica dello stato del sistema. È invece possibile usare Griglia di eventi per inviare eventi al momento in cui si verificano modifiche dello stato.
  • Si dispone di 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.

Passaggi successivi