Schemaregister i Azure Event Hubs
Schema registry i Azure Event Hubs har många fördelar. Schema Registry hjälper till att upprätthålla datakonsekvens, förenkla schemautvecklingen, förbättra samverkan och minska utvecklingsinsatsen i löst kopplade arbetsflöden och händelseströmningsarbetsflöden. Stora distribuerade organisationer som använder en centraliserad lagringsplats för scheman kan använda Schema Registry för att uppnå mycket tillförlitlig databehandling och styrning med lite driftkostnader.
Schemaregister i Azure Event Hubs uppfyller många roller i schemadrivna scenarier för händelseströmning:
- Ange en lagringsplats där flera scheman kan registreras, hanteras och utvecklas
- Hantera schemautveckling med flera kompatibilitetsregler
- Utföra dataverifiering för alla schematiserade data
- Tillhandahålla bibliotek på klientsidan (serialiserare och deserialiserare) för producenter och konsumenter
- Förbättra effektiviteten i nätverkets dataflöde genom att skicka schema-ID:t i stället för schemadefinitionen för varje nyttolast
Schemaregister i Azure Event Hubs stöds på nivåerna Standard, Premium och Dedicated.
Schemaregisterkomponenter
Schemaregistret är en del av Event Hubs-namnområdet men kan också användas med andra meddelande- eller händelsekoordinatorer, inklusive Azure-meddelandetjänster. 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 kommunicerar flera program, främst via data. Scheman definierar datastrukturen på ett deklarativt sätt. Därför är avtalet mellan producent- och konsumentprogram väldefinierat, vilket säkerställer tillförlitlig bearbetning i stor skala.
En schemadefinition innehåller:
- Fält: Enskilda dataelement som namn, bokrubrik eller adress.
- Datatyper: Den typ av data som kan lagras, t.ex. sträng, datum-tid eller matris.
- Struktur: Hur fälten organiseras, till exempel 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. Varje format beskriver specifika riktlinjer och syntax för att definiera strukturen för de händelser som används för händelseströmning.
Avro-schema
Apache 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 ett Event Hubs-schemaregister finns i:
- Så här använder du Schema Registry med Kafka och Avro
- Så här använder du Schema Registry med Event Hubs, .NET, en SDK (AMQP) och Avro
JSON-schema
Ett JSON-schema (JavaScript Object Notation) är ett standardiserat sätt att definiera händelsernas struktur och datatyper. Ett JSON-schema möjliggör säker och tillförlitlig användning av JSON-dataformatet i händelseströmning.
Mer information om hur du använder JSON-schemaformatet med ett Event Hubs-schemaregister finns i Använda ett schemaregister med Kafka- och JSON-schema.
Protocol Buffers
Protokollbuffertar (Protobuf) ä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 som är ordnade enligt dina affärskriterier. En schemagrupp innehåller:
- Flera schemadefinitioner.
- Flera versioner av ett specifikt schema.
- Metadata om schematyp och kompatibilitet för alla scheman i gruppen.
Du kan se en schemagrupp som en delmängd av schemaregistret som överensstämmer med ett visst program eller en viss organisationsenhet, med en separat auktoriseringsmodell. Den här extra säkerhetsgränsen hjälper till att säkerställa att metadata och affärshemligheter inte läcker ut i modellen för delade tjänster. Det gör också att programägare kan hantera scheman oberoende av andra program som delar samma namnområde.
Schemautveckling
Scheman måste utvecklas med affärskrav för producenter och konsumenter. 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 måste ändringen följa det tilldelade kompatibilitetsläget så att det kan skapa en ny version av schemat.
Schemautveckling stöds endast för Avro-schemaformat.
Schema registry stöds i följande kompatibilitetslägen.
Bakåtkompatibilitet
Med bakåtkompatibilitetsläget kan konsumentkoden använda en ny version av ett schema och bearbeta meddelanden med en gammal version av schemat. Med bakåtkompatibilitetsläget kan följande ändringar göras i ett schema:
- Ta bort fält
- Lägga till valfria fält
Vidarebefordra kompatibilitet
Med vidarebefordran av kompatibilitet kan konsumentkoden använda en gammal schemaversion och 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. Du kan använda Avro-serialiserare för att serialisera och deserialisera nyttolaster som innehåller schemaidentifierare för schemaregistret och Avro-kodade data:
Programmeringsspråk | SDK | Exempel |
---|---|---|
.NET | Microsoft.Azure.Data.SchemaRegistry.ApacheAvro | .NET-exempel |
Java | azure-data-schemaregistry-avro | Java-exempel |
Python | azure-schemaregistry-avroserializer | Python-exempel |
JavaScript | @azure/schema-registry-avro | NodeJS-exempel |
Dessutom är biblioteken nedan också tillgängliga baserat på dina arbetsbelastningar.
- Apache Kafka: Kör Kafka-integrerade Avro-serialiserare och deserializers som backas upp av Schema Registry. Java-klientens Apache Kafka-klient serialiserare för Schema Registry kan användas i alla Apache Kafka-scenarion och med valfri Apache Kafka-baserad distribution eller molntjänst.
- Azure CLI: Ett exempel på hur du lägger till ett schema i en schemagrupp med hjälp av Azure CLI finns i Lägga till ett schema i en schemagrupp med hjälp av Azure 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 (t.ex. antalet scheman som du kan använda 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 Rollbaserade RBAC-roller (Azure 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 |
Information om hur du skapar och registrerar ett program med hjälp av Azure Portal finns i Registrera ett program med Microsoft Entra-ID. Du behöver klient-ID :t (program-ID), klient-ID:t och hemligheten som ska användas i koden.
Relaterat innehåll
- 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 exempel från Schema Registry Avro-klientbiblioteket: