Schemaregister in Azure Event Hubs
SchemaRegister is van cruciaal belang bij losjes gekoppelde en gebeurtenisstreamingwerkstromen voor het onderhouden van gegevensconsistentie, het vereenvoudigen van de evolutie van het schema, het verbeteren van de interoperabiliteit en het verminderen van de ontwikkelingsinspanningen. Het zorgt voor zeer betrouwbare gegevensverwerking en governance met weinig operationele overhead in grote gedistribueerde organisaties met een gecentraliseerde opslagplaats voor schema's.
Schema Registry in Azure Event Hubs voldoet aan meerdere rollen in schemagestuurde scenario's voor gebeurtenisstreaming -
- Biedt een opslagplaats waarin meerdere schema's kunnen worden geregistreerd, beheerd en ontwikkeld.
- Ontwikkeling van beheerde schema's met meerdere compatibiliteitsregels.
- Voert gegevensvalidatie uit voor alle geschematiseerde gegevens.
- Biedt bibliotheken aan de clientzijde (serializers en deserialisaties) voor producenten en consumenten.
- Verbetert de efficiëntie van de netwerkdoorvoer door schema-id door te geven in plaats van de schemadefinitie voor elke nettolading.
Notitie
Schemaregister wordt ondersteund in de lagen Standard, Premium en Dedicated.
Schemaregisteronderdelen
Het schemaregister bevindt zich in de context van de Event Hubs-naamruimte, maar kan worden gebruikt met alle Azure Messaging-service of een andere bericht- of gebeurtenisbroker. Het bestaat uit meerdere schemagroepen die fungeren als een logische groepering van schema's en kunnen onafhankelijk van andere schemagroepen worden beheerd.
Schema's
In elk losjes gekoppeld systeem communiceren er meerdere toepassingen met elkaar, voornamelijk via gegevens. Schema's fungeren als een declaratieve manier om de structuur van de gegevens te definiëren, zodat het contract tussen deze producent- en consumententoepassingen goed is gedefinieerd, waardoor betrouwbare verwerking op schaal wordt gegarandeerd.
Een schemadefinitie bevat -
- Velden - naam van de afzonderlijke gegevenselementen (dat wil gezegd, voor- en achternaam, boektitel, adres).
- Gegevenstypen: het soort gegevens dat in elk veld kan worden opgeslagen (bijvoorbeeld tekenreeks, datum/tijd, matrix).
- Structuur: de organisatie van de verschillende velden (dat wil gezegd, geneste structuren of matrices).
Schema's definiëren het contract tussen producenten en consumenten. Met een schema dat is gedefinieerd in een Event Hubs-schemaregister kan het contract worden beheerd buiten gebeurtenisgegevens, waardoor de overhead van de nettolading teniet wordt gedaan.
Schema-indelingen
Schema-indelingen worden gebruikt om de manier te bepalen waarop een schema is gestructureerd en gedefinieerd, waarbij elke indeling specifieke richtlijnen en syntaxis bevat voor het definiëren van de structuur van de gebeurtenissen die worden gebruikt voor gebeurtenisstreaming.
Avro-schema
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 Event Hubs Schema Registry:
- Schemaregister gebruiken met Kafka en Avro
- Schemaregister gebruiken met Event Hubs .NET SDK (AMQP) en Avro.
JSON-schema
JSON-schema is een gestandaardiseerde manier om de structuur en gegevenstypen van de gebeurtenissen te definiëren. JSON-schema maakt het vertrouwen en betrouwbare gebruik van de JSON-gegevensindeling in gebeurtenisstreaming mogelijk.
Zie voor meer informatie over het gebruik van JSON-schema-indeling met Event Hubs Schema Registry:
Protobuf
Protocolbuffers 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 op basis van uw bedrijfscriteria. Een schemagroep bevat
- meerdere schemadefinitie,
- meerdere versies van een specifiek schema en
- metagegevens met betrekking tot het schematype en de compatibiliteit voor alle schema's in de groep.
Een schemagroepen kunnen worden beschouwd als een subset van het schemaregister, afgestemd op een bepaalde toepassing of organisatie-eenheid, met een afzonderlijk autorisatiemodel. Deze extra beveiligingsgrens zorgt ervoor dat in het gedeelde servicesmodel, metagegevens en handelsgeheimen niet worden gelekt. Ook kunnen eigenaren van apps op deze manier schema's beheren, onafhankelijk van andere apps die dezelfde naamruimte delen.
Ontwikkeling van schema's
Schema's moeten zich ontwikkelen met de bedrijfsvereiste van producenten en consumenten. Azure 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 en wordt alleen een nieuwe versie van het schema gemaakt.
Notitie
Schemaontwikkeling wordt alleen ondersteund voor avro-schema-indeling.
Azure Schema Registry voor Event Hubs biedt ondersteuning voor de volgende compatibiliteitsmodi.
Compatibiliteit met eerdere versies
Met de compatibiliteitsmodus voor eerdere versies kan de consumentencode een nieuwe versie van het schema gebruiken, maar kan berichten met een oude versie van het schema worden verwerkt. Wanneer u de achterwaartse compatibiliteitsmodus in een schemagroep gebruikt, kunnen de volgende wijzigingen in een schema worden aangebracht.
- Velden verwijderen.
- Voeg optionele velden toe.
Compatibiliteit doorsturen
Compatibiliteit doorsturen stelt de consumentencode in staat om een oude versie van het schema te gebruiken, maar kan berichten lezen met het nieuwe schema. Met de compatibiliteitsmodus voor doorsturen kunnen de volgende wijzigingen worden aangebracht in een schema.
- Velden toevoegen
- Optionele velden verwijderen
Geen compatibiliteit
Wanneer de None
compatibiliteitsmodus wordt gebruikt, voert het 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, die u kunt gebruiken om nettoladingen met schemaregisterschema-id's en avro-gecodeerde gegevens te serialiseren en deserialiseren.
- .NET: Microsoft.Azure.Data.SchemaRegistry.ApacheAvro
- Java: azure-data-schemaregistry-avro
- Python: azure-schemaregistry-avroserializer
- JavaScript - @azure/schema-registry-avro
- Apache Kafka: voer met Kafka geïntegreerde Apache Avro-programma's voor serialisatie en deserialisatie uit die worden ondersteund door het Azure-schemaregister. Het Apache Kafka-clientserialisatieprogramma van de Java-client voor het Azure-schemaregister kan in elk Apache Kafka-scenario en met elke Apache Kafka®-implementatie of cloudservice worden gebruikt.
- Azure CLI : zie Een schema toevoegen aan een schemagroep met cli voor een voorbeeld van het toevoegen van een schema aan een schemagroep met behulp van 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 (bijvoorbeeld: aantal schemagroepen in een naamruimte) van Event Hubs.
Op rollen gebaseerd toegangsbeheer van Azure
Volg deze stappen om programmatisch toegang te krijgen tot een schemaregister:
- Uw toepassing registreren in Microsoft Entra-id
- Voeg de beveiligingsprincipaal van de toepassing toe aan een van de volgende Azure RBAC-rollen (op rollen gebaseerd toegangsbeheer) 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 weergeven. |
Inzender schemaregister | Schemaregistergroepen en schema's lezen, schrijven en verwijderen. |
Zie Een app registreren bij Microsoft Entra ID voor instructies voor het registreren van een toepassing met behulp van Azure Portal. Noteer de client-id (app-id), tenant-id en het geheim die in de code moeten worden gebruikt.
Volgende stappen
- 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 van de Avro-clientbibliotheek voor schemaregisters.