Kafka Connect ist das bevorzugte Tool für die Datenintegration für Kafka-Entwickler. Es bietet ein Framework für die Verbindung von Kafka mit externen Systemen wie Datenbanken, Message Queues und Dateisystemen.
Kafka Connect bietet eine ausgewählte Reihe von integrierten Connector-Plug‑ins, die von Google Cloudgeprüft und verwaltet werden. Diese Connector-Plug-ins werden automatisch gepatcht und aktualisiert, was die Wartung vereinfacht und die Kompatibilität sicherstellt.Google Cloud bietet außerdem integriertes Monitoring und Logging, um die Integrität Ihrer Pipelines zu gewährleisten.
Kafka Connect-APIs werden als Teil des Google Cloud Managed Service for Apache Kafka-Dienstes angeboten. Diese APIs sind über managedkafka.googleapis.com zugänglich und in die Google Cloud -Konsole und Clientbibliotheken integriert. Sie können Kafka Connect über die Google Cloud Console, die gcloud CLI, die Managed Kafka API, die Cloud-Clientbibliotheken oder Terraform verwalten.
Kafka Connect-Anwendungsfälle
Kafka Connect unterstützt die Datenintegration zwischen Ihrem Managed Service for Apache Kafka-Cluster und verschiedenen anderen Systemen. Hier einige wichtige Anwendungsfälle:
Migrieren Sie Ihre vorhandenen Kafka-Bereitstellungen zu Managed Service for Apache Kafka.
Replizieren Sie Ihren Managed Service for Apache Kafka-Cluster in eine andere Region für die Notfallwiederherstellung.
Streamen Sie Daten aus Managed Service for Apache Kafka zu BigQuery, Cloud Storage und Pub/Sub.
Kafka Connect-Begriffe
In diesen Abschnitten werden bestimmte wichtige Kafka Connect-Komponenten beschrieben.
Connect-Cluster
Ein Connect-Cluster ist eine verteilte Bereitstellung von Kafka Connect mit vordefinierten Connector-Plug-ins und Konfigurationen. Jeder Connect-Cluster ist einem primären Managed Service for Apache Kafka-Cluster zugeordnet. In diesem primären Cluster wird der Status der Connectors gespeichert, die im Connect-Cluster ausgeführt werden.
Im Allgemeinen dient der primäre Managed Service for Apache Kafka-Cluster auch als Ziel für alle Quell-Connectors und als Quelle für alle Senken-Connectors, die im zugehörigen Connect-Cluster ausgeführt werden.
Ein einzelner Managed Service for Apache Kafka-Cluster kann mehrere Connect-Cluster haben. Wenn Sie MirrorMaker 2.0 ausführen, kann ein Connect-Cluster eine Verbindung zu nicht primären Managed Service for Apache Kafka-Clustern oder selbstverwalteten Kafka-Clustern herstellen, um Themendaten zu lesen oder zu schreiben. Dieser Prozess ermöglicht die Themenreplikation zwischen verschiedenen Clustern.
Aus Sicht des Ressourcenmodells ist ein Connect-Cluster eine separate Ressource von einem Managed Service for Apache Kafka-Cluster.
Angenommen, Sie haben einen Managed Service for Apache Kafka-Cluster, in dem Sie Daten zum Website-Traffic speichern. Sie möchten diese Daten zur Analyse in BigQuery streamen. Sie können einen Connect-Cluster erstellen und einen BigQuery-Senken-Connector verwenden, um die Daten aus Ihren Kafka-Themen nach BigQuery zu übertragen. Dieser Connect-Cluster ist Ihrem Managed Service for Apache Kafka-Cluster als primärer Cluster zugeordnet.
Connector-Plug‑in
Ein Softwarepaket zum Erstellen von Connectors. Es ist der Code, der die Logik des Connectors definiert.
Ein Connector kann ein Quell- oder Senken-Connector sein. Ein Quell-Connector schreibt Daten aus einer Quelle in einen Managed Service for Apache Kafka-Cluster.
Ein Senken-Connector schreibt Daten aus einem Managed Service for Apache Kafka-Cluster in eine Senke.
Managed Service for Apache Kafka unterstützt mehrere Typen von integrierten Connector-Plug‑ins, die Sie zum Erstellen von Connectors konfigurieren können. Diese Connectors bieten Integrationen mit gängigen Diensten wie Pub/Sub oder BigQuery. Die Connector-Plug-ins sind:
BigQuery-Senken-Connector-Plug-in
Cloud Storage-Senken-Connector-Plug-in
Pub/Sub-Quell-Connector-Plug‑in
Pub/Sub-Senken-Connector-Plug-in
MirrorMaker 2.0-Connector-Plug‑ins
Connector
Ein Connector ist eine laufende Instanz eines Connector-Plug-ins in einem bestimmten Connect-Cluster. Sie können mehrere Connectors aus demselben Connector-Plug-in erstellen, die jeweils eine eigene Konfiguration haben. Beispiele für die Konfiguration sind verschiedene Authentifizierungsdetails und Betriebseinstellungen. Ein Connector wird im Connect-Cluster bereitgestellt, konfiguriert und verwaltet. Sie kann gestartet, beendet, pausiert und neu gestartet werden und ihre Konfiguration kann aktualisiert werden.
Die Komponenten eines Connectors werden in den nächsten Abschnitten erläutert.
Nutzer mit Conversion
Konverter sind wichtige Komponenten in Kafka Connect, die für die Serialisierung und Deserialisierung zuständig sind. Sie übersetzen Daten zwischen dem Rohbyte-Drahtformat, das in Kafka-Themen wie im Avro- oder JSON-Format zu finden ist, und der internen, strukturierten Datendarstellung von Kafka Connect.
Rolle von Konvertern
Bei Sink-Connectors werden Daten aus dem Wire-Format des Themas in die interne, strukturierte Datendarstellung von Kafka Connect deserialisiert. Der Connector verwendet diese Darstellung dann, um Daten in das Zielsystem zu schreiben.
Bei Quell-Connectors serialisieren Konverter die Daten aus der internen, strukturierten Datendarstellung von Kafka Connect, die vom Connector bereitgestellt wird, in das angegebene Wire-Format für das Kafka-Thema.
Dieses interne Format dient als gemeinsame Darstellung und ermöglicht verschiedene Zwischenverarbeitungsschritte. Diese Schritte umfassen Primitiven wie Filter, Vorhersagen, Transformationen und Konverter, die alle in diesem einheitlichen internen Format ausgeführt werden. Durch die Verwendung eines abstrakten internen Formats bleibt die Logik dieser Zwischenschritte unabhängig von den spezifischen Ein- oder Ausgabedatenformaten.
Ein Converter ist erforderlich, wenn Sie die Daten nicht nur weiterleiten, sondern auch bearbeiten müssen. Konverter sind insbesondere in Fällen erforderlich, in denen Sie Zwischenverarbeitungsschritte wie Prädikate oder Transformationen auf feingliedrige, strukturbezogene Weise ausführen müssen.
Wenn Sie nur einen Byte-String (auch wenn es sich um JSON handelt) ohne Manipulation von einer Quelle zu Kafka verschieben möchten, ist kein Konverter erforderlich.
Wenn Sie in einer Connector-Konfiguration die Schlüssel- und Wertkonverter nicht angeben, verwendet der Connector den Standardwert ByteArrayConverter. Mit dem Wert org.apache.kafka.connect.converters.ByteArrayConverter werden keine Transformationen auf die Daten angewendet. Die Daten werden im Originalformat übergeben.
Unterstützte Konverter
In dieser Version Google Cloud werden die folgenden integrierten Konverter unterstützt:
org.apache.kafka.connect.converters.ByteArrayConverter: Konvertiert Daten in und aus Bytearrays. Dies ist der Standard-Converter. Die Daten werden über den Connector als zugrunde liegende Rohbytes weitergeleitet.org.apache.kafka.connect.json.JsonConverter: Konvertiert Daten in das und aus dem JSON-Format.org.apache.kafka.connect.storage.StringConverter: Konvertiert Daten in und aus dem String-Format.org.apache.kafka.connect.converters.ByteArrayConverter: Konvertiert Daten in und aus Bytearrays.org.apache.kafka.connect.converters.DoubleConverter: Konvertiert Daten in das und aus dem Double-Format.org.apache.kafka.connect.converters.FloatConverter: Konvertiert Daten in das und aus dem Float-Format.org.apache.kafka.connect.converters.IntegerConverter: Konvertiert Daten in das und aus dem Integer-Format.org.apache.kafka.connect.converters.LongConverter: Konvertiert Daten in das und aus dem Long-Format.org.apache.kafka.connect.converters.ShortConverter: Konvertiert Daten in das Short-Format und umgekehrt.org.apache.kafka.connect.converters.BooleanConverter: Konvertiert Daten in das und aus dem booleschen Format.io.confluent.connect.avro.AvroConverter: Konvertiert Daten in und aus dem Apache Avro-Format.
In diesem Release unterstützt Kafka Connect keine Validierung anhand eines Remote-Schemas mithilfe der Schema Registry.
Informationen zu den bevorzugten Konvertern für die einzelnen Connectors finden Sie in der Dokumentation zum jeweiligen Connector.
Standardkonfiguration des Converters
Der Standardschlüssel- und ‑wertkonverter für alle unterstützten Connectors ist org.apache.kafka.connect.json.JsonConverter.
Beim Konfigurieren der Connectors müssen Sie den entsprechenden Konverter für den Schlüssel und den Wert Ihrer Kafka-Nachrichten angeben. Wenn Sie beispielsweise mit JSON-Daten arbeiten, verwenden Sie JsonConverter. Wenn Ihre Daten im Stringformat vorliegen, verwenden Sie StringConverter.
Hier einige gängige Konfigurationen:
tasks.max: Die maximale Anzahl von Aufgaben, die für diesen Connector erstellt werden sollen. Damit wird die Parallelität des Connectors gesteuert. Durch Erhöhen der Anzahl der Aufgaben kann der Durchsatz verbessert werden, allerdings steigt auch der Ressourcenverbrauch (CPU und Arbeitsspeicher). Der optimale Wert hängt von der Arbeitslast und den Ressourcen ab, die den Connect-Cluster-Workern zugewiesen sind, sowie bei Sink-Connectors von der Anzahl der Kafka-Themenpartitionen.value.converter: Der Konverter, der zum Serialisieren des Werts der Nachrichten verwendet wird, bevor sie an den Cloud Storage-Bucket gesendet werden. Häufig verwendete Konverter sind:org.apache.kafka.connect.json.JsonConverter: Für JSON-Daten. Sie müssenvalue.converter.schemas.enable=falsehäufig festlegen, wenn Sie diesen Konverter mit einfachem JSON (ohne Schema) verwenden.org.apache.kafka.connect.converters.ByteArrayConverter: Um den genauen Inhalt der Nachrichten in zwei Systemen beizubehalten.org.apache.kafka.connect.storage.StringConverter: Für Nur-Text-Strings.
key.converter: Der Konverter, der zum Serialisieren des Schlüssels der Nachrichten verwendet werden soll. Es gelten dieselben Konverteroptionen wie fürvalue.converter. Wenn Ihre Nachrichten keine Schlüssel haben, können Sie häufigorg.apache.kafka.connect.storage.StringConverterverwenden.value.converter.schemas.enable: Wenn Sie für einen Sink Connectortruefestlegen undorg.apache.kafka.connect.json.JsonConverterverwenden, wird Kafka Connect angewiesen, nach einem Schema zu suchen, das in die eingehende Kafka-Nachricht eingebettet ist, und dieses zu verwenden. Wenn der Wert auffalse(Standard) gesetzt ist, erwartet Kafka Connect, dass die Daten einfaches JSON ohne eingebettetes Schema sind.
Transformationen (optional)
Mit Transformationen können Daten während der Datenpipeline bearbeitet oder angereichert werden. Mit Transformationen können Sie einzelne Nachrichten ändern, bevor sie an Managed Service for Apache Kafka (für Quell-Connectors) oder an das externe System (für Ziel-Connectors) gesendet werden. Mit einer Transformation können Sie beispielsweise vertrauliche Daten maskieren, Zeitstempel hinzufügen oder Felder umbenennen.
Prädikate (optional)
Mit Prädikaten können Daten anhand bestimmter Bedingungen gefiltert werden. Prädikate fungieren als Filter zum Anwenden von Transformationen. Sie bestimmen anhand von Nachrichteneigenschaften, auf welche Nachrichten eine Transformation angewendet wird.
Kafka Connect in Google Cloudverwalten
Mit Kafka Connect können Sie sich auf die Bereitstellung von Connectors konzentrieren, während Google Clouddie zugrunde liegende Infrastruktur und die betrieblichen Komplexitäten übernimmt. Hier sehen Sie, was Google Cloud automatisiert und was Sie konfigurieren können:
Der Kafka Connect-Dienst automatisiert Folgendes:
Bereitstellung von Kafka Connect-Workern: Wenn Sie einen Connect-Cluster erstellen, stellt der Kafka Connect-Dienst automatisch einen Cluster von Workern in Kubernetes bereit.
Netzwerk: Der Kafka Connect-Dienst konfiguriert das Netzwerk, um die Kommunikation zwischen den Workern, den Managed Service for Apache Kafka-Brokern und externen Systemen zu ermöglichen. In einigen Fällen müssen Sie möglicherweise Änderungen an Ihren vorhandenen Netzwerkeinstellungen vornehmen.
Zonale Resilienz: Der Kafka Connect-Dienst verteilt Worker auf mindestens drei Zonen, sodass die Datenverarbeitung im Falle eines zonalen Ausfalls fortgesetzt werden kann.
Authentifizierung: Der Kafka Connect-Dienst konfiguriert auch die Authentifizierung mit Kafka-Brokern, um sichere Verbindungen zu gewährleisten.
Rollouts und Upgrades: Der Kafka Connect-Dienst verwaltet Änderungen an der Worker-Konfiguration, Versionsupgrades und Sicherheitspatches, damit Ihre Bereitstellungen immer auf dem neuesten Stand sind.
Im Kafka Connect-Dienst können Sie die folgenden Konfigurationen vornehmen:
Kapazitäts- und Netzwerkbeschränkungen: Definieren Sie Ressourcenlimits und Netzwerkkonfigurationen, um Leistung und Kosten zu optimieren.
Monitoring und Logging: Sie können auf Logs und Messwerte für Ihre Connectors zugreifen, um die Leistung zu überwachen und Probleme zu beheben.
Connector-Lebenszyklusverwaltung: Sie können Connectors nach Bedarf pausieren, fortsetzen, neu starten oder beenden, um Ihre Datenpipelines zu verwalten.
Beschränkungen
Der Kafka Connect-Dienst unterstützt nur den Managed Service for Apache Kafka-Cluster als primären Kafka-Cluster. Der primäre Cluster ist der Cluster, in den der Kafka Connect-Cluster seine Metadaten schreibt.
Der Dienst unterstützt das Hochladen benutzerdefinierter Connector-Plug-ins in Ihren Kafka Connect-Cluster nicht.