Wenn Sie Nachrichten auf dem globalen Pub/Sub-Endpunkt veröffentlichen, speichert Pub/Sub die Nachrichten automatisch in der nächstenGoogle Cloud -Region. Wenn Sie steuern möchten, in welchen Regionen Ihre Nachrichten gespeichert und verarbeitet werden, können Sie eine Richtlinie für die Speicherung von Nachrichten für Ihr Thema konfigurieren.
Übersicht über die Richtlinie für den Nachrichtenspeicher
Sie können eine Richtlinie für die Nachrichtenspeicherung festlegen, wenn Sie ein neues Thema erstellen oder ein Thema mit der Console, der Google Cloud CLI oder den 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. Eine Nachrichtenspeicherrichtlinie sorgt dafür, dass Pub/Sub Nachrichten nur in den von Ihnen angegebenenGoogle 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 dem Ort am nächsten ist, an dem die veröffentlichte Nachricht in das Google Cloud Netzwerk gelangt.
Wenn Sie eine Nachrichtenspeicherrichtlinie angeben, können Sie enforceInTransit auf True festlegen. Dieses Flag steuert 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.Wenn ein Client in Google Cloud in einer der zulässigen Regionen ausgeführt wird, 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 Standortendpunkt oder regionalen Endpunkt verwenden, der auf eine zulässige Region ausgerichtet ist.
Wenn ein Client in Google Cloud in einer nicht zulässigen Region ausgeführt wird oder außerhalb von Google Cloud, muss er einen Standort- oder regionalen Endpunkt verwenden, der auf eine Region in der Liste der zulässigen Regionen ausgerichtet ist.
Die Zustellung von Push-Abos erfolgt nur in den zulässigen Cloud-Regionen. In einigen Fällen kann diese Einschränkung die Nachrichtenzustellung für Push-Abos vollständig pausieren. Wenn ein Push-Abonnement aufgrund von zu stark eingeschränkten Push-Standorten in einen solchen Zustand gerät, der durch eine Kombination von Faktoren wie Speicherort für Nachrichten, zulässige Regionen und Speicherort der Exportressource verursacht wird, wird dieser Zustand in Stackdriver sichtbar.
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 zur Beschränkung des Ressourcenstandorts festgelegt. Wenn keine Organisationsrichtlinie in Kraft ist, lässt die Nachrichtenspeicherrichtlinie alle Regionen zu.
Wenn keine Nachrichtenspeicherrichtlinie angegeben ist, wird das
enforceInTransit-Flag anhand der gültigen 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 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.
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 eine Richtlinie für den Nachrichtenspeicher, wenn Sie ein Thema erstellen.
Richtlinie für den Nachrichtenspeicher mit einer Organisationsrichtlinie festlegen
Console
Wenn Sie eine Richtlinie für die Nachrichtenspeicherung konfigurieren möchten, die für mehrere Themen gilt, legen Sie eine Organisationsrichtlinie vom Typ 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 im Filter Einschrä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 Google Cloud -Ressourcen verwalten.
Richtlinie für den Nachrichtenspeicher 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 die Organisationsrichtlinie Ressourcenstandortbeschränkung.
Nachdem Sie ein Thema erstellt haben, können Sie die Nachrichtenspeicherrichtlinie jedoch in der Konsole mit einem Aktualisierungsvorgang ändern.
gcloud-CLI
Verwenden Sie zum Erstellen eines Themas mit einer bestimmten Richtlinie für die Nachrichtenspeicherung den Befehl gcloud pubsub topics create mit dem Flag --message-storage-policy-allowed-regions:
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 das neue Thema.REGION1, REGION2: Eine durch Kommas getrennte Liste der unterstützten Google Cloud -Regionen.
REST
Verwenden Sie zum Erstellen eines Themas mit einer Richtlinie zur Nachrichtenspeicherung die Methode projects.topics.create.
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 beliebig viele Regionen aus oder heben Sie die Auswahl auf.
Klicken Sie auf Aktualisieren.
gcloud-CLI
Wenn Sie die in der Richtlinie zur Beschränkung der 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
Führen Sie den Befehl gcloud pubsub topics update mit dem Flag --message-storage-policy-allowed-regions aus, um die Speicherortrichtlinie für Nachrichten 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 der unterstützten Google Cloud -Regionen.
REST
Verwenden Sie zum Aktualisieren eines Themas mit einer Richtlinie für die Speicherung von Nachrichten die Methode projects.topics.patch.
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 Organisations- und Themenrichtlinien ansehen
Console
In der Google Cloud Konsole 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 Bereich 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 untersuchen.
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 zusammen mit etwaigen Abweichungen im Bereich angezeigt.
Bei Abweichungen werden im Infobereich drei Optionen zum Synchronisieren der Speicherrichtlinie des Themas mit Ihrer Organisationsrichtlinie angezeigt:
Themen erlauben die Speicherung an nicht zulässigen Speicherorten:
Aktualisieren Sie, um die Speicherung nur dort zu ermöglichen, wo Ihre Richtlinien dies zulassen.
Speicherung an einigen zulässigen Speicherorten für dieses Thema nicht zulässig:
Aktualisieren Sie, um die Speicherung überall dort zu ermöglichen, wo Ihre Richtlinien dies zulassen.
Die 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 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 jeder 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 ausGoogle 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 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.