Dela via


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.

Diagram som visar komponenterna i ett schemaregister i Azure Event Hubs.

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:

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.

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:

  1. Registrera ditt program i Microsoft Entra-ID.
  2. 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.