Nachdem ein Thema erstellt wurde, können Sie die Themenkonfiguration bearbeiten, um diese Eigenschaften zu aktualisieren: die Anzahl der Partitionen und Themenkonfigurationen, die nicht standardmäßig auf die bereits auf Clusterebene festgelegten Eigenschaften festgelegt sind. Sie können die Anzahl der Partitionen nur erhöhen, nicht verringern.
Wenn Sie ein einzelnes Thema aktualisieren möchten, können Sie die Google Cloud Console, die Google Cloud CLI, die Clientbibliothek, die Managed Kafka API oder die Open-Source- Apache Kafka APIs verwenden.
Erforderliche Rollen und Berechtigungen zum Bearbeiten eines Themas
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle „Managed Kafka-Themeneditor“ (roles/managedkafka.topicEditor) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Bearbeiten eines Themas benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Bearbeiten eines Themas erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen , um die notwendigen Berechtigungen anzuzeigen, die erforderlich sind:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind zum Bearbeiten eines Themas erforderlich:
-
Thema aktualisieren:
managedkafka.topics.update
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Thema bearbeiten
So bearbeiten Sie ein Thema:
Console
Rufen Sie in der Google Cloud Console die Seite Cluster auf.
Die in einem Projekt erstellten Cluster werden aufgelistet.
Klicken Sie auf den Cluster, zu dem das Thema gehört, das Sie bearbeiten möchten.
Die Seite Clusterdetails wird geöffnet. Auf der Seite mit den Clusterdetails werden auf dem Tab Ressourcen die Themen aufgelistet.
Klicken Sie auf das Thema, das Sie bearbeiten möchten.
Die Seite Themendetails wird geöffnet.
Klicken Sie auf Bearbeiten, um die Änderungen vorzunehmen.
Klicken Sie nach den Änderungen auf Speichern.
gcloud
-
Aktivieren Sie Cloud Shell in der Google Cloud Console.
Unten in der Google Cloud Console wird eine Cloud Shell Sitzung gestartet und eine Eingabeaufforderung angezeigt. Cloud Shell ist eine Shell-Umgebung in der das Google Cloud CLI bereits installiert ist und Werte für Ihr aktuelles Projekt bereits festgelegt sind. Das Initialisieren der Sitzung kann einige Sekunden dauern.
Führen Sie den
gcloud managed-kafka topics updateBefehl aus:gcloud managed-kafka topics update TOPIC_ID \ --cluster=CLUSTER_ID \ --location=LOCATION_ID \ --partitions=PARTITIONS \ --configs=CONFIGSMit diesem Befehl wird die Konfiguration eines vorhandenen Themas im angegebenen Managed Service for Apache Kafka-Cluster geändert. Mit diesem Befehl können Sie die Anzahl der Partitionen erhöhen und Konfigurationseinstellungen auf Themenebene aktualisieren.
Ersetzen Sie Folgendes:
- TOPIC_ID: Die ID des Themas.
- CLUSTER_ID: Die ID des Clusters, der das Thema enthält.
- LOCATION_ID: Der Standort des Clusters.
- PARTITIONS: Optional: Die aktualisierte Anzahl der Partitionen für das Thema. Sie können die Anzahl der Partitionen nur erhöhen, nicht verringern.
- CONFIGS: Optional: Eine Liste der zu aktualisierenden Konfiguration
seinstellungen. Geben Sie die Einstellungen als durch Kommas getrennte Liste von Schlüssel/Wert-Paaren an. Beispiel:
retention.ms=3600000,retention.bytes=10000000.
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
-
PROJECT_ID: Ihre Google Cloud Projekt-ID -
LOCATION: Der Standort des Clusters -
CLUSTER_ID: Die ID des Clusters -
TOPIC_ID: Die ID des Themas -
UPDATE_MASK: Die zu aktualisierenden Felder als durch Kommas getrennte Liste mit vollständig qualifizierten Namen. Beispiel:partitionCount -
PARTITION_COUNT: Die aktualisierte Anzahl der Partitionen für das Thema
HTTP-Methode und URL:
PATCH https://managedkafka.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/topics/TOPIC_ID?updateMask=UPDATE_MASK
JSON-Text anfordern:
{
"name": "TOPIC_ID",
"partitionCount": PARTITION_COUNT
}
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.managedkafka.v1.OperationMetadata",
"createTime": "CREATE_TIME",
"target": "projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID",
"verb": "update",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
Go
Folgen Sie der Einrichtungsanleitung für Go unter Clientbibliotheken installieren, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Managed Service for Apache Kafka Go API.
Richten Sie Standardanmeldedaten für Anwendungen(ADC) ein, um sich bei Managed Service for Apache Kafka zu authentifizieren. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.
Java
Folgen Sie der Einrichtungsanleitung für Java unter Clientbibliotheken installieren, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Managed Service for Apache Kafka Java API.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Managed Service for Apache Kafka zu authentifizieren. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.
Python
Folgen Sie der Einrichtungsanleitung für Python unter Clientbibliotheken installieren, bevor Sie dieses Beispiel anwenden. Weitere Informationen finden Sie in der Referenzdokumentation zur Managed Service for Apache Kafka Python API.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Managed Service for Apache Kafka zu authentifizieren. Weitere Informationen finden Sie unter ADC für eine lokale Entwicklungsumgebung einrichten.
Nachrichtenspeicherung konfigurieren
Kafka speichert Nachrichten in Logsegmentdateien. Standardmäßig löscht Kafka Segmentdateien nach einer Aufbewahrungsdauer oder wenn eine Partition einen Grenzwert für die Datengröße überschreitet. Sie können dieses Verhalten ändern, indem Sie die Logkomprimierungaktivieren. Wenn die Logkomprimierung aktiviert ist, behält Kafka nur den letzten Wert für jeden Schlüssel bei.
Google Cloud Managed Service for Apache Kafka verwendet mehrstufigen Speicher. Das bedeutet, dass abgeschlossene Logsegmente nicht lokal, sondern remote gespeichert werden. Weitere Informationen zum mehrstufigen Speicher finden Sie in der Apache Kafka-Dokumentation unter Tiered Storage.
Aufbewahrungswerte festlegen
Wenn die Logkomprimierung nicht aktiviert ist, steuern die folgenden Einstellungen, wie Kafka Logsegmentdateien speichert:
retention.ms: Die maximale Aufbewahrungsdauer für Segmentdateien in Millisekunden.retention.bytes: Die maximale Anzahl von Byte, die pro Partition gespeichert werden sollen. Wenn die Daten in einer Partition diesen Wert überschreiten, verwirft Kafka ältere Segmentdateien.
Verwenden Sie die gcloud CLI oder die Kafka CLI, um diese Einstellungen zu aktualisieren:
gcloud
Führen Sie den
gcloud managed-kafka topics update
Befehl aus, um die Nachrichtenspeicherung festzulegen.
gcloud managed-kafka topics update TOPIC_ID \
--cluster=CLUSTER_ID \
--location=LOCATION_ID \
--configs=retention.ms=RETENTION_PERIOD,retention.bytes=MAX_BYTES
Ersetzen Sie Folgendes:
- TOPIC_ID: Die ID des Themas.
- CLUSTER_ID: Die ID des Clusters, der das Thema enthält.
- LOCATION_ID: Der Standort des Clusters.
- RETENTION_PERIOD: Die maximale Aufbewahrungsdauer für Segmentdateien in Millisekunden.
- MAX_BYTES: Die maximale Anzahl von Byte, die pro Partition gespeichert werden sollen.
Kafka CLI
Installieren Sie die Kafka-Befehlszeilentools auf einer Compute Engine-VM, bevor Sie diesen Befehl ausführen. Die VM muss ein Subnetz erreichen können, das mit Ihrem Managed Service for Apache Kafka Cluster verbunden ist. Folgen Sie der Anleitung unter Nachrichten mit den Kafka-Befehlszeilentools produzieren und nutzen.
Führen Sie den Befehl kafka-configs.sh aus:
kafka-configs.sh --alter \
--bootstrap-server=BOOTSTRAP_ADDRESS \
--command-config client.properties \
--entity-type topics \
--entity-name TOPIC_ID \
--add-config retention.ms=RETENTION_PERIOD,retention.bytes=MAX_BYTES
Ersetzen Sie Folgendes:
- BOOTSTRAP_ADDRESS: Die Bootstrap-Adresse des Managed Service for Apache Kafka-Clusters.
- TOPIC_ID: Die ID des Themas.
- RETENTION_PERIOD: Die maximale Aufbewahrungsdauer für Segmentdateien in Millisekunden.
- MAX_BYTES: Die maximale Anzahl von Byte, die pro Partition gespeichert werden sollen.
Logkomprimierung aktivieren
Wenn die Logkomprimierung aktiviert ist, speichert Kafka nur die letzte Nachricht für jeden Schlüssel. Die Logkomprimierung ist standardmäßig deaktiviert. Setzen Sie die Konfiguration cleanup.policy für
ein Thema auf "compact", um die Logkomprimierung zu aktivieren:
gcloud
Führen Sie den
gcloud managed-kafka topics update
Befehl aus.
gcloud managed-kafka topics update TOPIC_ID \
--cluster=CLUSTER_ID \
--location=LOCATION_ID \
--configs=cleanup.policy=compact
Ersetzen Sie Folgendes:
- TOPIC_ID: Die ID des Themas.
- CLUSTER_ID: Die ID des Clusters, der das Thema enthält.
- LOCATION_ID: Der Standort des Clusters.
Kafka CLI
Installieren Sie die Kafka-Befehlszeilentools auf einer Compute Engine-VM, bevor Sie diesen Befehl ausführen. Die VM muss ein Subnetz erreichen können, das mit Ihrem Managed Service for Apache Kafka Cluster verbunden ist. Folgen Sie der Anleitung unter Nachrichten mit den Kafka-Befehlszeilentools produzieren und nutzen.
Führen Sie den Befehl kafka-configs.sh aus:
kafka-configs.sh --alter \
--bootstrap-server=BOOTSTRAP_ADDRESS \
--command-config client.properties \
--entity-type topics \
--entity-name TOPIC_ID \
--add-config cleanup.policy=compact
Ersetzen Sie Folgendes:
- BOOTSTRAP_ADDRESS: Die Bootstrap-Adresse des Managed Service for Apache Kafka-Clusters.
- TOPIC_ID: Die ID des Themas.
Beschränkungen
Sie können Themenkonfigurationen für Remote-Speicher wie
remote.storage.enablenicht überschreiben.Sie können Themenkonfigurationen für Logsegmentdateien wie
segment.bytesnicht überschreiben.Wenn Sie die Logkomprimierung für ein Thema aktivieren, wird der mehrstufige Speicher für dieses Thema implizit deaktiviert. Alle Logdateien für das Thema werden lokal gespeichert.