Wenn Sie Nachrichten auf dem globalen Pub/Sub-Endpunkt veröffentlichen, speichert Pub/Sub die Nachrichten automatisch in der nächsten Google Cloud-Region. Wenn Sie festlegen möchten, in welchen Regionen Ihre Nachrichten gespeichert und verarbeitet werden, können Sie eine Nachrichtenspeicherrichtlinie für Ihr Thema konfigurieren.
Übersicht über die Nachrichtenspeicherrichtlinie
Sie können eine Nachrichtenspeicherrichtlinie festlegen, wenn Sie ein neues Thema erstellen oder ein Thema über die Console, die Google Cloud CLI oder die REST APIs aktualisieren.
Die Nachrichtenspeicherrichtlinie gilt nur für den Nachrichteninhalt. Die Richtlinie gilt nicht für andere Daten wie Themennamen, Labels oder IAM-Einstellungen (Identity and Access Management).
Pub/Sub speichert Nachrichten, wenn ein Client sie in Pub/Sub veröffentlicht. Mit einer Nachrichtenspeicherrichtlinie wird sichergestellt, dass Pub/Sub Nachrichten nur in den von Ihnen angegebenen Google Cloud-Regionen speichert und verarbeitet, unabhängig davon, wo die Veröffentlichungs- oder Aboanfragen ihren Ursprung haben. Wenn die Richtlinie mehrere Regionen für Veröffentlichungsvorgänge zulässt, speichert Pub/Sub die Nachricht in einer zulässigen Region, die der Stelle am nächsten liegt, an der die veröffentlichte Nachricht in das Google Cloud-Netzwerk gelangt.
Wenn Sie eine Nachrichtenspeicherrichtlinie angeben, können Sie enforceInTransit
auf True
festlegen. Dieses Flag regelt Folgendes:
Publish-, Pull- und StreamingPull-Anfragen, die in einer Region empfangen werden, die in der Nachrichtenspeicherrichtlinie nicht zulässig ist, werden mit einem
FAILED_PRECONDITION
-Fehler abgelehnt.Die Zustellung für Push-Abos erfolgt nur innerhalb der zulässigen Cloud-Regionen. In einigen Fällen kann diese Einschränkung die Nachrichtenübermittlung für Push-Abos vollständig pausieren. Wenn ein Push-Abo in einen solchen Status wechselt, weil die Push-Standorte durch eine Kombination aus Faktoren wie Speicherort der Nachrichten, zulässige Regionen und Speicherort der Exportressourcen zu stark eingeschränkt sind, wird dieser Status in Stackdriver angezeigt.
Richtlinien für den Nachrichtenspeicher für neue Themen
Wenn Sie beim Erstellen eines Themas keine Nachrichtenspeicherrichtlinie angeben, wird die Nachrichtenspeicherrichtlinie automatisch anhand der geltenden Organisationsrichtlinie Ressourcenstandortbeschränkung festgelegt. Wenn keine Organisationsrichtlinie in Kraft ist, lässt die Nachrichtenspeicherrichtlinie alle Regionen zu.
Wenn keine Nachrichtenspeicherrichtlinie angegeben ist, wird das Flag
enforceInTransit
ebenfalls anhand der aktiven Organisationsrichtlinie Übertragungsregionen für Pub/Sub-Nachrichten erzwingen festgelegt. Weitere Informationen zu dieser Organisationsrichtlinie finden Sie unter Einschränkungen für Organisationsrichtlinien.Wenn Sie beim Erstellen eines Themas eine Nachrichtenspeicherrichtlinie angeben, kann die Nachrichtenspeicherrichtlinie nur die Regionen enthalten, die von der effektiven Organisationsrichtlinie Ressourcenstandortbeschränkung zugelassen werden. Wenn keine Organisationsrichtlinien gelten, kann die Nachrichtenspeicherrichtlinie eine beliebige Region enthalten.
Richtlinien für den Nachrichtenspeicher für vorhandene Themen
Wenn eine Organisationsrichtlinie aktualisiert wird, werden die Änderungen nicht automatisch auf vorhandene Themen übertragen. Daher ist es möglich, dass die Nachrichtenspeicherrichtlinie eines vorhandenen Themas nicht mit den neuesten Organisationsrichtlinien übereinstimmt. Weitere Informationen finden Sie unter Unterschiede zwischen Richtlinien für Unternehmen und Themen verwalten.
Wenn die Nachrichtenspeicherrichtlinie eines Themas aktualisiert wird, werden die Änderungen nicht auf bereits veröffentlichte Nachrichten übertragen. Nachrichten, die bereits aufgrund einer älteren Richtlinie gespeichert wurden, werden nicht verschoben, um der neuen Richtlinie zu entsprechen. Die Änderungen gelten nur für Nachrichten, die nach der Aktualisierung veröffentlicht wurden.
Ausnahmen
Die Richtlinie gibt eine Liste der zulässigen Google Cloud-Regionsnamen an. Daher werden die folgenden Elemente nicht unterstützt:
- Ausschlusslisten
- Zonen oder Standorte mit mehreren Regionen
Wenn Sie eine Nachricht mit einem Reihenfolgeschlüssel veröffentlichen und die Nachrichtenspeicherrichtlinie die nächstgelegene Region ausschließt, gibt der Pub/Sub-Dienst einen Fehler zurück.
Richtlinien für den Nachrichtenspeicher konfigurieren
Es gibt zwei Möglichkeiten, Richtlinien für den Nachrichtenspeicher für Themen zu konfigurieren:
- Legen Sie eine Richtlinie für den Nachrichtenspeicher mit einer Organisationsrichtlinie fest.
- Konfigurieren Sie beim Erstellen eines Themas eine Richtlinie für die Nachrichtenspeicherung.
Richtlinie für den Nachrichtenspeicher mit einer Organisationsrichtlinie festlegen
Console
Wenn Sie eine Nachrichtenspeicherrichtlinie für mehrere Themen konfigurieren möchten, legen Sie eine Organisationsrichtlinie für die Ressourcen-Standortbeschränkung fest.
Rufen Sie in der Identity and Access Management Console die Seite Organisationsrichtlinien auf.
Wählen Sie den Knoten der Ressourcenhierarchie (Organisation, Ordner oder Projekt) aus, für den Sie eine Organisationsrichtlinie festlegen möchten.
Geben Sie in das Filterfeld Beschränkung von Ressourcenstandorten ein.
Klicken Sie auf Google Cloud – Beschränkung der Ressourcenstandorte.
Klicken Sie auf BEARBEITEN.
Fügen Sie nach Bedarf Regionen hinzu oder entfernen Sie sie.
Diese Einstellungen werden dann für neue Themen übernommen. Änderungen werden nicht automatisch auf vorhandene Themen übertragen. Wenn Sie vorhandene Themen aktualisieren möchten, müssen Sie einen Aktualisierungsvorgang ausführen.
Weitere Informationen zu Organisationsrichtlinien finden Sie unter Google Cloud-Ressourcen verwalten.
Nachrichtenspeicherrichtlinie beim Erstellen eines Themas konfigurieren
Console
Wenn Sie die Google Cloud Console verwenden, können Sie beim Erstellen eines Themas keine Nachrichtenspeicherrichtlinie konfigurieren. Stattdessen wird für alle neuen Themen automatisch die Organisationsrichtlinie Ressourcen-Standortbeschränkung übernommen.
Nachdem Sie ein Thema erstellt haben, können Sie die Nachrichtenspeicherrichtlinie jedoch in der Console mit einem Aktualisierungsvorgang ändern.
gcloud-CLI
Verwenden Sie den Befehl gcloud pubsub topics create
mit dem Flag --message-storage-policy-allowed-regions
, um ein Thema mit einer bestimmten Nachrichtenspeicherrichtlinie zu erstellen:
gcloud pubsub topics create TOPIC_ID \ --message-storage-policy-allowed-regions=REGION1,REGION2
Ersetzen Sie Folgendes:
TOPIC_ID
: Die ID oder der Name des neuen Themas.REGION1, REGION2
: Eine durch Kommas getrennte Liste der unterstützten Google Cloud-Regionen.
REST
Verwenden Sie die Methode projects.topics.create
, um ein Thema mit einer Nachrichtenspeicherrichtlinie zu erstellen.
Die Anfrage muss mit einem Zugriffstoken im Header Authorization
authentifiziert werden. So rufen Sie ein Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen ab: gcloud auth application-default print-access-token
.
POST https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
Authorization: Bearer $(gcloud auth application-default print-access-token)
Content-Type: application/json --data @response-body.json
Geben Sie im Anfragetext die folgenden Felder an:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": ["REGION"],
"enforceInTransit": true
}
}
Wobei:
PROJECT_ID ist die Projekt-ID.
TOPIC_ID ist Ihre Themen-ID.
REGION ist die von Ihnen angegebene Region.
Beispielantwort:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": [
"REGION"
],
"enforceInTransit": true
}
}
Weitere Informationen zum Konfigurieren von Richtlinien für die Nachrichtenspeicherung finden Sie in den folgenden API-Referenzen:
Richtlinien für den Nachrichtenspeicher aktualisieren
Console
Öffnen Sie in der Google Cloud Console die Seite Themendetails.
Wählen Sie ein Thema aus, das Sie aktualisieren möchten.
Sie können mehrere Themen auswählen.
Wählen Sie im Infofeld den Tab Speicherrichtlinie aus.
Dieser Bereich ist möglicherweise standardmäßig minimiert. Wenn es minimiert ist, klicken Sie auf Infofeld ansehen.
Wählen Sie nach Bedarf so viele Regionen aus oder deaktivieren Sie die Auswahl so vieler Regionen.
Klicken Sie auf Aktualisieren.
gcloud-CLI
Wenn Sie die in der Richtlinie für Ressourcenstandorte Ihrer Organisation definierte Nachrichtenspeicherrichtlinie auf ein Thema anwenden möchten, führen Sie den folgenden gcloud pubsub topics update
-Befehl aus:
gcloud pubsub topics update TOPIC_ID \ --recompute-message-storage-policy
Wenn Sie die Speicherrichtlinie für Nachrichten eines Themas für bestimmte Regionen aktualisieren möchten, führen Sie den Befehl gcloud pubsub topics update
mit dem Flag --message-storage-policy-allowed-regions
aus:
gcloud pubsub topics update TOPIC_ID \ --message-storage-policy-allowed-regions=REGION1,REGION2
Ersetzen Sie Folgendes:
TOPIC_ID
: die ID des Themas, das Sie aktualisieren.REGION1, REGION2
: Eine durch Kommas getrennte Liste der unterstützten Google Cloud-Regionen.
REST
Verwenden Sie die Methode projects.topics.patch
, um ein Thema mit einer Richtlinie für die Nachrichtenspeicherung zu aktualisieren.
Die Anfrage muss mit einem Zugriffstoken im Header Authorization
authentifiziert werden. So rufen Sie ein Zugriffstoken für die aktuellen Standardanmeldedaten für Anwendungen ab: gcloud auth application-default print-access-token
.
PATCH https://pubsub.googleapis.com/v1/projects/PROJECT_ID/topics/TOPIC_ID
Authorization: Bearer $(gcloud auth application-default print-access-token)
Content-Type: application/json --data @response-body.json
Geben Sie im Anfragetext die folgenden Felder an:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": ["REGION"], // Replace with your required region
"enforceInTransit": true
}
}
Wobei:
PROJECT_ID ist die Projekt-ID.
TOPIC_ID ist Ihre Themen-ID.
REGION ist die von Ihnen angegebene Region.
Beispielantwort:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": [
"REGION"
],
"enforceInTransit": true
}
}
Weitere Informationen zum Aktualisieren von Richtlinien für die Nachrichtenspeicherung finden Sie in den folgenden API-Referenzen.
Unterschiede zwischen Richtlinien für Unternehmen und Themen verwalten
Unterschiede zwischen Richtlinien für Unternehmen und Themen ansehen
Console
In der Google Cloud Console werden alle Unterschiede zwischen der Organisationsrichtlinie und den Nachrichtenspeicherrichtlinien einzelner Themen angezeigt.
So prüfen Sie, ob Themen nicht mehr mit Ihrer Organisationsrichtlinie übereinstimmen:
Rufen Sie die Seite Themendetails auf.
Wählen Sie ein Thema aus.
Wählen Sie im Infofeld den Tab Speicherrichtlinie aus.
Dieser Bereich ist möglicherweise standardmäßig minimiert. Wenn es minimiert ist, klicken Sie auf Infofeld ansehen.
Ihre Speicherrichtlinien werden im Steuerfeld zusammen mit allen Unterschieden zwischen den Richtlinien für Organisationen und Themen angezeigt.
gcloud-CLI
Führen Sie den folgenden Befehl aus, um die aktuelle Richtlinie zu prüfen, die einem Thema zugewiesen ist:
gcloud pubsub topics describe TOPIC_ID
Ersetzen Sie Folgendes:
TOPIC_ID
: die ID des Themas, das Sie prüfen.
Unterschiede zwischen Richtlinien für Unternehmen und Themen beheben
Console
Öffnen Sie in der Google Cloud Console die Seite Themendetails.
Wählen Sie ein Thema aus.
Wählen Sie im Infofeld den Tab Speicherrichtlinie aus.
Dieser Bereich ist möglicherweise standardmäßig minimiert. Wenn es minimiert ist, klicken Sie auf Infofeld ansehen.
Ihre Speicherrichtlinien werden im Steuerfeld zusammen mit etwaigen Abweichungen angezeigt.
Falls Abweichungen vorliegen, werden im Infobereich drei Optionen angezeigt, mit denen Sie die Speicherrichtlinie des Themas mit Ihrer Organisationsrichtlinie synchronisieren können:
Mit Themen ist die Speicherung an nicht zulässigen Speicherorten möglich.
Aktualisieren Sie, um die Speicherung nur dort zu ermöglichen, wo Ihre Richtlinien dies zulassen.
Das Thema erlaubt die Speicherung an einigen zulässigen Speicherorten nicht.
Aktualisieren Sie, um die Speicherung überall dort zu ermöglichen, wo Ihre Richtlinien dies zulassen.
Die Themen sind sowohl für nicht zulässige als auch für zulässige Standorte veraltet.
Aktualisieren Sie, um die Speicherung dort zu erlauben, wo Ihre Richtlinien dies zulassen.
Wählen Sie die entsprechende Option aus, um Ihre Probleme zu beheben.
Klicken Sie auf Thema aktualisieren.
Das Dialogfeld Mit der Speicherrichtlinie der Organisation synchronisieren wird geöffnet.
Klicken Sie auf Thema aktualisieren.
Monitoring und Fehlerbehebung
Damit Sie nachvollziehen können, wo Nachrichtendaten gespeichert werden, bietet Pub/Sub Messwerte aufgeschlüsselt nach Google Cloud-Region.
Sie können diese Messwerte für folgende Zwecke verwenden:
- Mehr Informationen dazu, wie Ihre Daten auf der ganzen Welt verteilt sind.
- Optimieren Sie den Standort der Publisher- und Abonnentenbereitstellung anhand dieser Daten.
Messwerte für den Nachrichtenspeicher
Anzahl der nicht bestätigten gespeicherten Nachrichten:
subscription/num_unacked_messages_by_region
Menge der gespeicherten Daten:
subscription/unacked_bytes_by_region
Alter der ältesten Nachricht:
subscription/oldest_unacked_message_age_by_region
Analoge Messwerte sind für Themen und Snapshots verfügbar. Darüber hinaus stehen entsprechende Messwerte für bestätigte Nachrichten zur Verfügung, die optional für die erneute Wiedergabe aufbewahrt werden. Beispiel:
subscription/num_retained_acked_messages_by_region
Auswirkungen auf Leistung und Verfügbarkeit
Die Nachrichtenspeicherrichtlinie wirkt sich nicht auf das Gesamt-SLA aus, führt jedoch zu einem Kompromiss bei der Verfügbarkeitskontrolle, wenn Publisher oder Abonnenten außerhalb von Google Cloud oder in Regionen ausgeführt werden, die von der Richtlinie nicht zugelassen werden. Nutzer, die Publisher-Clients innerhalb der von der Nachrichtenspeicherrichtlinie zulässigen Regionen ausführen, sollten keine Änderungen an der Latenz oder Verfügbarkeit des Dienstes haben.
Um diese Kompromisse zu verstehen, sollten Sie überlegen, wie Veröffentlichungsanfragen weitergeleitet werden. Im Allgemeinen versucht Pub/Sub, Ihre Nachrichten so nah wie möglich an der Quelle der Anfrage zu speichern. Anfragen, die aus Google Cloud stammen, sind in der Regel an die Pub/Sub-Instanzen in derselben Region gebunden. Wenn sich ein Publisher in einer einzelnen Region befindet, wird durch das Hinzufügen weiterer Regionen zur Nachrichtenspeicherrichtlinie die Verfügbarkeit nicht erhöht. Bei der Veröffentlichung außerhalb von Google Cloud ist eine zusätzliche Routingschicht erforderlich, um die Anfrage an eine nahe gelegene Google Cloud-Region zu senden, in der der Pub/Sub-Dienst verfügbar ist.
Angenommen, eine Nachrichtenspeicherrichtlinie lässt nur die Region us-central1
zu.
- Ein Publisher-Client, der in
us-east1
ausgeführt wird, gibt einePublish
-Anfrage aus. - Die Anfrage wird an einen Pub/Sub-Server in
us-east1
weitergeleitet. - Anstatt die Daten in
us-east1
zu speichern, wird die Anfrage an die nächstgelegene Region weitergeleitet, die von der Nachrichtenspeicherrichtlinie zugelassen wird:us-central1
. - Pub/Sub speichert die veröffentlichten Nachrichten in
us-central1
und leitet Nachrichten von diesem Speicherort an Abonnenten weiter.
Dieser Mechanismus hat Auswirkungen auf die Anfragelatenz und die allgemeine Systemverfügbarkeit. Da die Anfrage mehr Netzwerk-Links durchläuft, dauert die Ausführung länger und die Wahrscheinlichkeit, dass sie fehlschlägt. Dies bedeutet auch, dass die Abonnenten die Nachricht etwas später sehen, da sie vor dem Versenden in die nächste zulässige Region geleitet werden muss. Wenn die Richtlinie eine einzelne Region zulässt, Ihre Publisher-Anwendungen jedoch in mehreren Regionen ausgeführt werden, ist die verteilte Anwendung nur noch als die einzige zulässige Region verfügbar.
Nächste Schritte
- Informationen zur Verwendung globaler oder standortbezogener Endpunkte finden Sie unter Pub/Sub APIs – Übersicht.