Von Kafka zu Pub/Sub Lite migrieren

Dieses Dokument ist nützlich, wenn Sie eine Migration von selbstverwaltetem Apache Kafka zu Pub/Sub Lite erwägen.

Pub/Sub Lite – Übersicht

Pub/Sub Lite ist ein Messaging-Dienst mit hohem Volumen, der für niedrige Betriebskosten entwickelt wurde. Pub/Sub Lite bietet zonalen und regionalen Speicher sowie vorab bereitgestellte Kapazität. In Pub/Sub Lite können Sie zonale oder regionale Lite-Themen auswählen. Regionale Lite-Themen bieten dasselbe Verfügbarkeits-SLA wie Pub/Sub-Themen. Allerdings gibt es Unterschiede zwischen Pub/Sub und Pub/Sub Lite hinsichtlich der Nachrichtenreplikation.

Weitere Informationen zu Pub/Sub und Pub/Sub Lite finden Sie unter Was ist Pub/Sub?.

Weitere Informationen zu Lite-unterstützten Regionen und Zonen finden Sie unter Pub/Sub Lite-Standorte.

Terminologie in Pub/Sub Lite

Im Folgenden finden Sie einige wichtige Begriffe für Pub/Sub Lite.

  • Nachricht Daten, die durch den Pub/Sub Lite-Dienst geleitet werden.

  • Thema Eine benannte Ressource, die für einen Nachrichtenfeed steht. In Pub/Sub Lite können Sie ein zonales oder regionales Lite-Thema erstellen. Bei regionalen Pub/Sub Lite-Themen werden Daten in zwei Zonen einer einzelnen Region gespeichert. Bei zonalen Pub/Sub Lite-Themen werden Daten nur in einer Zone repliziert.

  • Reservierung. Ein benannter Pool der Durchsatzkapazität, der von mehreren Lite-Themen in einer Region gemeinsam genutzt wird.

  • Abo: Eine benannte Ressource, die für ein Interesse am Empfangen von Nachrichten von einem bestimmten Lite-Thema steht. Ein Abo ähnelt einer Verbrauchergruppe in Kafka, die nur eine Verbindung zu einem einzelnen Thema herstellt.

  • Abonnent: Ein Client von Pub/Sub Lite, der Nachrichten von einem Lite-Thema und einem angegebenen Abo empfängt. Ein Abo kann mehrere Abonnentenclients haben. In diesem Fall erfolgt der Load-Balancing der Nachrichten auf den Abonnentenclients. In Kafka wird ein Abonnent als Consumer bezeichnet.

  • Verlag und Webpublisher: Eine Anwendung, die Nachrichten erstellt und an ein bestimmtes Lite-Thema sendet (veröffentlicht). Ein Thema kann mehrere Publisher haben. In Kafka wird ein Publisher als Producer bezeichnet.

Unterschiede zwischen Kafka und Pub/Sub Lite

Pub/Sub Lite ähnelt zwar dem Konzept von Kafka, ist jedoch ein anderes System mit einer enger gefassten API, das stärker auf die Datenaufnahme ausgerichtet ist. Obwohl die Unterschiede für die Aufnahme und Verarbeitung von Streams von unerheblich sind, gibt es einige spezifische Anwendungsfälle, in denen sie wichtig sind.

Kafka als Datenbank

Im Gegensatz zu Kafka unterstützt Pub/Sub Lite derzeit keine transaktionale Veröffentlichung oder Log-Verdichtung, obwohl Idempotenz unterstützt wird. Diese Kafka-Features sind nützlicher, wenn Sie Kafka als Datenbank und nicht als Nachrichtensystem verwenden. Wenn Sie Kafka hauptsächlich als Datenbank verwenden, sollten Sie einen eigenen Kafka-Cluster ausführen oder eine verwaltete Kafka-Lösung wie Confluent Cloud verwenden. Wenn keine dieser Lösungen für Sie infrage kommt, können Sie auch eine horizontal skalierbare Datenbank wie Cloud Spanner verwenden.

Kafka-Streams

Kafka-Streams sind ein Datenverarbeitungssystem, das auf Kafka basiert. Es ermöglicht zwar die Injektion von Verbraucherclients, erfordert jedoch Zugriff auf alle Administratorvorgänge. Kafka Streams verwendet auch die transaktionalen Datenbankattribute von Kafka zum Speichern interner Metadaten. Daher kann Pub/Sub Lite derzeit nicht für Kafka Streams-Anwendungen verwendet werden.

Apache Beam ist ein ähnliches Streaming-Datenverarbeitungssystem, das in Kafka, Pub/Sub und Pub/Sub Lite eingebunden ist. Sie können Beam-Pipelines mit Dataflow oder auf Ihren bereits vorhandenen Apache Flink- und Apache Spark-Clustern vollständig verwaltet ausführen.

Prüfen

Kafka-Clients können serverseitige Messwerte lesen. In Pub/Sub Lite werden Messwerte, die für das Verhalten von Publishern und Abonnenten relevant sind, ohne zusätzliche Konfiguration über Cloud Monitoring verwaltet.

Kapazitätsverwaltung

Die Kapazität eines Kafka-Themas wird durch die Kapazität des Clusters bestimmt. Replikation, Schlüsselverdichtung und Batcheinstellungen bestimmen die Kapazität, die für die Bereitstellung eines bestimmten Themas im Kafka-Cluster erforderlich ist. Der Durchsatz eines Kafka-Themas wird durch die Kapazität der Maschinen begrenzt, auf denen die Broker ausgeführt werden. Im Gegensatz dazu müssen Sie für ein Pub/Sub Lite-Thema sowohl Speicher- als auch Durchsatzkapazität definieren. Die Speicherkapazität von Pub/Sub Lite ist ein konfigurierbares Attribut des Themas. Die Durchsatzkapazität basiert auf der Kapazität der konfigurierten Reservierung und den inhärenten oder konfigurierten Limits pro Partition.

Authentifizierung und Sicherheit

Apache Kafka unterstützt mehrere offene Authentifizierungs- und Verschlüsselungsmechanismen. Bei Pub/Sub Lite basiert die Authentifizierung auf dem IAM-System. Die Sicherheit wird durch Verschlüsselung von ruhenden Daten und von Daten bei der Übertragung gewährleistet. Weitere Informationen zur Pub/Sub Lite-Authentifizierung finden Sie weiter unten in diesem Dokument im Abschnitt zum Migrationsworkflow.

Kafka-Properties Pub/Sub Lite-Attributen zuordnen

Kafka bietet viele Konfigurationsoptionen, mit denen die Themenstruktur, Limits und Broker-Eigenschaften gesteuert werden. In diesem Abschnitt werden einige gängige Methoden, die für die Datenaufnahme nützlich sind, und ihre Entsprechungen in Pub/Sub Lite erläutert. Da Pub/Sub Lite ein verwaltetes System ist, müssen Sie nicht viele Broker-Attribute berücksichtigen.

Eigenschaften der Themenkonfiguration

Kafka-Property Pub/Sub Lite-Attribut Beschreibung
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="dV7DQA4y7L7qKMxOHGc8kmZb6gHWkZLxLSo7Ja3t8sQHgM1RbUvT8FDCmfNOUyfqProEiKpRj Speicher pro Partition Alle Partitionen in einem Lite-Thema haben die gleiche konfigurierte Speicherkapazität. Die Gesamtspeicherkapazität eines Lite-Themas ist die Summe der Speicherkapazität aller Partitionen in dem Thema.
Aufbewahrungsdauer für Nachrichten Der maximale Zeitraum, für den Nachrichten in einem Lite-Thema gespeichert werden. Wenn Sie keine Aufbewahrungsdauer für Nachrichten angeben, werden Nachrichten im Lite-Thema so lange gespeichert, bis Sie die Speicherkapazität überschreiten.
In Pub/Sub Lite nicht konfigurierbar Veröffentlichungen werden erst bestätigt, wenn sie garantiert im replizierten Speicher beibehalten werden.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="w2C6ltfFLx0WhPQQ+xq7GmZb6gHWkZLxLSo7Ja3t8sQHgM1RbUvT8FDCmfNOUyfq+qGQHRLIt In Pub/Sub Lite nicht konfigurierbar Die maximale Nachrichtengröße, die an Pub/Sub Lite gesendet werden kann, beträgt 3,5 MiB. Nachrichtengrößen werden wiederholbar berechnet.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="uByJEasoVxsHiHGi2vZFpWZb6gHWkZLxLSo7Ja3t8sQHgM1RbUvT8FDCmfSTOUyfqgQgNEpY+timestamp> In Pub/Sub Lite nicht konfigurierbar Bei Verwendung der Consumer-Implementierung wird der Ereigniszeitstempel ausgewählt, sofern vorhanden, oder stattdessen der Veröffentlichungszeitstempel verwendet. Bei Verwendung von Beam sind sowohl Veröffentlichungs- als auch Ereigniszeitstempel verfügbar.

Weitere Informationen zu den Eigenschaften des Lite-Themas finden Sie unter Eigenschaften eines Lite-Themas.

Producer-Konfigurationsattribute

Pub/Sub Lite unterstützt das Producer-Verbindungsprotokoll. Einige Attribute ändern das Verhalten der Producer-Cloud-Clientbibliotheken. Einige gängige Attribute werden in der folgenden Tabelle erläutert.

Kafka-Property Pub/Sub Lite-Attribut Beschreibung
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="ka6ek6z5j1AUV6h0GyHmOWZb6gHWkZLxLSo7Ja3t8sRw5UOg9XUG3SbjKp2sc3wx1wx21dzg_%3FWJ-JST5UWC1WJJJJJJJJ5J5J50n5nWjlnnnv82 In Pub/Sub Lite nicht konfigurierbar Erstellen Sie ein Thema und ein Abo, das in etwa einer Verbrauchergruppe für ein einzelnes Thema in Pub/Sub Lite entspricht. Sie können die Console, die gcloud CLI, die API oder die Cloud-Clientbibliotheken verwenden.
In Pub/Sub Lite nicht konfigurierbar

Erforderlich bei Verwendung von Kafka Producer oder einer vergleichbaren Bibliothek für die Kommunikation über das Wire Protocol.

<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="/nUcmkQCz7NdVnO/fs/U8WZb6gHWkZLxLSo7Ja3t8sRqk6OxyqMTCHV662ootwKEp4gbAWt8">FsxyqMTCHV662ootwKEp3gb5Tzs7axyqMtCHV662ootwKep3gb5 In Pub/Sub Lite unterstützt Stapelverarbeitung wird unterstützt. Der empfohlene Wert für diesen Wert ist 10 MiB, um eine optimale Leistung zu erzielen.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="QnWVoAipx5CRcevnGcXwAGZb6gHWkZLxLSo7Ja3t8sRqk6OxyqMTCHV662ootwKE5j4zTzzynZ+ In Pub/Sub Lite unterstützt Stapelverarbeitung wird unterstützt. Der empfohlene Wert für diesen Wert ist 50 ms für eine optimale Leistung.
In Pub/Sub Lite unterstützt Der Server legt ein Limit von 20 MiB pro Batch fest. Legen Sie diesen Wert in Ihrem Kafka-Client auf einen Wert unter 20 MiB fest.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="9mE3X9aIpBVps4x1lRMwdGZb6gHWkZLxLSo7Ja3t8sRqk6OxyqMTUCHV662ootwKE8lIpBVps4x1lRMwdGZb6gHWkZLxLSo7Ja3t8sRqk6OxyqMTUCHV662ootwKE8lAxdoM2M662ootwKE8lAxdoM2M In Pub/Sub Lite unterstützt
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="pSX6SpdSWGS3KbkuJBUem2Zb6gHWkZLxLSo7Ja3t8sRqk6OxyqMTCHV662ootwKEufyeVlB0ORv"> In Pub/Sub Lite nicht unterstützt Sie müssen diesen Wert explizit auf none festlegen.

Attribute der Nutzerkonfiguration

Pub/Sub Lite unterstützt das Consumer Wire Protocol. Einige Attribute ändern das Verhalten der Cloud-Clientbibliotheken für Privatnutzer. Einige gängige Attribute werden in der folgenden Tabelle erläutert.

Kafka-Property Beschreibung
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="pSX6SpdSWGS3KbkuJBUem2Zb6gHWkZLxLSo7Ja3t8sQyhicHhp9oG2sYdjqrOOFMesHcoabWipmc4

Erforderlich, wenn die Kafka Consumer-Bibliothek oder eine entsprechende Bibliothek über das Wire-Protokoll verwendet wird.

<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="6Yq99Si1ofpPBF++wTnR6WZb6gHWkZLxLSo7Ja3t8sQyhicHhp9oG2sYdjqrO9MukQRfA+0 Diese Konfiguration wird nicht unterstützt oder wird nicht benötigt. Abos haben nach ihrer Erstellung garantiert einen definierten Offset-Speicherort.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="uByJEasoVxsHiHGi2vZFpWZb6gHWkZLxLSo7Ja3t8sQHgM1RbUvT8FDCmfSTOUyfqgQgNEpY+timestamp> Der Veröffentlichungszeitstempel ist immer von Pub/Sub Lite verfügbar und nimmt garantiert nicht pro Partition ab. Ereigniszeitstempel können vorhanden oder nicht vorhanden sein, je nachdem, ob sie der Nachricht bei der Veröffentlichung angehängt wurden. Bei Verwendung von Dataflow sind sowohl Veröffentlichungs- als auch Ereigniszeitstempel gleichzeitig verfügbar.
<aclass="external" l10n-attrs-original-order="href,class" l10n-encrypted-href="C1w6rZRsJ3qdhnqUpePxxmZb6gHWkZLxLSo7Ja3t8sQyhicHhp9oG2sYdjqrOhp9oG2sYdjqrOOFMUP9pyl0gsH8c0x2x24cvv8v8---------------- Impressions Legt ein weiches Limit für die Anzahl der Datensätze und Byte fest, die von „query()“-Aufrufen zurückgegeben werden, sowie die Anzahl der Byte, die von internen Abrufanforderungen zurückgegeben werden. Der Standardwert für „max.partition.fetch.bytes“ von 1 MiB kann den Durchsatz Ihres Clients einschränken. Sie sollten diesen Wert erhöhen.

Kafka- und Pub/Sub Lite-Features vergleichen

In der folgenden Tabelle werden Apache Kafka-Funktionen mit Pub/Sub Lite-Funktionen verglichen:

Feature Kafka Pub/Sub Lite
Nachrichtenreihenfolge Ja Ja
Nachrichten deduplizieren Ja Ja mit Dataflow
Push-Abos Nein Ja, wenn Sie Pub/Sub-Export verwenden
Transaktionen Ja Nein
Nachrichtenspeicher Begrenzt durch den verfügbaren Maschinenspeicher Unbegrenzt
Nachricht noch einmal abspielen Ja Ja
Logging und Monitoring Selbstverwaltet Automatisiert mit Cloud Monitoring
Streamverarbeitung Ja, mit Kafka Streams, Apache Beam oder Dataproc. Ja, mit Beam oder Dataproc.

In der folgenden Tabelle wird verglichen, welche Funktionen mit Kafka selbst gehostet werden und welche von Google mit Pub/Sub Lite verwaltet werden:

Feature Kafka Pub/Sub Lite
Verfügbarkeit Stellen Sie Kafka an zusätzlichen Standorten manuell bereit. Weltweit eingesetzt. Siehe locations.
Notfallwiederherstellung Erstellen und verwalten Sie Ihre eigene Sicherung und Replikation. Von Google verwaltet.
Infrastrukturverwaltung Virtuelle Maschinen (VMs) oder Maschinen manuell bereitstellen und betreiben. Sorgen Sie für eine konsistente Versionsverwaltung und Patches. Von Google verwaltet.
Kapazitätsplanung Planen Sie Speicher- und Rechenanforderungen manuell im Voraus. Von Google verwaltet. Sie können die Rechenleistung und den Speicherplatz jederzeit erhöhen.
Support 24-Stunden-Rufbereitschaft und -Support.

Kostenvergleich für Kafka und Pub/Sub Lite

Die Art und Weise, wie Sie Kosten in Pub/Sub Lite schätzen und verwalten, unterscheidet sich von in Kafka. Die Kosten für einen lokalen oder in der Cloud vorhandenen Kafka-Cluster umfassen die Kosten für Maschinen, Laufwerke, Netzwerke, eingehende und ausgehende Nachrichten. Dazu gehören auch die Gemeinkosten für die Verwaltung und Wartung dieser Systeme und der zugehörigen Infrastruktur. Wenn Sie einen Kafka-Cluster verwalten, müssen Sie die Maschinen manuell upgraden, die Clusterkapazität planen und eine Notfallwiederherstellung implementieren, die umfassende Planung und Tests umfasst. Sie müssen all diese verschiedenen Kosten zusammenfassen, um Ihre tatsächlichen Gesamtbetriebskosten (TCO) zu ermitteln.

Die Preise für Pub/Sub Lite umfassen die Reservierungskosten (veröffentlichte Byte, abonnierte Byte, vom Kafka-Proxy verarbeitete Byte) und die Kosten für den bereitgestellten Speicher. Sie zahlen zusätzlich zu den Gebühren für ausgehende Nachrichten nur für die Ressourcen, die Sie reservieren. Mit dem Preisrechner können Sie Ihre Kosten schätzen.

Migrationsworkflow

Verwenden Sie die folgenden Anweisungen, um ein Thema von einem Kafka-Cluster zu Pub/Sub Lite zu migrieren.

Pub/Sub Lite-Ressourcen konfigurieren

  1. Erstellen Sie eine Pub/Sub Lite-Reservierung für den erwarteten Durchsatz für alle Themen, die Sie migrieren.

    Verwenden Sie den Preisrechner von Pub/Sub Lite, um den aggregierten Durchsatz Ihrer vorhandenen Kafka-Themen zu berechnen. Weitere Informationen zum Erstellen von Reservierungen finden Sie unter Lite-Reservierungen erstellen und verwalten.

  2. Erstellen Sie für jedes entsprechende Thema in Kafka ein Pub/Sub Lite-Thema.

    Weitere Informationen zum Erstellen von Lite-Themen finden Sie unter Lite-Themen erstellen und verwalten.

  3. Erstellen Sie ein Pub/Sub Lite-Abo für jedes entsprechende Paar aus Nutzergruppe und Thema im Kafka-Cluster.

    Für eine Verbrauchergruppe mit dem Namen consumers, die topic-a und topic-b nutzt, müssen Sie beispielsweise ein Abo consumers-a für topic-a und ein Abo consumers-b mit topic-b erstellen. Weitere Informationen zum Erstellen von Abos finden Sie unter Lite-Abos erstellen und verwalten.

Bei Pub/Sub Lite authentifizieren

Wählen Sie je nach Typ Ihres Kafka-Clients eine der folgenden Methoden aus:

Java-basierte Kafka-Clients Version 3.1.0 oder höher mit Neuerstellung

Für Java-basierte Kafka-Clients der Version 3.1.0 oder höher, die auf der Instanz, auf der Sie den Kafka-Client ausführen, neu erstellt werden können:

  1. Installieren Sie das Paket com.google.cloud:pubsublite-kafka-auth:

  2. Rufen Sie mithilfe von com.google.cloud.pubsublite.kafka.ClientParameters.getParams die erforderlichen Parameter für die Authentifizierung bei Pub/Sub Lite ab.

    Mit der Methode getParams() (siehe Codebeispiel) werden die folgenden JAAS- und SASL-Konfigurationen als Parameter für die Authentifizierung bei Pub/Sub Lite initialisiert:

    security.protocol=SASL_SSL
    sasl.mechanism=OAUTHBEARER
    sasl.oauthbearer.token.endpoint.url=http://localhost:14293
    sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.secured.OAuthBearerLoginCallbackHandler
    

Java-basierte Kafka-Clients mit Version 3.1.0 oder höher ohne Neuerstellung

Für Kafka-Clients, die KIP-768 unterstützen, wird die OAUTHBEARER-Authentifizierung nur für die Konfiguration mit einem Python-Sidecar-Skript unterstützt. Dazu gehört ab Januar 2022 die Java-Version 3.1.0 oder höher.

Führen Sie auf der Instanz, auf der Sie Ihren Kafka-Client ausführen, die folgenden Schritte aus:

  1. Installieren Sie Python 3.6 oder höher.

    Siehe Python installieren.

  2. Installieren Sie das Google-Authentifizierungspaket: pip install google-auth

    Diese Bibliothek vereinfacht die verschiedenen Server-zu-Server-Authentifizierungsmechanismen für den Zugriff auf Google APIs. Weitere Informationen finden Sie auf der Seite google-auth.

  3. Führen Sie das Skript kafka_gcp_credentials.py aus.

    Dieses Skript startet einen lokalen HTTP-Server und ruft die standardmäßigen Google Cloud-Anmeldedaten in der Umgebung mit google.auth.default() ab.

    Das Hauptkonto in den abgerufenen Anmeldedaten muss die Berechtigung pubsublite.locations.openKafkaStream für das von Ihnen verwendete Google Cloud-Projekt und den Standort haben, zu dem Sie eine Verbindung herstellen. Die Rollen „Pub/Sub Lite Publisher“ (roles/pubsublite.publisher) und „Pub/Sub Lite-Abonnenten“ (roles/pubsublite.subscriber) haben diese erforderliche Berechtigung. Fügen Sie diese Rollen Ihrem Hauptkonto hinzu.

    Die Anmeldedaten werden bei der SASL/OAUTHBEARER-Authentifizierung für den Kafka-Client verwendet.

    Die folgenden Parameter sind in Ihren Properties erforderlich, um sich über den Kafka-Client bei Pub/Sub Lite zu authentifizieren:

    security.protocol=SASL_SSL
    sasl.mechanism=OAUTHBEARER
    sasl.oauthbearer.token.endpoint.url=localhost:14293
    sasl.login.callback.handler.class=org.apache.kafka.common.security.oauthbearer.secured.OAuthBearerLoginCallbackHandler
    sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule \
      required clientId="unused" clientSecret="unused" \
      extension_pubsubProject="PROJECT_ID";
    

    Ersetzen Sie PROJECT_ID durch die ID des Projekts, in dem Pub/Sub Lite ausgeführt wird.

Alle anderen Clients ohne Neuerstellung

Führen Sie für alle anderen Clients die folgenden Schritte aus:

  1. Laden Sie eine JSON-Datei mit dem Dienstkontoschlüssel für das Dienstkonto herunter, das Sie für Ihren Client verwenden möchten.

  2. Codieren Sie die Dienstkontodatei mit einer base64-Codierung als Authentifizierungsstring.

    Auf Linux- oder macOS-Systemen können Sie den (oft standardmäßig installierten) base64-Befehl so verwenden:

    base64 < my_service_account.json > password.txt
    

    Sie können den Inhalt der Passwortdatei für die Authentifizierung mit den folgenden Parametern verwenden.

    Java

    security.protocol=SASL_SSL
    sasl.mechanism=PLAIN
    sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
     username="PROJECT_ID" \
     password="contents of base64 encoded password file";
    

    Ersetzen Sie PROJECT_ID durch die ID des Projekts, in dem Pub/Sub ausgeführt wird.

    Librdkafka

    security.protocol=SASL_SSL
    sasl.mechanism=PLAIN
    sasl.username=PROJECT_ID
    sasl.password=contents of base64 encoded password file
    

    Ersetzen Sie PROJECT_ID durch die ID des Projekts, in dem Pub/Sub ausgeführt wird.

Daten mit Kafka Connect klonen

Das Pub/Sub Lite-Team verwaltet eine Implementierung einer Kafka Connect-Senke. Sie können diese Implementierung so konfigurieren, dass Daten mithilfe eines Kafka Connect-Clusters aus einem Kafka-Thema in ein Pub/Sub Lite-Thema kopiert werden.

Informationen zum Konfigurieren des Connectors für das Kopieren der Daten finden Sie unter Kafka-Connector für Pub/Sub-Gruppen.

Wenn Sie dafür sorgen möchten, dass die Partitionsaffinität nicht vom Migrationsprozess betroffen ist, müssen das Kafka-Thema und das Pub/Sub Lite-Thema die gleiche Anzahl von Partitionen haben und das Attribut pubsublite.ordering.mode auf KAFKA gesetzt ist. Dadurch leitet der Connector Nachrichten an die Pub/Sub Lite-Partition mit demselben Index wie die Kafka-Partition weiter, in der sie ursprünglich veröffentlicht wurden.

Nutzer migrieren

Das Ressourcenmodell von Pub/Sub Lite unterscheidet sich von dem von Kafka. Insbesondere ist ein Abo im Gegensatz zu einer Verbrauchergruppe eine explizite Ressource, die genau einem Thema zugeordnet ist. Aus diesem Grund muss für jeden Bereich in der Kafka Consumer API, für den ein topic übergeben werden muss, stattdessen der vollständige Abopfad übergeben werden.

Zusätzlich zu den SASL-Konfigurationen für den Kafka-Client sind die folgenden Einstellungen auch erforderlich, wenn die Kafka Consumer API für die Interaktion mit Pub/Sub Lite verwendet wird.

bootstrap.servers=REGION-kafka-pubsub.googleapis.com:443
group.id=unused

Ersetzen Sie REGION durch die Region, in der sich Ihr Pub/Sub Lite-Abo befindet.

Bevor Sie den ersten Pub/Sub Lite-Nutzerjob für ein bestimmtes Abo starten, können Sie einen Administratorsuchvorgang initiieren, um den anfänglichen Speicherort für den Nutzer festzulegen. Warten Sie aber nicht, bis das der Fall ist.

Wenn Sie die Nutzer starten, stellen sie sich wieder mit dem aktuellen Offset im Nachrichtenrückstand wieder her. Führen Sie die alten und neuen Clients parallel aus, solange es dauert, ihr Verhalten zu überprüfen. Schalten Sie dann die alten Nutzerclients herunter.

Producer migrieren

Zusätzlich zu den SASL-Konfigurationen für den Kafka-Client ist Folgendes als Producer-Parameter erforderlich, wenn die Kafka Producer API für die Interaktion mit Pub/Sub Lite verwendet wird.

bootstrap.servers=REGION-kafka-pubsub.googleapis.com:443

Ersetzen Sie REGION durch die Region, in der sich Ihr Pub/Sub Lite-Thema befindet.

Nachdem Sie alle Nutzer des Themas migriert haben, um Daten aus Pub/Sub Lite zu lesen, verschieben Sie den Producer-Traffic zum Schreiben direkt in Pub/Sub Lite.

Migrieren Sie die Producer-Clients nach und nach, um in das Pub/Sub Lite-Thema anstatt in das Kafka-Thema zu schreiben.

Starten Sie die Producer-Clients neu, um neue Konfigurationen zu übernehmen.

Kafka Connect deaktivieren

Nachdem Sie alle Ersteller zum direkten Schreiben in Pub/Sub Lite migriert haben, kopiert der Connector keine Daten mehr.

Sie können die Kafka Connect-Instanz deaktivieren.

Fehlerbehebung für Kafka-Verbindungen

Da Kafka-Clients über ein spezielles Übertragungsprotokoll kommunizieren, können wir nicht bei allen Anfragen Fehlermeldungen ausgeben. Verlassen Sie sich auf die mit der Meldung gesendeten Fehlercodes.

Weitere Details zu Fehlern im Client erhalten Sie, wenn Sie die Logging-Ebene für das Präfix org.apache.kafka auf FINEST setzen.

Niedriger Durchsatz und zunehmender Rückstand

Es gibt mehrere Gründe, warum ein niedriger Durchsatz und ein zunehmender Rückstand auftreten können. Ein möglicher Grund könnte eine unzureichende Kapazität sein.

Sie können die Durchsatzkapazität auf Themenebene oder mithilfe von Reservierungen konfigurieren. Wenn eine unzureichende Durchsatzkapazität für das Abonnieren und Veröffentlichen konfiguriert ist, wird der entsprechende Durchsatz für Abonnieren und Veröffentlichen gedrosselt.

Dieser Durchsatzfehler wird durch den Messwert topic/flow_control_status für Publisher und den Messwert subscription/flow_control_status für Abonnenten signalisiert. Der Messwert hat folgende Status:

  • NO_PARTITION_CAPACITY: Diese Meldung gibt an, dass das Durchsatzlimit pro Partition erreicht wurde.

  • NO_RESERVATION_CAPACITY: Diese Meldung gibt an, dass das Durchsatzlimit pro Reservierung erreicht ist.

Sie können sich die Auslastungsdiagramme für das Veröffentlichungs- und Abokontingent für Themen oder Reservierungen ansehen und prüfen, ob die Auslastung bei oder nahe 100 % liegt.

Erhöhen Sie die Durchsatzkapazität des Themas oder der Reservierung, um dieses Problem zu beheben.

Fehlermeldung „Fehler bei der Themenautorisierung“

Für die Veröffentlichung mit der Kafka API muss der Lite-Dienst-Agent die entsprechenden Berechtigungen zum Veröffentlichen im Pub/Sub Lite-Thema haben.

In Ihrem Client wird der Fehler TOPIC_AUTHORIZATION_FAILED angezeigt, wenn Sie nicht die erforderlichen Berechtigungen zum Veröffentlichen im Pub/Sub Lite-Thema haben.

Prüfen Sie zum Beheben des Problems, ob der Lite-Dienst-Agent für das Projekt in der Authentifizierungskonfiguration übergeben wurde.

Ungültige Meldung für Thema

Wenn Sie ein Abo über die Kafka API erstellen möchten, muss der vollständige Abopfad an allen Stellen übergeben werden, an denen in der Kafka Consumer API ein topic erwartet wird.

In deinem Consumer-Client wird der Fehler INVALID_TOPIC_EXCEPTION angezeigt, wenn du keinen gut formatierten Abopfad übergibst.

Ungültige Anfrage, wenn keine Reservierungen verwendet werden

Bei Verwendung der Kafka-Protokollunterstützung muss für alle Themen eine Reservierung vorhanden sein, damit die Nutzung in Rechnung gestellt werden kann.