Azure-Schemaregistrierung in Azure Event Hubs
Die Schemaregistrierung in Azure Event Hubs bietet Ihnen ein Repository zum Verwenden und Verwalten von Schemas in schemagesteuerten Ereignisstreamingszenarien.
Hinweis
Die Schema-Registrierung wird im Basic-Tarif nicht unterstützt.
Komponenten der Schemaregistrierung
Ein Event Hubs-Namespace kann Schemagruppen neben Event Hubs (oder Kafka-Themen) hosten. Er hostet eine Schemaregistrierung und kann über mehrere Schemagruppen verfügen. Obwohl die Schemaregistrierung nicht in Azure Event Hubs gehostet wird, kann sie universell mit allen Azure-Messagingdiensten und beliebigen anderen Nachrichten- oder Ereignisbrokern verwendet werden. Jede dieser Schemagruppen ist ein separates sicherbares Repository für einen Satz von Schemas. Gruppen können mit einer bestimmten Anwendung oder einer Organisationseinheit ausgerichtet werden.
Schemagruppen
Eine Schemagruppe ist eine logische Gruppe ähnlicher Schemas, die auf Ihren Geschäftskriterien basiert. Eine Schemagruppe kann mehrere Versionen eines Schemas enthalten. Mithilfe der Einstellung für die Kompatibilitätserzwingung einer Schemagruppe kann sichergestellt werden, dass neuere Schemaversionen abwärtskompatibel sind.
Durch die Sicherheitsgrenze, die durch den Gruppierungsmechanismus festgelegt wird, wird sichergestellt, dass Geschäftsgeheimnisse nicht versehentlich durch Metadaten in Situationen offengelegt werden, in denen der Namespace von mehreren Partnern gemeinsam genutzt wird. Außerdem wird es Anwendungsbesitzern ermöglicht, Schemas unabhängig von anderen Anwendungen zu verwalten, die denselben Namespace verwenden.
Schemas
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. Ein Schema verfügt über einen Namen, einen Typ (Beispiel: Datensatz, Array usw.), einen Kompatibilitätsmodus („None“ [Keiner], „Forward“ [Aufwärts], „Backward“ [Abwärts], „Full“ [Vollständig]) und einen Serialisierungstyp (sowohl Avro als auch JSON). Sie können mehrere Versionen eines Schemas erstellen und abrufen und eine bestimmte Version eines Schemas verwenden.
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:
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 der rollenbasierten Zugriffssteuerung (Azure Role-Based Access Control, Azure RBAC) auf Namespaceebene hinzu.
Rolle | 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.