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.
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:
- Schemaregister gebruiken met Kafka en Avro
- Schemaregister gebruiken met Event Hubs, .NET, een SDK (AMQP) en Avro
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.
- Apache Kafka: Voer met Kafka geïntegreerde Avro-serializers en deserializers uit die worden ondersteund door schemaregister. De Apache Kafka-clientserialisatiefunctie van de Java-client voor Schema Registry kan worden gebruikt in elk Apache Kafka-scenario en met elke implementatie of cloudservice op basis van Apache Kafka.
- Azure CLI: Zie Een schema toevoegen aan een schemagroep met behulp van de Azure CLI voor een voorbeeld van het toevoegen van een schema aan een schemagroep met behulp van de Azure CLI.
- PowerShell: Zie Een schema toevoegen aan een schemagroep met behulp van PowerShell voor een voorbeeld van het toevoegen van een schema aan een schemagroep met behulp van PowerShell.
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:
- Registreer uw toepassing in Microsoft Entra ID.
- 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.
Gerelateerde inhoud
- Zie Een Event Hubs-schemaregister maken met behulp van Azure Portal voor meer informatie over het maken van een schemaregister met behulp van Azure Portal.
- Zie de volgende voorbeelden uit de Avro-clientbibliotheek voor schemaregister: