Azure-Schemaregistrierung in Azure Event Hubs
Die Schemaregistrierung ist für lose gekoppelte und Ereignisstreaming-Workflows entscheidend, um die Datenkonsistenz aufrechtzuerhalten, die Schemaentwicklung zu vereinfachen, die Interoperabilität zu verbessern und den Entwicklungsaufwand zu verringern. Sie stellt eine sehr zuverlässige Datenverarbeitung und Governance mit geringem Betriebsaufwand in großen verteilten Organisationen mit einem zentralen Repository für Schemas sicher.
Die Schemaregistrierung 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.
- Verwaltete 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.
Hinweis
Schemaregistrierung wird in den Tarifen „Standard”, „Premium” und „Dedicated” unterstützt.
Komponenten der Schemaregistrierung
Die Schemaregistrierung befindet sich im Kontext des Event Hubs-Namespace, kann jedoch mit allen Azure-Messaging-Diensten oder anderen Nachrichten- oder Ereignisbrokern verwendet werden. 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 gibt es mehrere Anwendungen, die miteinander kommunizieren, hauptsächlich über Daten. Schemas dienen als deklarative Methode, um die Struktur der Daten zu definieren, damit der Vertrag zwischen diesen Producer- und Consumeranwendungen gut definiert ist und eine zuverlässige Verarbeitung im großen Stil gewährleistet.
Eine Schemadefinition umfasst:
- Felder: Name der einzelnen Datenelemente (d. h. Vorname/Nachname, Buchtitel, Adresse).
- Datentypen: die Art der Daten, die in jedem Feld gespeichert werden können (z. B. Zeichenfolge, Datum-Uhrzeit, Array).
- Struktur: die Organisation der verschiedenen Felder (d. h. 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 und Weise zu bestimmen, in der ein Schema strukturiert und definiert ist, wobei jedes Format spezifische Richtlinien und Syntax zum Definieren der Struktur der Ereignisse festlegt, die für das Ereignisstreaming verwendet werden.
Avro-Schema
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
Das JSON-Schema ist eine standardisierte Methode zum Definieren der Struktur und Datentypen der Ereignisse. Das JSON-Schema ermöglicht die sichere und zuverlässige Verwendung des JSON-Datenformats beim Ereignisstreaming.
Weitere Informationen zur Verwendung des JSON-Schemaformats mit der Event Hubs-Schemaregistrierung finden Sie unter:
Protobuf
Protokollpuffer 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
Eine Schemagruppe ist eine logische Gruppe ähnlicher Schemas, die auf Ihren Geschäftskriterien basiert. Eine Schemagruppe umfasst
- mehrere Schemadefinitionen,
- mehrere Versionen eines bestimmten Schemas und
- Metadaten bezüglich des Schematyps und der Kompatibilität für alle Schemas in der Gruppe.
Eine Schemagruppe kann als Teilmenge der Schemaregistrierung mit einem separaten Autorisierungsmodell betrachtet werden, die an einer bestimmten Anwendung oder Organisationseinheit ausgerichtet ist. Diese zusätzliche Sicherheitsgrenze stellt sicher, dass im Modell für gemeinsam genutzte Dienste keine Metadaten und Geschäftsgeheimnisse 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 Azure-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, sollte die Änderung dem zugewiesenen Kompatibilitätsmodus entsprechen, und nur dann sollte eine neue Version des Schemas erstellt werden.
Hinweis
Die Schemaentwicklung wird nur für das Avro-Schemaformat unterstützt.
Die Azure-Schemaregistrierung für Event Hubs unterstützt die folgenden Kompatibilitätsmodi.
Abwärtskompatibilität
Der Abwärtskompatibilitätsmodus ermöglicht die Verwendung einer neuen Version des Schemas im Consumercode. Es können aber auch Nachrichten mit einer alten Version des Schemas verarbeitet werden. Wenn Sie den Abwärtskompatibilitätsmodus in einer Schemagruppe verwenden, können die folgenden Änderungen an einem Schema vorgenommen werden.
- Löschen von Feldern
- Hinzufügen optionaler Felder
Vorwärtskompatibilität
Die Vorwärtskompatibilität ermöglicht es, eine alte Version des Schemas im Consumercode zu verwenden. Es können jedoch auch Nachrichten mit dem neuen Schema gelesen werden. 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 ein Avro-Serialisierungsmodul einzubinden, das Sie verwenden können, um Nutzdaten zu serialisieren und zu deserialisieren, die Schemabezeichner der Schemaregistrierung und Avro-codierte Daten enthalten.
- .NET: Microsoft.Azure.Data.SchemaRegistry.ApacheAvro
- Java: azure-data-schemaregistry-avro
- Python: azure-schemaregistry-avroserializer
- JavaScript - @azure/schema-registry-avro
- Apache Kafka: Führen Sie in Kafka integrierte Apache Avro-Serialisierungs- und Deserialisierungsmodule aus, die von der Azure-Schemaregistrierung unterstützt werden. Das Apache Kafka-Clientserialisierungsmodul des Java-Clients für die Azure-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 mit der CLI finden Sie unter Hinzufügen eines Schemas zu einer Schemagruppe mit der 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
Informationen zu Grenzwerten (z. B. zur Anzahl von Schemagruppen in einem Namespace) von Event Hubs finden Sie unter Kontingente und Grenzwerte in Azure Event Hubs.
Rollenbasierte Zugriffssteuerung in Azure
Führen Sie die folgenden Schritte aus, um programmgesteuert auf eine Schemaregistrierung zuzugreifen:
- Registrieren Ihrer Anwendung in Microsoft Entra ID
- Fügen Sie den Sicherheitsprinzipal der Anwendung einer der folgenden Rollen Azure RBAC-Rollen (Azure Role-Based Access Control) 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 Schemaregistrierungsgruppen und Schemas. |
Mitwirkender der Schemaregistrierung | Lesen, Schreiben und Löschen von Schemaregistrierungsgruppen und Schemas. |
Anweisungen zum Erstellen und Registrierung einer Anwendung mit dem Azure-Portal finden Sie unter Registrieren einer App bei Microsoft Entra ID. Notieren Sie sich die Client-ID (Anwendungs-ID), die Mandanten-ID und den geheimen Schlüssel, der im Code verwendet wird.
Nächste Schritte
- Informationen zum Erstellen einer Schemaregistrierung mit dem Azure-Portal finden Sie unter Erstellen einer Event Hubs-Schemaregistrierung mithilfe des Azure-Portals.
- Weitere Informationen finden Sie in den folgenden Beispielen zur Schemaregistrierung der Avro-Clientbibliothek.