Condividi tramite


Registro schemi in Hub eventi di Azure

Registro schemi in Hub eventi di Azure offre molti vantaggi. Registro schemi consente di mantenere la coerenza dei dati, semplificare l'evoluzione dello schema, migliorare l'interoperabilità e ridurre le attività di sviluppo nei flussi di lavoro di streaming di eventi e ad accoppiamento libero. Le organizzazioni distribuite di grandi dimensioni che usano un repository centralizzato per gli schemi possono usare il Registro schemi per ottenere un'elaborazione e una governance dei dati altamente affidabili con un sovraccarico operativo ridotto.

I registri schemi in Hub eventi di Azure soddisfano molti ruoli negli scenari di streaming di eventi basati sullo schema:

  • Fornire un repository in cui è possibile registrare, gestire ed evolvere più schemi
  • Gestire l'evoluzione dello schema con più regole di compatibilità
  • Eseguire la convalida dei dati per tutti i dati schematizzati
  • Fornire librerie lato client (serializzatori e deserializzatori) per producer e consumer
  • Migliorare l'efficienza della velocità effettiva di rete passando l'ID schema anziché la definizione dello schema per ogni payload

I registri schemi in Hub eventi di Azure sono supportati nei livelli Standard, Premium e Dedicato.

Componenti del Registro di sistema dello schema

Il Registro di sistema dello schema fa parte dello spazio dei nomi di Hub eventi, ma può essere usato anche con altri broker di messaggi o eventi, inclusi i servizi di messaggistica di Azure. Include più gruppi di schemi, che fungono da raggruppamento logico di schemi e possono essere gestiti indipendentemente da altri gruppi di schemi.

Diagramma che mostra i componenti di un registro schemi in Hub eventi di Azure.

Schemi

In qualsiasi sistema ad accoppiamento libero, più applicazioni comunicano, principalmente tramite i dati. Gli schemi definiscono la struttura dei dati in modo dichiarativo. Di conseguenza, il contratto tra le applicazioni producer e consumer è ben definito, garantendo un'elaborazione affidabile su larga scala.

Una definizione di schema include:

  • Campi: singoli elementi di dati, ad esempio nome, titolo libro o indirizzo.
  • Tipi di dati: tipo di dati che possono essere archiviati, ad esempio stringa, data/ora o matrice.
  • Struttura: modalità di organizzazione dei campi, ad esempio strutture o matrici annidate.

Gli schemi definiscono il contratto tra producer e consumer. Uno schema definito in un registro dello schema di Hub eventi consente di gestire il contratto al di fuori dei dati dell'evento, eliminando così il sovraccarico del payload.

Formati dello schema

I formati di schema vengono usati per determinare il modo in cui uno schema è strutturato e definito. Ogni formato descrive linee guida e sintassi specifiche per definire la struttura degli eventi usati per lo streaming di eventi.

Schema Avro

Apache Avro è un sistema di serializzazione dei dati diffuso che usa un formato binario compatto e offre funzionalità di evoluzione dello schema.

Per altre informazioni sull'uso del formato dello schema Avro con un registro dello schema di Hub eventi, vedere:

Schema JSON

Uno schema JSON (JavaScript Object Notation) è un modo standardizzato per definire la struttura e i tipi di dati degli eventi. Uno schema JSON consente l'uso sicuro e affidabile del formato di dati JSON nel flusso di eventi.

Per altre informazioni sull'uso del formato dello schema JSON con un registro dello schema di Hub eventi, vedere Come usare un registro schemi con Kafka e lo schema JSON.

Buffer di protocollo

Protocol Buffers (Protobuf) è un meccanismo indipendente dal linguaggio, indipendente dalla piattaforma ed estendibile per la serializzazione di dati strutturati. Viene usato per definire in modo efficiente le strutture di dati e serializzarle in un formato binario compatto.

Gruppi di schemi

I gruppi di schemi sono gruppi logici di schemi simili organizzati in base ai criteri aziendali. Un gruppo di schemi contiene:

  • Più definizioni di schema.
  • Più versioni di uno schema specifico.
  • Metadati relativi al tipo di schema e alla compatibilità per tutti gli schemi nel gruppo.

È possibile considerare un gruppo di schemi come un subset del Registro di sistema dello schema allineato a una particolare applicazione o a un'unità organizzativa, con un modello di autorizzazione separato. Questo limite di sicurezza aggiuntivo consente di garantire che i metadati e i segreti commerciali non vengano persi nel modello di servizi condivisi. Consente inoltre ai proprietari di applicazioni di gestire gli schemi indipendentemente da altre applicazioni che condividono lo stesso spazio dei nomi.

Evoluzione dello schema

Gli schemi devono evolversi con il requisito aziendale dei producer e dei consumer. Il Registro schemi supporta l'evoluzione dello schema introducendo le modalità di compatibilità a livello di gruppo dello schema. Quando si crea un gruppo di schemi, è possibile specificare la modalità di compatibilità degli schemi inclusi in tale gruppo di schemi. Quando si aggiorna uno schema, la modifica deve essere conforme alla modalità di compatibilità assegnata in modo che possa creare una nuova versione dello schema.

L'evoluzione dello schema è supportata solo per il formato dello schema Avro.

Il Registro schemi è supportato nelle modalità di compatibilità seguenti.

Compatibilità con le versioni precedenti

La modalità di compatibilità con le versioni precedenti consente al codice consumer di usare una nuova versione di uno schema ed elaborare i messaggi con una versione precedente dello schema. La modalità di compatibilità con le versioni precedenti consente di apportare le modifiche seguenti in uno schema:

  • Eliminare i campi
  • Aggiungere campi facoltativi

Compatibilità con le versioni successive

La compatibilità con inoltro consente al codice consumer di usare una versione precedente dello schema e leggere i messaggi con il nuovo schema. La modalità di compatibilità con inoltro consente di apportare le modifiche seguenti in uno schema:

  • Aggiungi campi
  • Eliminare i campi facoltativi

Nessuna compatibilità

Quando si usa la None modalità di compatibilità, Registro schemi non esegue controlli di compatibilità quando si aggiornano gli schemi.

SDK client

È possibile usare una delle librerie seguenti per includere un serializzatore Avro. È possibile usare serializzatori Avro per serializzare e deserializzare i payload che contengono identificatori dello schema per il Registro di sistema dello schema e i dati con codifica Avro:

Linguaggio di programmazione SDK Esempi
.NET Microsoft.Azure.Data.SchemaRegistry.ApacheAvro Esempi di .NET
Java azure-data-schemaregistry-avro Esempi di Java
Python azure-schemaregistry-avroserializer Esempi per Python
JavaScript @azure/schema-registry-avro Esempi di NodeJS

Inoltre, le librerie seguenti sono disponibili anche in base ai carichi di lavoro.

Limiti

Per i limiti, ad esempio il numero di schemi che è possibile usare in uno spazio dei nomi, vedere Quote e limiti di Hub eventi.

Controllo dell'accesso basato sui ruoli di Azure

Per accedere a un registro schemi a livello di programmazione, seguire questa procedura:

  1. Registrare l'applicazione in Microsoft Entra ID.
  2. Aggiungere l'entità di sicurezza dell'applicazione a uno dei ruoli di Controllo degli accessi in base al ruolo di Azure seguenti a livello di spazio dei nomi.
Ruolo Descrizione
Proprietario Leggere, scrivere ed eliminare i gruppi e gli schemi del Registro di sistema dello schema
Collaboratore Leggere, scrivere ed eliminare i gruppi e gli schemi del Registro di sistema dello schema
Lettore del Registro schemi Leggere ed elencare i gruppi e gli schemi del Registro di sistema dello schema
Collaboratore del Registro schemi Leggere, scrivere ed eliminare i gruppi e gli schemi del Registro di sistema dello schema

Per informazioni su come creare e registrare un'applicazione usando il portale di Azure, vedere Registrare un'applicazione con Microsoft Entra ID. Sono necessari l'ID client (ID applicazione), l'ID tenant e il segreto da usare nel codice.