Wenn Sie Nachrichten auf dem globalen Pub/Sub-Endpunkt, speichert Pub/Sub die Nachrichten automatisch in der nächstgelegenen Google Cloud Region. Wenn Sie steuern möchten, in welchen Regionen Ihre Nachrichten gespeichert und verarbeitet werden, können Sie eine Nachrichtenspeicherrichtlinie für Ihr Thema konfigurieren.
Übersicht über Nachrichtenspeicherrichtlinien
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 Einstellungen für Identity and Access Management (IAM).
Pub/Sub speichert Nachrichten, wenn ein Client die Nachrichten in Pub/Sub veröffentlicht. Eine Nachrichtenspeicherrichtlinie sorgt dafür, dass Pub/Sub Nachrichten nur in den von Ihnen angegebenen Google Cloud Regionen speichert und verarbeitet, unabhängig davon, woher die Veröffentlichungs- oder Aboanfragen stammen. Wenn die Richtlinie mehrere Regionen für Veröffentlichungsvorgänge zulässt, speichert Pub/Sub die Nachricht in einer zulässigen Region, die sich am nächsten zu dem Ort befindet, an dem die veröffentlichte Nachricht in das Google Cloud Netzwerk gelangt.
Wenn Sie eine Nachrichtenspeicherrichtlinie angeben, können Sie enforceInTransit auf True setzen. Dieses Flag steuert Folgendes:
Veröffentlichungs-, Pull- und StreamingPull-Anfragen, die in einer Region eingehen, die in der Nachrichtenspeicherrichtlinie nicht zulässig ist, werden mit einem
FAILED_PRECONDITION-Fehler abgelehnt.Wenn ein Client in einer der zulässigen Regionen ausgeführt wird Google Cloud , z. B. auf einer Compute Engine-VM, kann er den globalen Endpunkt verwenden. Die Anfragen des Clients werden lokal in der zulässigen Region weitergeleitet. Der Client kann auch einen standortbezogenen Endpunkt oder regionalen Endpunkt verwenden, der auf eine zulässige Region ausgerichtet ist.
Wenn ein Client in einer nicht zulässigen Region ausgeführt wird Google Cloud , oder außerhalb von Google Cloud Google Cloud, muss er einen standortbezogenen oder regionalen Endpunkt verwenden, der auf eine Region in der Liste der zulässigen Regionen ausgerichtet ist.
Die Zustellung für Push-Abos erfolgt nur innerhalb der zulässigen Cloud-Regionen. In einigen Fällen kann diese Einschränkung die Nachrichtenzustellung für Push-Abos vollständig unterbrechen. Wenn ein Push-Abo aufgrund der zu starken Einschränkung der Push-Standorte durch eine Kombination von Faktoren wie Nachrichtenspeicherort, zulässige Regionen und Exportressourcenstandort in einen solchen Zustand gerät, wird dieser Zustand in Stackdriver angezeigt.
Nachrichtenspeicherrichtlinien für neue Themen
Wenn Sie beim Erstellen eines Themas keine Nachrichtenspeicherrichtlinie angeben, wird die Nachrichtenspeicherrichtlinie automatisch anhand der geltenden Organisationsrichtlinie Beschränkung von Ressourcenstandorten festgelegt. Wenn keine Organisationsrichtlinie in Kraft ist, lässt die Nachrichtenspeicherrichtlinie alle Regionen zu.
Wenn keine Nachrichtenspeicherrichtlinie angegeben ist, wird das Flag
enforceInTransitanhand der geltenden 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 Beschränkung von Ressourcenstandorten zugelassen werden. Wenn keine Organisationsrichtlinien gelten, kann die Nachrichtenspeicherrichtlinie eine beliebige Region enthalten.
Nachrichtenspeicherrichtlinien 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 Organisations- und Themenrichtlinien 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.
Nachrichtenspeicherrichtlinien konfigurieren
Es gibt zwei Möglichkeiten, Nachrichtenspeicherrichtlinien für Themen zu konfigurieren:
- Nachrichtenspeicherrichtlinie mit einer Organisationsrichtlinie festlegen
- Nachrichtenspeicherrichtlinie beim Erstellen eines Themas konfigurieren
Nachrichtenspeicherrichtlinie mit einer Organisationsrichtlinie festlegen
Console
Wenn Sie eine Nachrichtenspeicherrichtlinie konfigurieren möchten, die für mehrere Themen gilt, legen Sie eine Organisationsrichtlinie Beschränkung von Ressourcenstandorten 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 im Filter Beschränkung von Ressourcenstandorten ein.
Klicken Sie auf Google Cloud Beschränkung von Ressourcenstandorten.
Klicken Sie auf BEARBEITEN.
Fügen Sie nach Bedarf Regionen hinzu oder entfernen Sie sie.
Alle neuen Themen, die Sie erstellen, übernehmen diese Einstellungen. Ä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 Ressourcen verwalten Google Cloud .
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 übernehmen alle neuen Themen automatisch Ihre Organisationsrichtlinie Beschränkung von Ressourcenstandorten.
Nachdem Sie ein Thema erstellt haben, können Sie die Nachrichtenspeicherrichtlinie jedoch in der Console mit einem Aktualisierungsvorgang ändern.
gcloud CLI
Verwenden Sie den
gcloud pubsub topics create
Befehl mit dem --message-storage-policy-allowed-regions Flag, 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 für Ihr neues Thema.REGION1, REGION2: eine durch Kommas getrennte Liste unterstützter Regionen. Google Cloud
REST
Verwenden Sie die
projects.topics.create
Methode, 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 die Themen-ID.
REGION ist die angegebene Region.
Beispielantwort:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": [
"REGION"
],
"enforceInTransit": true
}
}
Weitere Informationen zum Konfigurieren von Nachrichtenspeicherrichtlinien finden Sie in den folgenden API-Referenzen.
Nachrichtenspeicherrichtlinien 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.
Dieses Feld ist standardmäßig minimiert. Wenn es minimiert ist, klicken Sie auf Infofeld ansehen.
Wählen Sie so viele Regionen aus oder heben Sie die Auswahl so vieler Regionen auf, wie erforderlich.
Klicken Sie auf Aktualisieren.
gcloud CLI
Führen Sie den folgenden
gcloud pubsub topics update
Befehl aus, um die in der
Richtlinie zur Beschränkung von Ressourcenstandorten Ihrer Organisation definierte Nachrichtenspeicherrichtlinie auf ein Thema zu übertragen:
gcloud pubsub topics update TOPIC_ID \ --recompute-message-storage-policy
Führen Sie den Befehl gcloud pubsub topics update mit dem Flag --message-storage-policy-allowed-regions aus, um die Nachrichtenspeicherrichtlinie eines Themas mit bestimmten Regionen zu aktualisieren:
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 unterstützter Regionen. Google Cloud
REST
Verwenden Sie die
projects.topics.patch
Methode, um ein Thema mit einer Nachrichtenspeicherrichtlinie 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 die Themen-ID.
REGION ist die angegebene Region.
Beispielantwort:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": [
"REGION"
],
"enforceInTransit": true
}
}
Weitere Informationen zum Aktualisieren von Nachrichtenspeicherrichtlinien finden Sie in den folgenden API-Referenzen.
Unterschiede zwischen Organisations- und Themenrichtlinien verwalten
Unterschiede zwischen Organisations- und Themenrichtlinien 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 mit Ihrer Organisationsrichtlinie synchronisiert sind:
Rufen Sie die Seite Themendetails auf.
Wählen Sie ein Thema aus.
Wählen Sie im Infofeld den Tab Speicherrichtlinie aus.
Dieses Feld ist standardmäßig minimiert. Wenn es minimiert ist, klicken Sie auf Infofeld ansehen.
Ihre Speicherrichtlinien werden im Feld zusammen mit allen Unterschieden zwischen Organisations- und Themenrichtlinien angezeigt.
gcloud CLI
Führen Sie den folgenden Befehl aus, um die aktuelle Richtlinie für ein Thema zu prüfen:
gcloud pubsub topics describe TOPIC_ID
Ersetzen Sie Folgendes:
TOPIC_ID: die ID des Themas, das Sie prüfen.
Unterschiede zwischen Organisations- und Themenrichtlinien 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.
Dieses Feld ist standardmäßig minimiert. Wenn es minimiert ist, klicken Sie auf Infofeld ansehen.
Ihre Speicherrichtlinien werden im Feld zusammen mit allen Abweichungen angezeigt.
Wenn es Abweichungen gibt, werden im Infofeld drei Optionen zum Synchronisieren der Speicherrichtlinie des Themas mit Ihrer Organisationsrichtlinie angezeigt, darunter:
Themen lassen die Speicherung an nicht zulässigen Speicherorten zu.
Aktualisieren Sie, um die Speicherung nur dort zu ermöglichen, wo Ihre Richtlinien dies zulassen.
Das Thema lässt die Speicherung an einigen zulässigen Speicherorten nicht zu.
Aktualisieren Sie, um die Speicherung überall dort zu ermöglichen, wo Ihre Richtlinien dies zulassen.
Themen sind entsprechend nicht zulässiger und zulässiger Standorte veraltet.
Aktualisieren Sie, um die Speicherung dort zu erlauben, wo Ihre Richtlinien dies zulassen.
Wählen Sie die entsprechende Option aus, um die Probleme zu beheben.
Klicken Sie auf Thema aktualisieren.
Das Dialogfeld Mit Organisationsspeicherrichtlinie 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. Google Cloud 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,Google Cloud 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 Cloudist 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-east1ausgeführt wird, gibt einePublish-Anfrage aus. - Die Anfrage wird an einen Pub/Sub-Server in
us-east1weitergeleitet. - Anstatt die Daten in
us-east1zu 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-central1und 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 für.