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.
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:
- Verwenden der Schemaregistrierung mit Kafka und Avro
- Verwenden der Schemaregistrierung mit Event Hubs .NET-SDK (AMQP) und Avro
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.
- Apache Kafka: Führen Sie in Kafka integrierte Avro-Serialisierungs- und Deserialisierungsmodule aus, die von der Schemaregistrierung unterstützt werden. Das Apache Kafka-Clientserialisierungsmodul des Java-Clients für Schemaregistrierung kann in jedem Apache Kafka-Szenario und mit einer beliebigen Apache Kafka-basierten Bereitstellung oder einem Clouddienst verwendet werden.
- Azure CLI: Ein Beispiel zum Hinzufügen eines Schemas zu einer Schemagruppe mithilfe der Azure CLI finden Sie unter Hinzufügen eines Schemas zu einer Schemagruppe mithilfe der Azure CLI-.
- PowerShell: Ein Beispiel zum Hinzufügen eines Schemas zu einer Schemagruppe mit PowerShell finden Sie unter Hinzufügen eines Schemas zu einer Schemagruppe mit PowerShell.
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:
- Registrieren Sie Ihre Anwendung in Microsoft Entra ID.
- 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.
Zugehöriger Inhalt
- Informationen zum Erstellen einer Schemaregistrierung mit dem Azure-Portal finden Sie unter Erstellen einer Event Hubs-Schemaregistrierung mithilfe des Azure-Portals.
- Sehen Sie sich die folgenden Beispiele aus der SchemaRegistrierungs-Avro-Clientbibliothek an: