Schemaregister i Azure Event Hubs
Schema registry är avgörande i löst kopplade arbetsflöden och händelseströmningsarbetsflöden för att upprätthålla datakonsekvens, förenkla schemautvecklingen, förbättra samverkan och minska utvecklingsinsatsen. Det säkerställer mycket tillförlitlig databehandling och styrning med lite driftkostnader i stora distribuerade organisationer med en central lagringsplats för scheman.
Schema registry i Azure Event Hubs uppfyller flera roller i schemadrivna scenarier för händelseströmning –
- Tillhandahåller en lagringsplats där flera scheman kan registreras, hanteras och utvecklas.
- Hanterad schemautveckling med flera kompatibilitetsregler.
- Utför dataverifiering för alla schematiserade data.
- Tillhandahåller bibliotek på klientsidan (serialiserare och deserialiserare) för producenter och konsumenter.
- Förbättrar effektiviteten i nätverkets dataflöde genom att skicka schema-ID i stället för schemadefinitionen för varje nyttolast.
Kommentar
Schemaregistret stöds på nivåerna Standard, Premium och Dedicated.
Schemaregisterkomponenter
Schemaregistret finns i kontexten för Event Hubs-namnområdet, men det kan användas med alla Azure-meddelandetjänster eller annan meddelande- eller händelsekoordinator. Den består av flera schemagrupper som fungerar som en logisk gruppering av scheman och kan hanteras oberoende av andra schemagrupper.
Scheman
I alla löst kopplade system finns det flera program som kommunicerar med varandra, främst via data. Scheman fungerar som ett deklarativt sätt att definiera datastrukturen så att kontraktet mellan dessa producent- och konsumentprogram är väldefinierat, vilket säkerställer tillförlitlig bearbetning i stor skala.
En schemadefinition innehåller -
- Fält – namnet på de enskilda dataelementen (det vill: för-/efternamn, bokrubrik, adress).
- Datatyper – den typ av data som kan lagras i varje fält (till exempel sträng, datum-tid, matris).
- Struktur – organisationen av de olika fälten (dvs. kapslade strukturer eller matriser).
Scheman definierar kontraktet mellan producenter och konsumenter. Ett schema som definieras i ett Event Hubs-schemaregister hjälper till att hantera kontraktet utanför händelsedata, vilket tar bort nyttolasten.
Schemaformat
Schemaformat används för att fastställa hur ett schema är strukturerat och definierat, med varje format som beskriver specifika riktlinjer och syntax för att definiera strukturen för de händelser som ska användas för händelseströmning.
Avro-schema
Avro är ett populärt data serialiseringssystem som använder ett kompakt binärt format och tillhandahåller funktioner för schemautveckling.
Mer information om hur du använder Avro-schemaformat med Event Hubs Schema Registry finns i:
- Så här använder du schemaregister med Kafka och Avro
- Så här använder du Schema-registret med Event Hubs .NET SDK (AMQP) och Avro.
JSON-schema
JSON-schema är ett standardiserat sätt att definiera händelsernas struktur och datatyper. JSON-schema möjliggör säker och tillförlitlig användning av JSON-dataformatet vid händelseströmning.
Mer information om hur du använder JSON-schemaformat med Event Hubs Schema Registry finns i:
Protobuf
Protokollbuffertar är en språkneutral, plattformsneutral, utökningsbar mekanism för serialisering av strukturerade data. Den används för att effektivt definiera datastrukturer och serialisera dem till ett kompakt binärt format.
Schemagrupper
Schemagrupper är logiska grupper med liknande scheman baserat på dina affärsvillkor. En schemagrupp innehåller
- definition av flera scheman,
- flera versioner av ett specifikt schema och
- metadata om schematyp och kompatibilitet för alla scheman i gruppen.
Du kan betrakta schemagrupper som en delmängd av schemaregistret, i linje med ett visst program eller en viss organisationsenhet, med en separat auktoriseringsmodell. Den här extra säkerhetsgränsen säkerställer att metadata och affärshemligheter inte läcker i modellen för delade tjänster. Det gör det också möjligt för programägare att hantera scheman oberoende av andra program som delar samma namnområde.
Schemautveckling
Scheman måste utvecklas med affärskrav för producenter och konsumenter. Azure Schema Registry stöder schemautveckling genom att införa kompatibilitetslägen på schemagruppsnivå. När du skapar en schemagrupp kan du ange kompatibilitetsläget för de scheman som du inkluderar i den schemagruppen. När du uppdaterar ett schema ska ändringen följa det tilldelade kompatibilitetsläget och sedan bara skapa en ny version av schemat.
Kommentar
Schemautveckling stöds endast för Avro-schemaformat.
Azure Schema Registry for Event Hubs stöder följande kompatibilitetslägen.
Bakåtkompatibilitet
Bakåtkompatibilitetsläget gör att konsumentkoden kan använda en ny version av schemat, men det kan bearbeta meddelanden med den gamla versionen av schemat. När du använder bakåtkompatibilitetsläge i en schemagrupp kan följande ändringar göras i ett schema.
- Ta bort fält.
- Lägg till valfria fält.
Vidarebefordra kompatibilitet
Med vidarebefordran av kompatibilitet kan konsumentkoden använda en gammal version av schemat, men den kan läsa meddelanden med det nya schemat. Med läget Vidarebefordra kompatibilitet kan följande ändringar göras i ett schema.
- Lägg till fält
- Ta bort valfria fält
Ingen kompatibilitet
När kompatibilitetsläget None
används gör schemaregistret inga kompatibilitetskontroller när du uppdaterar scheman.
Klient-SDK: er
Du kan använda något av följande bibliotek för att inkludera en Avro-serialiserare som du kan använda för att serialisera och deserialisera nyttolaster som innehåller Schema Registry-schemaidentifierare och Avro-kodade data.
- .NET – Microsoft.Azure.Data.SchemaRegistry.ApacheAvro
- Java – azure-data-schemaregistry-avro
- Python – azure-schemaregistry-avroserializer
- JavaScript - @azure/schema-registry-avro
- Apache Kafka – Kör Kafka-integrerade Apache Avro-serialiserare och deserializers som backas upp av Azure Schema Registry. Java-klientens Apache Kafka-klient serialiserare för Azure Schema Registry kan användas i alla Apache Kafka-scenarion och med alla Apache Kafka-baserade® distributioner eller molntjänster.
- Azure CLI – Ett exempel på hur du lägger till ett schema i en schemagrupp med CLI finns i Lägga till ett schema i en schemagrupp med CLI.
- PowerShell – Ett exempel på hur du lägger till ett schema i en schemagrupp med hjälp av PowerShell finns i Lägga till ett schema i en schemagrupp med hjälp av PowerShell.
Gränser
Begränsningar (till exempel antal schemagrupper i ett namnområde) för Event Hubs finns i kvoter och gränser för Event Hubs.
Azure rollbaserad åtkomstkontroll
Följ dessa steg för att komma åt ett schemaregister programmatiskt:
- Registrera ditt program i Microsoft Entra-ID
- Lägg till programmets säkerhetsobjekt i någon av följande Roller för Azure RBAC (rollbaserad åtkomstkontroll) på namnområdesnivå .
Roll | Beskrivning |
---|---|
Ägare | Läsa, skriva och ta bort schemaregistergrupper och scheman. |
Deltagare | Läsa, skriva och ta bort schemaregistergrupper och scheman. |
Schema Registry Reader | Läsa och lista schemaregistergrupper och scheman. |
Schemaregisterdeltagare | Läsa, skriva och ta bort schemaregistergrupper och scheman. |
Anvisningar om hur du skapar registrering av ett program med hjälp av Azure Portal finns i Registrera en app med Microsoft Entra-ID. Anteckna klient-ID :t (program-ID), klient-ID och hemligheten som ska användas i koden.
Nästa steg
- Information om hur du skapar ett schemaregister med hjälp av Azure Portal finns i Skapa ett Event Hubs-schemaregister med hjälp av Azure Portal.
- Se följande Schema Registry Avro-klientbiblioteksexempel .