Delen via


Schemaregister in Azure Event Hubs

Schema Registry in Azure Event Hubs heeft veel voordelen. Schema Registry helpt bij het onderhouden van gegevensconsistentie, het vereenvoudigen van de ontwikkeling van het schema, het verbeteren van de interoperabiliteit en het verminderen van ontwikkelingsinspanningen in losjes gekoppelde en gebeurtenisstreamingwerkstromen. Grote gedistribueerde organisaties die gebruikmaken van een gecentraliseerde opslagplaats voor schema's kunnen Schema Registry gebruiken om zeer betrouwbare gegevensverwerking en governance te bereiken met weinig operationele overhead.

Schemaregisters in Azure Event Hubs voldoen aan veel rollen in schemagestuurde scenario's voor gebeurtenisstreaming:

  • Een opslagplaats bieden waarin meerdere schema's kunnen worden geregistreerd, beheerd en ontwikkeld
  • Schemaontwikkeling beheren met meerdere compatibiliteitsregels
  • Gegevensvalidatie uitvoeren voor alle geschematiseerde gegevens
  • Geef bibliotheken aan de clientzijde (serializers en deserializers) op voor producenten en consumenten
  • Verbeter de efficiëntie van de netwerkdoorvoer door de schema-id door te geven in plaats van de schemadefinitie voor elke nettolading

Schemaregisters in Azure Event Hubs worden ondersteund in Standard-, Premium- en Dedicated-lagen.

Schemaregisteronderdelen

Het schemaregister maakt deel uit van de Event Hubs-naamruimte, maar kan ook worden gebruikt met andere bericht- of gebeurtenisbrokers, waaronder Azure Messaging-services. Het bestaat uit meerdere schemagroepen, die fungeren als een logische groepering van schema's en onafhankelijk van andere schemagroepen kunnen worden beheerd.

Diagram met de onderdelen van een schemaregister in Azure Event Hubs.

Schema's

In elk losjes gekoppeld systeem communiceren meerdere toepassingen, voornamelijk via gegevens. Schema's definiëren de structuur van de gegevens op een declaratieve manier. Als gevolg hiervan is het contract tussen producent- en consumententoepassingen goed gedefinieerd, waardoor betrouwbare verwerking op schaal wordt gewaarborgd.

Een schemadefinitie bevat:

  • Velden: Afzonderlijke gegevenselementen, zoals naam, boektitel of adres.
  • Gegevenstypen: het type gegevens dat kan worden opgeslagen, zoals tekenreeks, datum/tijd of matrix.
  • Structuur: Hoe de velden zijn ingedeeld, zoals geneste structuren of matrices.

Schema's definiëren het contract tussen producenten en consumenten. Een schema dat is gedefinieerd in een Event Hubs-schemaregister helpt het contract buiten gebeurtenisgegevens te beheren, waardoor de overhead van de nettolading wordt verwijderd.

Schema-indelingen

Schema-indelingen worden gebruikt om de manier te bepalen waarop een schema is gestructureerd en gedefinieerd. Elke indeling bevat een overzicht van specifieke richtlijnen en syntaxis voor het definiëren van de structuur van de gebeurtenissen die worden gebruikt voor gebeurtenisstreaming.

Avro-schema

Apache Avro is een populair systeem voor gegevensserialisatie dat gebruikmaakt van een compacte binaire indeling en die mogelijkheden biedt voor de ontwikkeling van schema's.

Zie voor meer informatie over het gebruik van avro-schema-indeling met een Event Hubs-schemaregister:

JSON-schema

Een JSON-schema (JavaScript Object Notation) is een gestandaardiseerde manier om de structuur en gegevenstypen van de gebeurtenissen te definiëren. Een JSON-schema maakt het vertrouwen en betrouwbaar gebruik van de JSON-gegevensindeling in gebeurtenisstreaming mogelijk.

Zie Een schemaregister gebruiken met Kafka en JSON-schema voor meer informatie over het gebruik van de JSON-schemaindeling met een Event Hubs-schemaregister.

Protocol Buffers

Protocolbuffers (Protobuf) is een taalneutraal, platformneutraal, uitbreidbaar mechanisme voor het serialiseren van gestructureerde gegevens. Het wordt gebruikt voor het efficiënt definiëren van gegevensstructuren en het serialiseren ervan in een compacte binaire indeling.

Schemagroepen

Schemagroepen zijn logische groepen met vergelijkbare schema's die zijn ingedeeld op basis van uw bedrijfscriteria. Een schemagroep bevat:

  • Meerdere schemadefinities.
  • Meerdere versies van een specifiek schema.
  • Metagegevens met betrekking tot het schematype en de compatibiliteit voor alle schema's in de groep.

U kunt een schemagroep beschouwen als een subset van het schemaregister dat overeenkomt met een bepaalde toepassing of organisatie-eenheid, met een afzonderlijk autorisatiemodel. Deze extra beveiligingsgrens zorgt ervoor dat metagegevens en handelsgeheimen niet worden gelekt in het model voor gedeelde services. Hiermee kunnen eigenaren van toepassingen ook schema's onafhankelijk van andere toepassingen beheren die dezelfde naamruimte delen.

Ontwikkeling van schema's

Schema's moeten zich ontwikkelen met de bedrijfsvereiste van producenten en consumenten. Schema Registry ondersteunt de ontwikkeling van schema's door compatibiliteitsmodi op schemagroepniveau te introduceren. Wanneer u een schemagroep maakt, kunt u de compatibiliteitsmodus opgeven van de schema's die u in die schemagroep opneemt. Wanneer u een schema bijwerkt, moet de wijziging voldoen aan de toegewezen compatibiliteitsmodus, zodat er een nieuwe versie van het schema kan worden gemaakt.

Schemaontwikkeling wordt alleen ondersteund voor avro-schema-indeling.

Schemaregister wordt ondersteund in de volgende compatibiliteitsmodi.

Compatibiliteit met eerdere versies

Met de compatibiliteitsmodus voor eerdere versies kan de consumentencode een nieuwe versie van een schema gebruiken en berichten verwerken met een oude versie van het schema. In de compatibiliteitsmodus met eerdere versies kunnen de volgende wijzigingen in een schema worden aangebracht:

  • Velden verwijderen
  • Optionele velden toevoegen

Compatibiliteit doorsturen

Met compatibiliteit doorsturen kan de consumentencode een oude schemaversie gebruiken en berichten lezen met het nieuwe schema. Met de compatibiliteitsmodus voor doorsturen kunnen de volgende wijzigingen in een schema worden aangebracht:

  • Velden toevoegen
  • Optionele velden verwijderen

Geen compatibiliteit

Wanneer de None compatibiliteitsmodus wordt gebruikt, voert schemaregister geen compatibiliteitscontroles uit wanneer u schema's bijwerkt.

Client-SDK 's

U kunt een van de volgende bibliotheken gebruiken om een Avro-serializer op te nemen. U kunt Avro-serializers gebruiken om nettoladingen die schema-id's bevatten voor het schemaregister en avro-gecodeerde gegevens te serialiseren en deserialiseren:

Programmeertaal SDK Voorbeelden
.NET Microsoft.Azure.Data.SchemaRegistry.ApacheAvro .NET-voorbeelden
Java azure-data-schemaregistry-avro Java-voorbeelden
Python azure-schemaregistry-avroserializer Python-voorbeelden
JavaScript @azure/schema-registry-avro NodeJS-voorbeelden

Daarnaast zijn de onderstaande bibliotheken ook beschikbaar op basis van uw workloads.

Limieten

Zie Event Hubs-quota en -limieten voor limieten (zoals het aantal schema's dat u in een naamruimte kunt gebruiken) van Event Hubs.

Op rollen gebaseerd toegangsbeheer van Azure

Volg deze stappen om programmatisch toegang te krijgen tot een schemaregister:

  1. Registreer uw toepassing in Microsoft Entra ID.
  2. Voeg de beveiligingsprincipaal van de toepassing toe aan een van de volgende RBAC-rollen (op rollen gebaseerd toegangsbeheer) van Azure op naamruimteniveau.
Rol Beschrijving
Eigenaar Schemaregistergroepen en schema's lezen, schrijven en verwijderen
Inzender Schemaregistergroepen en schema's lezen, schrijven en verwijderen
Schemaregisterlezer Schemaregistergroepen en schema's lezen en vermelden
Inzender schemaregister Schemaregistergroepen en schema's lezen, schrijven en verwijderen

Zie Een toepassing registreren bij Microsoft Entra ID voor meer informatie over het maken en registreren van een toepassing met behulp van Azure Portal. U hebt de client-id (toepassings-id), de tenant-id en het geheim nodig om in de code te gebruiken.