Registro degli schemi in Hub eventi di Azure

Schema Registry in Hub eventi di Azure è un repository centralizzato che memorizza e gestisce gli schemi che le tue applicazioni di produttore e consumer utilizzano per serializzare e deserializzare i payload degli eventi. Mantenendo gli schemi in un unico posto, Schema Registry ti aiuta a mantenere la coerenza dei dati, semplificare l'evoluzione degli schemi, migliorare l'interoperabilità e ridurre lo sforzo di sviluppo in flussi di lavoro di streaming di eventi debolmente accoppiati. Le grandi organizzazioni distribuite possono utilizzare Schema Registry per ottenere un'elaborazione e una governance affidabili dei dati con poco sovrapprezzo operativo.

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 produttori e consumatori
  • Migliorare l'efficienza del throughput di rete passando l'ID dello 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 degli schemi

Il registro degli schemi è parte dello spazio dei nomi degli Event Hubs, ma può essere utilizzato 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 debolmente accoppiato, più applicazioni comunicano principalmente tramite dati. Gli schemi definiscono la struttura dei dati in modo dichiarativo. Di conseguenza, il protocollo di comunicazione 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 determinano come 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 ulteriori informazioni sull'uso del formato dello schema Avro con un registro degli schemi di Event Hubs, 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 ulteriori informazioni sull'uso del formato dello schema JSON con un registro degli schemi di Event Hubs, vedere Come usare un registro schemi con Kafka e JSON schema.

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 schema sono gruppi logici di schemi simili che organizzi secondo i criteri del tuo business. Un gruppo di schemi contiene:

  • Più definizioni di schema.
  • Più versioni di uno schema specifico.
  • Metadati sul tipo di schema e sulla compatibilità per tutti gli schemi del 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 le esigenze aziendali di produttori e consumatori. 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 schema Avro.

Schema Registry supporta le seguenti modalità di compatibilità.

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à diretta consente al codice consumer di usare una versione precedente dello schema e leggere i messaggi con il nuovo schema. La modalità di compatibilità futura 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 Campioni
.NET Microsoft.Azure.Data.SchemaRegistry.ApacheAvro Esempi di .NET
Giava azure-data-schemaregistry-avro Esempi di Java
Pitone Azure-schemaregistry-avroencoder Esempi per Python
JavaScript @azure/schema-registry-avro esempi diNode.js

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

Limiti

Per i limiti (come il numero di schemi utilizzabili in uno spazio dei nomi) di Event Hubs, vedere Quote e limiti di Event Hubs.

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 degli schemi
Collaboratore Leggere, scrivere ed eliminare i gruppi e gli schemi del registro degli schemi
Lettore del Registro schemi Leggere ed elencare i gruppi e gli schemi del registro degli schemi
Collaboratore del Registro degli Schemi Leggere, scrivere ed eliminare i gruppi e gli schemi del registro degli schemi

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.