Freigeben über


Azure-Schemaregistrierung in Azure Event Hubs

Die Schemaregistrierung in Azure Event Hubs bietet viele Vorteile. Schemaregistrierung hilft bei der Aufrechterhaltung der Datenkonsistenz, vereinfacht die Schemaentwicklung, verbessert die Interoperabilität und reduziert den Entwicklungsaufwand in lose gekoppelten und ereignisgesteuerten Arbeitsabläufen. Große verteilte Organisationen, die ein zentrales Repository für Schemata verwenden, können Schemaregistrierung nutzen, um eine äußerst zuverlässige Datenverarbeitung und -verwaltung mit geringem betrieblichem Aufwand zu erreichen.

Die Schemaregistrierungen in Azure Event Hubs erfüllt mehrere Rollen in schemagesteuerten Ereignisstreamingszenarien:

  • Stellt ein Repository bereit, in dem mehrere Schemas registriert, verwaltet und weiterentwickelt werden können
  • Verwaltet Schemaentwicklung mit mehreren Kompatibilitätsregeln
  • Führt die Datenüberprüfung für alle schematisierten Daten aus
  • Stellt clientseitige Bibliotheken (Serialisierer und Deserialisierer) für Producer und Consumer bereit
  • Verbessert die Effizienz des Netzwerkdurchsatzes, indem die Schema-ID anstelle der Schemadefinition für jede Nutzlast übergeben wird

Schemaregistrierung in Azure Event Hubs werden in den Tarifen „Standard”, „Premium” und „Dedicated” unterstützt.

Komponenten der Schemaregistrierung

Schemaregistrierung ist Teil des Event Hubs-Namespace, kann aber auch mit anderen Nachrichten- oder Ereignisbrokern verwendet werden, einschließlich Azure-Messaging-Diensten. Sie umfasst mehrere Schemagruppen, die als logische Gruppierung von Schemas fungieren und unabhängig von anderen Schemagruppen verwaltet werden können.

Das Diagramm, das die Komponenten der Schemaregistrierung in Azure Event Hubs anzeigt.

Schemas

In jedem lose gekoppelten System kommunizieren mehrere Anwendungen, hauptsächlich über Daten. Schemas definieren die Struktur der Daten deklarativ. Daher ist der Vertrag zwischen Produzenten- und Verbraucheranwendungen gut definiert und gewährleistet eine zuverlässige Verarbeitung im Großen und Umfang.

Eine Schemadefinition umfasst:

  • Felder: Einzelne Datenelemente wie Name, Buchtitel oder Adresse.
  • Datentypen: Der Datentyp, der gespeichert werden kann, z. B. Zeichenfolge, Datum-Uhrzeit oder Array.
  • Struktur: Wie die Felder organisiert werden, z. B. geschachtelte Strukturen oder Arrays.

Schemas definieren den Vertrag zwischen Producern und Consumern. Ein Schema, das in einer Event Hubs-Schemaregistrierung definiert ist, erleichtert die Verwaltung des Vertrags außerhalb der Ereignisdaten und entfernt so den Nutzlastmehraufwand.

Schemaformate

Schemaformate werden verwendet, um die Art zu bestimmen, in der ein Schema strukturiert und definiert wird. Jedes Format beschreibt spezifische Richtlinien und Syntax zum Definieren der Struktur der Ereignisse, die für das Ereignisstreaming verwendet werden.

Avro-Schema

Apache Avro ist ein beliebtes Datenserialisierungssystem, das ein kompaktes Binärformat verwendet und Funktionen zur Schemaentwicklung bietet.

Weitere Informationen zur Verwendung des Avro-Schemaformats mit der Event Hubs-Schemaregistrierung finden Sie unter:

JSON-Schema

Ein JSON-Schema (JavaScript Object Notation) ist eine standardisierte Methode zum Definieren der Struktur und Datentypen der Ereignisse. Ein JSON-Schema ermöglicht die sichere und zuverlässige Verwendung des JSON-Datenformats beim Ereignisstreaming.

Weitere Informationen zur Verwendung des JSON-Schemaformats mit einer Event Hubs-Schemaregistrierung finden Sie unter Verwenden einer Schemaregistrierung mit Kafka- und JSON-Schema.

Protokollpuffer

Protokollpuffer (Protobuf) sind ein sprachneutraler, plattformneutraler, erweiterbarer Mechanismus zum Serialisieren strukturierter Daten. Sie werden verwendet, um Datenstrukturen effizient zu definieren und in ein kompaktes Binärformat zu serialisieren.

Schemagruppen

Schemagruppen sind logische Gruppen ähnlicher Schemas, die nach Ihren Geschäftskriterien organisiert sind. Eine Schemagruppe umfasst:

  • Mehrere Schemadefinitionen.
  • Mehrere Versionen eines bestimmten Schemas.
  • Metadaten bezüglich des Schematyps und der Kompatibilität für alle Schemas in der Gruppe.

Sie können sich eine Schemagruppe als Teilmenge der Schemaregistrierung vorstellen, die an einer bestimmten Anwendung oder Organisationseinheit ausgerichtet ist, mit einem separaten Autorisierungsmodell. Diese zusätzliche Sicherheitsgrenze trägt dazu bei, dass Metadaten und Geschäftsgeheimnisse im Modell für gemeinsame Dienste nicht durchsickern. Außerdem wird es Anwendungsbesitzern ermöglicht, Schemas unabhängig von anderen Anwendungen zu verwalten, die denselben Namespace verwenden.

Schemaentwicklung

Schemas müssen sich mit den geschäftlichen Anforderungen von Producern und Consumern weiterentwickeln. Die Schemaregistrierung unterstützt die Schemaentwicklung, indem Kompatibilitätsmodi auf Schemagruppenebene eingeführt werden. Wenn Sie eine Schemagruppe erstellen, können Sie den Kompatibilitätsmodus der Schemas angeben, die Sie in diese Schemagruppe einfügen. Wenn Sie ein Schema aktualisieren, muss die Änderung mit dem zugewiesenen Kompatibilitätsmodus übereinstimmen, damit eine neue Version des Schemas erstellt werden kann.

Die Schemaentwicklung wird für das Avro-Schemaformat unterstützt.

Die Schemaregistrierung wird in den folgenden Kompatibilitätsmodi unterstützt.

Abwärtskompatibilität

Der Abwärtskompatibilitätsmodus ermöglicht die Verwendung einer neuen Version des Schemas im Consumercode. Es können auch Nachrichten mit einer alten Version des Schemas verarbeitet werden. Der Rückwärtskompatibilitätsmodus ermöglicht die folgenden Änderungen an einem Schema:

  • Felder löschen
  • Hinzufügen optionaler Felder

Aufwärtskompatibilität

Die Vorwärtskompatibilität ermöglicht es dem Consumercode, eine alte Schemaversion zu verwenden und Nachrichten mit dem neuen Schema zu lesen. Der Vorwärtskompatibilitätsmodus ermöglicht die folgenden Änderungen an einem Schema:

  • Hinzufügen von Feldern
  • Löschen optionaler Felder

Keine Kompatibilität

Wenn der Kompatibilitätsmodus None verwendet wird, werden von der Schemaregistrierung keine Kompatibilitätsprüfungen durchgeführt, wenn Sie Schemas aktualisieren.

Client-SDKs

Sie können eine der folgenden Bibliotheken verwenden, um einen Avro-Serialisierer einzuschließen. Sie können Avro-Serialisierer verwenden, um Nutzlasten zu serialisieren und deserialisieren, die Schemabezeichner für die Schemaregistrierung und Avro-codierte Daten enthalten:

Programmiersprache SDK Beispiele
.NET Microsoft.Azure.Data.SchemaRegistry.ApacheAvro .NET-Beispiele
Java azure-data-schemaregistry-avro Beispiele für Java
Python azure-schemaregistry-avroserializer Python-Beispiele
JavaScript @azure/schema-registry-avro NodeJS-Beispiele

Darüber hinaus stehen die folgenden Bibliotheken auch basierend auf Ihren Workloads zur Verfügung.

Grenzwerte

Grenzwerte (z. B. die Anzahl der Schemas, die Sie in einem Namespace verwenden können) von Event Hubs finden Sie unter Event Hubs-Kontingente und -Beschränkungen.

Rollenbasierte Zugriffssteuerung (Azure)

Führen Sie die folgenden Schritte aus, um programmgesteuert auf eine Schemaregistrierung zuzugreifen:

  1. Registrieren Sie Ihre Anwendung in Microsoft Entra ID.
  2. Fügen Sie den Sicherheitsprinzipal der Anwendung zu einer der folgenden rollenbasierten Azure-Zugriffssteuerungsrollen (RBAC) auf Namespaceebene hinzu.
Role Beschreibung
Besitzer Lesen, Schreiben und Löschen von Schemaregistrierungsgruppen und Schemas
Mitwirkender Lesen, Schreiben und Löschen von Schemaregistrierungsgruppen und Schemas
Schemaregistrierungsleser Lesen und Auflisten von Registrierungsgruppen und Schemas
Mitwirkender der Schemaregistrierung Lesen, Schreiben und Löschen von Schemaregistrierungsgruppen und Schemas

Informationen zum Erstellen und Registrieren einer Anwendung mithilfe des Azure-Portals finden Sie unter Registrieren einer Anwendung mit Microsoft Entra ID. Sie benötigen die Client-ID (Anwendungs-ID), die Mandanten-ID und den geheimen Schlüssel, der im Code verwendet werden soll.