In diesem Dokument wird beschrieben, wie Sie Apache Kafka und Pub/Sub Lite mithilfe mit dem Kafka-Connector für Pub/Sub-Gruppen.
Informationen zum Kafka-Connector für Pub/Sub-Gruppen
Apache Kafka ist eine Open-Source-Plattform zum Streamen von Ereignissen. Häufig handelt es sich die in verteilten Architekturen verwendet werden, um die Kommunikation zwischen lose verbundenen Komponenten. Pub/Sub Lite ist ein verwalteter Dienst zum Nachrichten asynchron empfangen. Wie bei Kafka können Sie Pub/Sub Lite für die Kommunikation zwischen Komponenten in der Cloud Architektur.
Mit dem Kafka-Connector für Pub/Sub-Gruppen können Sie diese beiden Systeme einbinden. Die folgenden Connectors sind in der Connector-JAR-Datei enthalten:
- Der Senken-Connector liest Datensätze aus einem oder mehreren Kafka-Themen und veröffentlicht sie in Pub/Sub Lite.
- Der Quell-Connector liest Nachrichten aus einem Pub/Sub Lite-Thema. und veröffentlicht sie in Kafka.
Hier sind einige Szenarien, in denen Sie den Kafka-Connector für Pub/Sub-Gruppen verwenden können:
- Sie migrieren eine Kafka-basierte Architektur zu Google Cloud.
- Sie haben ein Frontend-System, das Ereignisse in Kafka außerhalb von Google Cloud, aber Sie verwenden Google Cloud auch, um einen Teil Ihres Back-Ends auszuführen. die die Kafka-Ereignisse empfangen müssen.
- Sie erfassen Logs aus einer lokalen Kafka-Lösung und senden sie an Google Cloud für Datenanalysen
- Sie haben ein Front-End-System, das Google Cloud verwendet, speichern aber auch Daten. lokal mit Kafka ausgeführt werden.
Für den Connector ist Folgendes erforderlich: Kafka Connect ein Framework für das Streaming von Daten zwischen Kafka und anderen Systemen. Zur Verwendung Connectors erstellen, müssen Sie Kafka Connect parallel zu Ihrem Kafka-Cluster ausführen.
In diesem Dokument wird davon ausgegangen, dass Sie mit Kafka und Pub/Sub Lite Informationen zu den ersten Schritten mit Pub/Sub Lite finden Sie unter Nachrichten in Pub/Sub Lite mit der Google Cloud Console veröffentlichen und empfangen
Erste Schritte mit dem Kafka-Connector für Pub/Sub-Gruppen
Dieser Abschnitt führt Sie durch die folgenden Aufgaben:- Konfigurieren Sie den Kafka-Connector für die Pub/Sub-Gruppe.
- Ereignisse von Kafka an Pub/Sub Lite senden.
- Nachrichten von Pub/Sub Lite an Kafka senden.
Vorbereitung
Kafka installieren
Folgen Sie Kurzanleitung zu Apache Kafka um ein Kafka mit einem einzelnen Knoten auf Ihrem lokalen Computer zu installieren. Führen Sie diese Schritte aus in der Kurzanleitung:
- Laden Sie die neueste Kafka-Version herunter und extrahieren Sie sie.
- Starten Sie die Kafka-Umgebung.
- Erstellen Sie ein Kafka-Thema.
Authentifizieren
Der Kafka-Connector für die Pub/Sub-Gruppe muss sich bei Pub/Sub authentifizieren, um Pub/Sub-Nachrichten senden und empfangen. So richten Sie die Authentifizierung ein: führen Sie die folgenden Schritte aus:
- Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:
gcloud auth application-default login
-
Gewähren Sie Ihrem Google-Konto Rollen. Führen Sie den folgenden Befehl für jede der folgenden IAM-Rollen einmal aus:
roles/pubsublite.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Ersetzen Sie
PROJECT_ID
durch Ihre Projekt-ID. - Ersetzen Sie
EMAIL_ADDRESS
durch Ihre E-Mail-Adresse. - Ersetzen Sie
ROLE
durch jede einzelne Rolle.
- Ersetzen Sie
- Installieren Sie die Google Cloud CLI.
-
Führen Sie folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Erstellen Sie lokale Anmeldedaten zur Authentifizierung für Ihr Google-Konto:
gcloud auth application-default login
-
Gewähren Sie Ihrem Google-Konto Rollen. Führen Sie den folgenden Befehl für jede der folgenden IAM-Rollen einmal aus:
roles/pubsublite.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Ersetzen Sie
PROJECT_ID
durch Ihre Projekt-ID. - Ersetzen Sie
EMAIL_ADDRESS
durch Ihre E-Mail-Adresse. - Ersetzen Sie
ROLE
durch jede einzelne Rolle.
- Ersetzen Sie
Connector-JAR-Datei herunterladen
Laden Sie die Connector-JAR-Datei auf Ihren lokalen Computer herunter. Weitere Informationen finden Sie unter Connector beschaffen in der GitHub-Readme-Datei.
Connector-Konfigurationsdateien kopieren
Klonen Sie den GitHub-Repository für den Connector.
git clone https://github.com/googleapis/java-pubsub-group-kafka-connector.git cd java-pubsub-group-kafka-connector
Kopieren Sie den Inhalt des Verzeichnisses
config
in das Unterverzeichnisconfig
von Ihre Kafka-Installation.cp config/* [path to Kafka installation]/config/
Diese Dateien enthalten Konfigurationseinstellungen für den Connector.
Kafka Connect-Konfiguration aktualisieren
- Wechseln Sie zu dem Verzeichnis, das die von Ihnen verwendete Kafka Connect-Binärdatei enthält. heruntergeladen.
- Öffnen Sie im Binärverzeichnis von Kafka Connect die Datei namens
config/connect-standalone.properties
in einem Texteditor. - Wenn
plugin.path property
auskommentiert ist, entfernen Sie die Kommentarzeichen. Aktualisieren Sie
plugin.path property
, um den Pfad zur Connector-JAR-Datei anzugeben.Beispiel:
plugin.path=/home/PubSubKafkaConnector/pubsub-group-kafka-connector-1.0.0.jar
Legen Sie das Attribut
offset.storage.file.filename
auf einen lokalen Dateinamen fest. In im eigenständigen Modus verwendet wird, verwendet Kafka diese Datei zum Speichern von Offset-Daten.Beispiel:
offset.storage.file.filename=/tmp/connect.offsets
Ereignisse von Kafka an Pub/Sub Lite weiterleiten
In diesem Abschnitt wird beschrieben, wie Sie den Senken-Connector starten, Ereignisse in Kafka veröffentlichen, und dann die weitergeleiteten Nachrichten aus Pub/Sub Lite lesen.
Verwenden Sie die Google Cloud CLI, um eine Pub/Sub Lite-Reservierung zu erstellen.
gcloud pubsub lite-reservations create RESERVATION_NAME \ --location=LOCATION \ --throughput-capacity=4
Ersetzen Sie Folgendes:
- RESERVATION_NAME: Der Name von Pub/Sub Lite. Reservierung.
- LOCATION: Der Standort des Reservierung.
Verwenden Sie die Google Cloud CLI, um ein Pub/Sub Lite-Thema mit einem Abo.
gcloud pubsub lite-topics create LITE_TOPIC \ --location=LOCATION \ --partitions=2 \ --per-partition-bytes=30GiB \ --throughput-reservation=RESERVATION_NAME gcloud pubsub lite-subscriptions create LITE_SUBSCRIPTION \ --location=LOCATION \ --topic=LITE_TOPIC
Ersetzen Sie Folgendes:
- LITE_TOPIC: Der Name des Pub/Sub Lite-Themas, das zu aktualisieren ist. Nachrichten von Kafka empfangen.
- LOCATION: Der Speicherort des Themas. Der Wert muss mit der Standort der Reservierung.
- RESERVATION_NAME: Der Name von Pub/Sub Lite. Reservierung.
- LITE_SUBSCRIPTION: der Name von Pub/Sub Lite Abo für das Thema.
Öffnen Sie die Datei
/config/pubsub-lite-sink-connector.properties
in einem Texteditor. Hinzufügen für die folgenden Attribute, die mit"TODO"
gekennzeichnet sind, Kommentare:topics=KAFKA_TOPICS pubsublite.project=PROJECT_ID pubsublite.location=LOCATION pubsublite.topic=LITE_TOPIC
Ersetzen Sie Folgendes:
- KAFKA_TOPICS: eine durch Kommas getrennte Liste von zu lesenden Kafka-Themen aus.
- PROJECT_ID: Das Google Cloud-Projekt, das die Datei enthält. Pub/Sub Lite-Thema.
- LOCATION: Der Speicherort des Pub/Sub Lite-Themas.
- LITE_TOPIC: Das zu empfangende Pub/Sub Lite-Thema Nachrichten von Kafka gesendet.
Führen Sie im Kafka-Verzeichnis den folgenden Befehl aus:
bin/connect-standalone.sh \ config/connect-standalone.properties \ config/pubsub-lite-sink-connector.properties
Folgen Sie der Anleitung in der Kurzanleitung zu Apache Kafka um einige Ereignisse in Ihr Kafka-Thema zu schreiben.
Abonnieren Sie das Pub/Sub Lite-Abo mit einer der folgenden Methoden: Methoden aus Nachrichten von Lite-Abos empfangen
Nachrichten von Pub/Sub Lite an Kafka weiterleiten
In diesem Abschnitt wird beschrieben, wie Sie den Quell-Connector starten, Pub/Sub Lite und lesen Sie die weitergeleiteten Nachrichten von Kafka.
Verwenden Sie die Google Cloud CLI, um eine Pub/Sub Lite-Reservierung zu erstellen.
gcloud pubsub lite-reservations create RESERVATION_NAME \ --location=LOCATION \ --throughput-capacity=4
Ersetzen Sie Folgendes:
- RESERVATION_NAME: Der Name von Pub/Sub Lite. Reservierung.
- LOCATION: Der Standort des Reservierung.
Verwenden Sie die Google Cloud CLI, um ein Pub/Sub Lite-Thema mit einem Abo.
gcloud pubsub lite-topics create LITE_TOPIC \ --location=LOCATION \ --partitions=2 \ --per-partition-bytes=30GiB \ --throughput-reservation=RESERVATION_NAME gcloud pubsub lite-subscriptions create LITE_SUBSCRIPTION \ --location=LOCATION \ --topic=LITE_TOPIC
Ersetzen Sie Folgendes:
- LITE_TOPIC: Der Name des Pub/Sub Lite-Themas.
- LOCATION: Der Speicherort des Themas. Der Wert muss mit der Standort der Reservierung.
- RESERVATION_NAME: Der Name von Pub/Sub Lite. Reservierung.
- LITE_SUBSCRIPTION: Der Name von Pub/Sub Lite. Abo für das Thema.
Öffnen Sie die Datei
/config/pubsub-lite-source-connector.properties
in einem Texteditor. Fügen Sie Werte für die folgenden Eigenschaften hinzu, die gekennzeichnet sind"TODO"
in den Kommentaren:topic=KAFKA_TOPIC pubsublite.project=PROJECT_ID pubsublite.location=LOCATION pubsublite.subscription=LITE_SUBSCRIPTION
Ersetzen Sie Folgendes:
- KAFKA_TOPIC: Die Kafka-Themen, die den Pub/Sub-Nachrichten.
- PROJECT_ID: Das Google Cloud-Projekt, das die Datei enthält. Pub/Sub-Thema.
- LOCATION: Der Speicherort des Pub/Sub Lite-Themas.
- LITE_SUBSCRIPTION: Das Pub/Sub Lite-Thema.
Führen Sie im Kafka-Verzeichnis den folgenden Befehl aus:
bin/connect-standalone.sh \ config/connect-standalone.properties \ config/pubsub-lite-source-connector.properties
Veröffentlichen Sie Nachrichten in dem Pub/Sub Lite-Thema mit einer der Methoden, die in Nachrichten in Lite-Themen veröffentlichen
Lesen Sie die Nachricht von Kafka. Folgen Sie der Anleitung in der Kurzanleitung zu Apache Kafka um die Nachrichten aus dem Kafka-Thema zu lesen.
SMS-Conversion
Einen Kafka-Eintrag enthält einen Schlüssel und einen Wert, bei denen es sich um Byte-Arrays mit variabler Länge handelt. Optional kann ein Der Kafka-Eintrag kann auch Header haben, bei denen es sich um Schlüssel/Wert-Paare handelt. A Pub/Sub Lite-Nachricht enthält die folgenden Felder:
key
: Nachrichtenschlüssel (bytes
)data
: Nachrichtendaten (bytes
)attributes
: Null oder mehr Attribute. Jedes Attribut ist ein(key,values[])
Ein einzelnes Attribut kann mehrere Werte haben.event_time
: Ein optionaler vom Nutzer angegebener Ereigniszeitstempel.
Kafka Connect verwendet Converter, um Schlüssel und Werte zu und von Kafka zu serialisieren. Legen Sie im Connector die folgenden Eigenschaften fest, um die Serialisierung zu steuern Konfigurationsdateien:
key.converter
: Der Converter, der zum Serialisieren von Datensatzschlüsseln verwendet wird.value.converter
: Der Converter, der zum Serialisieren von Datensatzwerten verwendet wird.
Konvertierung von Kafka zu Pub/Sub Lite
Der Senken-Connector konvertiert Kafka-Einträge in Pub/Sub Lite-Nachrichten wie im Folgenden beschrieben.
Kafka-Eintrag
(SinkRecord ) |
Pub/Sub Lite-Nachricht |
---|---|
Schlüssel | key |
Wert | data |
Header | attributes |
Zeitstempel | eventTime |
Zeitstempeltyp | attributes["x-goog-pubsublite-source-kafka-event-time-type"] |
Thema | attributes["x-goog-pubsublite-source-kafka-topic"] |
Partition | attributes["x-goog-pubsublite-source-kafka-offset"] |
Offset | attributes["x-goog-pubsublite-source-kafka-partition"] |
Schlüssel, Werte und Header werden so codiert:
- Nullschemas werden als Stringschemas behandelt.
- Bytenutzlasten werden direkt und ohne Konvertierung geschrieben.
- String-, Ganzzahl- und Gleitkommanutzlasten werden in eine Folge von UTF-8-Byte.
- Alle anderen Nutzlasten werden in einem Protokollzwischenspeicher codiert.
Value
und dann in einen Byte-String konvertiert.- Verschachtelte Stringfelder werden in einen protobuf-
Value
codiert. - Verschachtelte Byte-Felder werden in einen protobuf-
Value
codiert, der die base64-codierte Byte. - Verschachtelte numerische Felder werden als Double in einem protobuf-
Value
codiert. - Karten mit Array-, Map- oder Struct-Schlüsseln werden nicht unterstützt.
- Verschachtelte Stringfelder werden in einen protobuf-
Konvertierung von Pub/Sub Lite zu Kafka
Der Quell-Connector konvertiert Pub/Sub Lite-Nachrichten in Kafka-Einträge wie folgt:
Pub/Sub Lite-Nachricht | Kafka-Eintrag
(SourceRecord )
|
---|---|
key |
Schlüssel |
data |
Wert |
attributes |
Header |
event_time |
Timestamp. Wenn event_time nicht vorhanden ist, wird die Veröffentlichung
Zeit verwendet wird. |
Konfigurationsoptionen
Zusätzlich zu den Konfigurationen, die von der Kafka Connect API bereitgestellt werden, Connector unterstützt die folgenden Pub/Sub Lite-Konfigurationen.
Konfigurationsoptionen für Senken-Connectors
Der Senken-Connector unterstützt die folgenden Konfigurationsoptionen.
Einstellung | Datentyp | Beschreibung |
---|---|---|
connector.class |
String |
Erforderlich. Die Java-Klasse für den Connector. Für
Pub/Sub Lite-Senken-Connector ist, muss der Wert
com.google.pubsublite.kafka.sink.PubSubLiteSinkConnector
|
gcp.credentials.file.path |
String |
Optional. Der Pfad zu einer Datei, in der Google Cloud-Anmeldedaten gespeichert sind zur Authentifizierung von Pub/Sub Lite. |
gcp.credentials.json |
String |
Optional. Ein JSON-Blob, das Google Cloud für Pub/Sub Lite authentifiziert wird. |
pubsublite.location |
String |
Erforderlich. Der Standort des Pub/Sub Lite-Thema. |
pubsublite.project |
String |
Erforderlich. Die Google Cloud, die die Pub/Sub Lite-Thema. |
pubsublite.topic |
String |
Erforderlich. Das zu veröffentlichende Pub/Sub Lite-Thema Kafka zeichnet auf. |
topics |
String |
Erforderlich. Eine durch Kommas getrennte Liste von Kafka-Themen, aus denen Sie ablesen können. |
Konfigurationsoptionen für den Quell-Connector
Der Quell-Connector unterstützt die folgenden Konfigurationsoptionen.
Einstellung | Datentyp | Beschreibung |
---|---|---|
connector.class |
String |
Erforderlich. Die Java-Klasse für den Connector. Für
Pub/Sub Lite-Quell-Connector nutzt, muss der Wert
com.google.pubsublite.kafka.source.PubSubLiteSourceConnector
|
gcp.credentials.file.path |
String |
Optional. Der Pfad zu einer Datei, in der Google Cloud-Anmeldedaten gespeichert sind zur Authentifizierung von Pub/Sub Lite. |
gcp.credentials.json |
String |
Optional. Ein JSON-Blob, das Google Cloud für Pub/Sub Lite authentifiziert wird. |
kafka.topic |
String |
Erforderlich. Das Kafka-Thema, das Nachrichten empfängt Pub/Sub Lite |
pubsublite.location |
String |
Erforderlich. Der Standort des Pub/Sub Lite-Thema. |
pubsublite.partition_flow_control.bytes |
Long |
Die maximale Anzahl ausstehender Byte pro Pub/Sub Lite-Partition. Standardeinstellung: 20.000.000 |
pubsublite.partition_flow_control.messages |
Long |
Die maximale Anzahl ausstehender Nachrichten pro Pub/Sub Lite-Partition. Standardwert: |
pubsublite.project |
String |
Erforderlich. Das Google Cloud-Projekt, das die Pub/Sub Lite-Thema. |
pubsublite.subscription |
String |
Erforderlich. Der Name von Pub/Sub Lite Abos, aus denen Nachrichten abgerufen werden sollen. |
Nächste Schritte
- Unterschiede zwischen Kafka und Pub/Sub
- Weitere Informationen zum Kafka-Connector für Pub/Sub-Gruppen
- Kafka-Connector für Pub/Sub-Gruppen ansehen GitHub-Repository.