Apache Kafka ist eine bekannte Open-Source-Event-Store- und Stream-Verarbeitungsplattform und hat sich zum De-facto-Standard für Daten-Streaming entwickelt. In diesem Artikel bietet Entwickler Michael Burgess einen Überblick über das Konzept von Schemas und die Schemaverwaltung als Möglichkeit, Ihren ereignisgesteuerten Anwendungen auf dem vollständig verwalteten Kafka-Dienst einen Mehrwert zu verleihen. IBM Event Streams in der IBM Cloud®.
Was ist ein Schema?
Ein Schema beschreibt die Struktur der Daten.
Zum Beispiel:
Eine einfache Java-Klasse, die eine Bestellung für ein Produkt in einem Online-Shop modelliert, kann mit Feldern wie den folgenden beginnen:
öffentliche Klasse Order{private String productName private String productCode private int Menge
[…]
}
Wenn mit dieser Klasse Auftragsobjekte erstellt und an ein Subjekt in Kafka gesendet würden, könnten wir die Struktur dieser Datensätze mithilfe eines Schemas wie diesem Avro-Schema beschreiben:
{ „type“: „record“, „name“: „Command“, „fields“: [
{„name“: „productName“, „type“: „string“},
{„name“: „productCode“, „type“: „string“},
{„name“: „quantity“, „type“: „int“}
]
}
Warum sollten Sie eine Gliederung verwenden?
Apache Kafka überträgt Daten, ohne die in den Nachrichten enthaltenen Informationen zu validieren. Es besteht kein Einblick darüber, welche Datentypen gesendet und empfangen werden oder welche Datentypen darin enthalten sein können. Kafka untersucht nicht die Metadaten Ihrer Nachrichten.
Eine der Funktionen von Kafka besteht darin, konsumierende und produzierende Anwendungen zu entkoppeln, sodass sie über ein Kafka-Thema und nicht direkt kommunizieren. Dadurch kann jeder in seinem eigenen Tempo arbeiten, muss sich aber immer auf die gleiche Datenstruktur einigen; Andernfalls haben konsumierende Anwendungen keine Möglichkeit, die empfangenen Daten in etwas Sinnvolles zu deserialisieren. Alle Anwendungen müssen die gleichen Annahmen über die Datenstruktur haben.
In Kafka beschreibt ein Schema die Struktur von Daten in einer Nachricht. Es definiert die Felder, die in jeder Nachricht vorhanden sein müssen, und die Typen jedes Felds.
Dies bedeutet, dass ein Schema einen genau definierten Vertrag zwischen einer produzierenden Anwendung und einer konsumierenden Anwendung bildet, der es konsumierenden Anwendungen ermöglicht, die empfangenen Nachrichtendaten korrekt zu analysieren und zu interpretieren.
Was ist eine Schema-Registrierung?
Eine Schema-Registrierung unterstützt Ihren Kafka-Cluster, indem sie ein Repository für die Verwaltung und Validierung von Schemas innerhalb dieses Clusters bereitstellt. Es fungiert als Datenbank zum Speichern Ihrer Schemata und bietet eine Schnittstelle zum Verwalten des Schemalebenszyklus und zum Abrufen von Schemata. Eine Schemaregistrierung validiert auch die Schemaentwicklung.
Optimieren Sie Ihre Kafka-Umgebung mithilfe einer Schema-Registrierung.
Eine Schema-Registrierung ist im Wesentlichen eine Vereinbarung über die Struktur Ihrer Daten innerhalb Ihrer Kafka-Umgebung. Durch die konsistente Speicherung von Datenformaten in Ihren Anwendungen vermeiden Sie häufige Fehler, die beim Erstellen von Anwendungen auftreten können, wie z. B. schlechte Datenqualität und Inkonsistenzen zwischen Ihren Produktions- und Verbrauchsanwendungen, die schließlich zu Datenbeschädigungen führen können. Eine gut verwaltete Schema-Registrierung ist nicht nur eine technische Notwendigkeit, sondern trägt auch zu den strategischen Zielen bei, Daten als wertvolles Gut zu behandeln, und hilft immens auf Ihrem Weg zu Daten als Produkt.
Die Verwendung einer Schemaregistrierung erhöht die Qualität Ihrer Daten und garantiert deren Konsistenz durch die Anwendung von Schemaentwicklungsregeln. Eine Schema-Registrierung stellt also nicht nur die Datenkonsistenz zwischen erzeugten und konsumierten Nachrichten sicher, sondern stellt auch sicher, dass Ihre Nachrichten kompatibel bleiben, wenn sich Schemaversionen im Laufe der Zeit ändern. Im Laufe der Lebensdauer eines Unternehmens ist es sehr wahrscheinlich, dass sich das Format der Nachrichten, die von den unterstützenden Anwendungen ausgetauscht werden, weiterentwickeln muss. Beispielsweise könnte die Order-Klasse in dem Beispielschema, das wir zuvor verwendet haben, ein neues Statusfeld erhalten: Das Produktcode-Feld könnte durch eine Kombination aus Abteilungsnummer und Produktnummer ersetzt werden oder etwas Ähnliches ändern. Das Ergebnis ist, dass sich das Schema der Objekte in unserem Geschäftsbereich ständig weiterentwickelt und Sie daher jederzeit in der Lage sein müssen, eine Einigung über das Schema der Nachrichten in einem bestimmten Thema zu gewährleisten.
Es gibt verschiedene Schemaentwicklungsmodelle:
Abwärtskompatibilität: Produzierende Anwendungen können auf eine neue Version des Schemas aktualisiert werden und alle konsumierenden Anwendungen können weiterhin Nachrichten konsumieren, während sie auf die Migration auf die neue Version warten. Abwärtskompatibilität: Konsumierende Anwendungen können zunächst auf eine neue Version des Schemas migriert werden und weiterhin im alten Format erstellte Nachrichten konsumieren, während die produzierenden Anwendungen migriert werden. Volle Kompatibilität: Wenn Schaltpläne sowohl vorwärts- als auch rückwärtskompatibel sind.
Eine Schemaregistrierung ist in der Lage, Schemaentwicklungsregeln durchzusetzen, sodass Sie die Abwärts-, Vorwärts- oder vollständige Kompatibilität neuer Schemaversionen sicherstellen und so die Einführung inkompatibler Schemaversionen verhindern können.
Durch die Bereitstellung eines Repositorys mit Versionen von Schemas, die früher und heute in einem Kafka-Cluster verwendet wurden, vereinfacht eine Schema-Registrierung die Einhaltung von Daten-Governance- und Qualitätsrichtlinien, da sie eine bequeme Möglichkeit bietet, an den Datenformaten Ihres Subjekts vorgenommene Änderungen zu verfolgen und zu prüfen.
Und danach?
Zusammenfassend lässt sich sagen, dass eine Schemaregistrierung eine entscheidende Rolle bei der Verwaltung der Schemaentwicklung, Versionierung und Datenkonsistenz in verteilten Systemen spielt und dadurch die Interoperabilität zwischen verschiedenen Komponenten fördert. Event Streams on IBM Cloud stellt im Rahmen seines Enterprise-Plans eine Schema-Registrierung bereit. Stellen Sie sicher, dass Ihre Umgebung optimiert ist, indem Sie diese Funktionalität des vollständig verwalteten Kafka-Angebots in der IBM Cloud nutzen, um intelligente, reaktionsfähige Anwendungen zu erstellen, die in Echtzeit auf Ereignisse reagieren.
Stellen Sie eine Instanz von Event Streams in IBM Cloud bereit Hier. Erfahren Sie, wie Sie die Event Streams Schema Registry verwenden Hier. Erfahren Sie mehr über Kafka und seine Anwendungsfälle Hier. Bei Installationsherausforderungen schauen Sie sich unsere an Leitfaden „Erste Schritte“. Und FAQs.
Ereignisfluss für IBM Cloud Engineer