In der folgenden Tabelle sind die Kafka Connect-Connectortypen aufgeführt, die von Managed Service for Apache Kafka unterstützt werden. Mit diesen Connectors können Sie Apache Kafka in Ihre Anwendungen und andere Google Cloud-Dienste einbinden.
| Connector | Beschreibung | Anwendungsfälle |
|---|---|---|
| BigQuery-Senke | Streamt Daten aus Kafka-Themen in eine BigQuery-Tabelle. | Data-Warehouse-Prozess, Analysen |
| Cloud SQL for PostgreSQL-Quelle | Liest Änderungen auf Zeilenebene aus einer Cloud SQL for PostgreSQL-Datenbank und schreibt sie in Kafka. | Datenbankintegration, Überwachung und Reaktion auf Datenbankereignisse |
| Cloud Storage-Senke | Streamt Daten aus Kafka-Themen in einen Cloud Storage-Bucket. | Data Lake-Aufnahme, Datenarchivierung |
| MirrorMaker 2.0 | Repliziert Themen und Daten von einem Kafka-Cluster in einen anderen Kafka-Cluster. | Datenreplikation, Notfallwiederherstellung, Datenmigration |
| Pub/Sub-Senke | Streamt Daten aus Kafka-Themen in ein Pub/Sub-Thema. | Dienstintegration, Echtzeitbenachrichtigungen |
| Pub/Sub-Quelle | Streamt Nachrichten aus einem Pub/Sub-Abo in ein Kafka-Thema. | Echtzeit-Datenaufnahme, ereignisgesteuerte Architekturen |
| Allgemeine PostgreSQL-Quelle | Liest Änderungen auf Zeilenebene aus einer PostgreSQL-Datenbank und schreibt sie in Kafka. | Datenbankintegration, Überwachung und Reaktion auf Datenbankereignisse |
Nutzer mit Conversion
Konverter sind für die Serialisierung und Deserialisierung von Kafka-Datensatzdaten verantwortlich. Sie übersetzen zwischen dem Rohbyteformat in Kafka-Themen und der internen, strukturierten Datendarstellung, die von Kafka Connect verwendet wird.
Bei Sink-Connectors werden Daten aus dem Wire-Format des Themas in das interne Datenformat von Kafka Connect deserialisiert, das der Connector zum Schreiben in das Zielsystem verwendet.
Bei Quell-Connectors serialisieren Konverter die Daten aus dem internen Datenformat von Kafka Connect in das angegebene Wire-Format für das Kafka-Thema.
Konverter sorgen dafür, dass der Connector die Kafka-Datensätze in einem Format liest oder schreibt, das mit dem externen System kompatibel ist.
Wenn Sie einen Connector konfigurieren, legen Sie die folgenden Attribute fest:
Schlüsselkonverter (
key.converter): Der Konverter, der zum Serialisieren und Deserialisieren von Kafka-Datensatzschlüsseln verwendet werden soll.Wertkonverter (
value.converter): Der Konverter, der zum Serialisieren und Deserialisieren von Kafka-Eintragswerten verwendet wird.
Wenn Sie keinen Converter angeben, ist der Standard-Convertertyp org.apache.kafka.connect.converters.ByteArrayConverter. Dabei werden die Daten im Rohbyteformat weitergegeben.
Unterstützte Konverter
Managed Service for Apache Kafka unterstützt die folgenden integrierten Konverter:
| Nutzer mit Conversion | Format |
|---|---|
io.confluent.connect.avro.AvroConverter |
Apache Avro |
org.apache.kafka.connect.converters.BooleanConverter |
Boolesch |
org.apache.kafka.connect.converters.ByteArrayConverter |
Byte-Array Der Standardkonvertertyp. Der genaue Inhalt von Nachrichten wird in zwei Systemen beibehalten. |
org.apache.kafka.connect.converters.DoubleConverter |
Doppelt |
org.apache.kafka.connect.converters.FloatConverter |
Float |
org.apache.kafka.connect.converters.IntegerConverter |
Ganzzahl |
org.apache.kafka.connect.json.JsonConverter |
JSON Legen Sie für JSON-Daten ohne Schema auch |
org.apache.kafka.connect.converters.LongConverter |
Lang |
org.apache.kafka.connect.converters.ShortConverter |
Kurz |
org.apache.kafka.connect.storage.StringConverter |
String |
Die Auswahl des Converters hängt vom Connectortyp und den Daten ab, die Sie in Kafka speichern. Weitere Informationen finden Sie in der Dokumentation für den jeweiligen Connector.
Tasks
Ein Connector überträgt Daten, indem er eine oder mehrere Aufgaben erstellt, die parallel ausgeführt werden. Wenn Sie eine Obergrenze für die Anzahl der Aufgaben festlegen möchten, die ein Connector erstellt, legen Sie das Konfigurationsattribut tasks.max des Connectors fest. Der Connector erstellt möglicherweise weniger Aufgaben als dieser Wert.
Durch Erhöhen des Werts von tasks.max kann der Durchsatz verbessert werden, aber auch der Ressourcenverbrauch (CPU und Arbeitsspeicher) steigt. Der optimale Wert hängt von der Arbeitslast und den Ressourcen ab, die den Connect-Cluster-Workern zugewiesen sind. Bei Senken-Connectors kann sich die Anzahl der Kafka-Topic-Partitionen auch auf die Parallelität auswirken.
Richtlinie für Task-Neustart
Sie können die Richtlinie für den Neustart von Aufgaben eines Connectors festlegen. Diese bestimmt das Verhalten bei einem Fehler. Connectors unterstützen die folgenden Richtlinien:
Nie neu starten. Der Connector startet fehlgeschlagene Tasks nicht neu. Das ist das Standardverhalten. Das ist nützlich für das Debugging oder in Situationen, in denen nach einem Fehler manuelles Eingreifen erforderlich ist.
Mit exponentiellem Backoff neu starten. Der Connector startet eine fehlgeschlagene Aufgabe nach einer Verzögerung (Backoff-Zeit) neu. Die Verzögerung nimmt mit jedem nachfolgenden Fehler exponentiell zu. Diese Richtlinie wird für die meisten Produktionsarbeitslasten empfohlen.
Wenn Sie die Richtlinie für exponentiellen Backoff verwenden, legen Sie auch Werte für den minimalen und maximalen Backoff fest. Der minimale Backoff sollte größer als 60 Sekunden und der maximale Backoff kleiner als 7.200 Sekunden sein.
Transformationen und Vorhersagen
Managed Service for Apache Kafka unterstützt die standardmäßigen Kafka Connect-Transformationen und Prädikate.
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. Sie können eine Transformation verwenden, um vertrauliche Daten zu maskieren, Zeitstempel hinzuzufügen oder Felder umzubenennen.
Mit Prädikaten können Sie Daten anhand bestimmter Bedingungen filtern und so festlegen, auf welche Nachrichten eine Transformation angewendet wird.
Wenn Sie beispielsweise einen Senken-Connector so konfigurieren möchten, dass Nachrichten mit dem Header-Schlüssel DoNotProcess ignoriert werden, fügen Sie die folgende Konfiguration hinzu:
transforms=dropMessage
transforms.dropMessage.type=org.apache.kafka.connect.transforms.Filter
transforms.dropMessage.predicate=hasKey
predicates=hasKey
predicates.hasKey.type=org.apache.kafka.connect.transforms.predicates.HasHeaderKey
predicates.hasKey.name=DoNotProcess
Diese Konfiguration hat folgende Auswirkungen:
Konfiguriert ein Prädikat mit dem Namen
hasKeyvom Typorg.apache.kafka.connect.transforms.predicates.HasHeaderKey. Dieses Prädikat entspricht allen Nachrichten, die einen Header mit dem SchlüsselDoNotProcessenthalten.Konfiguriert eine Transformation mit dem Namen
dropMessagevom Typorg.apache.kafka.connect.transforms.Filter. Bei dieser Transformation werden alle Nachrichten verworfen, die dem konfigurierten Prädikat entsprechen.Verknüpft die Transformation mit dem Prädikat
hasKey. So wird sichergestellt, dass nur Nachrichten mit dem Header-SchlüsselDoNotProcessdurch die Transformation verworfen werden.