Richtlinien für die Speicherung von Nachrichten konfigurieren

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 die Regionen steuern möchten, in denen Ihre wie Nachrichten gespeichert und verarbeitet werden, eine Richtlinie zur Nachrichtenspeicherung zu Ihrem Thema

Übersicht über die Nachrichtenspeicherrichtlinie

Sie können eine Richtlinie zum Speichern von Nachrichten festlegen, wenn Sie ein neues Thema erstellen oder Themen mithilfe der Console, der Google Cloud CLI oder der REST APIs aktualisieren.

Die Nachrichtenspeicherrichtlinie gilt nur für den Nachrichteninhalt. Die Richtlinie enthält keine gelten 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 die Veröffentlichung in mehreren Regionen zulässt Vorgänge speichern, speichert Pub/Sub die Nachricht in der zulässigen Region, die dem den Ort, an dem die veröffentlichte Nachricht in das Google Cloud-Netzwerk eintritt.

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 von Push-Abos erfolgt nur innerhalb der zulässigen Cloud Regionen. In einigen Fällen kann diese Einschränkung die Nachricht vollständig pausieren Push-Abos zu übermitteln. 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 die Speicherung von Nachrichten für neue Themen

  • Wenn Sie beim Erstellen eines Themas keine Nachrichtenspeicherrichtlinie angeben, Die Nachrichtenspeicherrichtlinie wird automatisch ermittelt. basierend auf der geltenden Organisationsrichtlinie für die Beschränkung von Ressourcenstandorten. 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. Für Weitere Informationen finden Sie unter Unterschiede zwischen Organisations- und Themenrichtlinien verwalten.

  • Wenn die Nachrichtenspeicherrichtlinie eines Themas aktualisiert wird, werden die Änderungen nicht übernommen. bereits veröffentlichten Nachrichten. 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 mithilfe einer Organisationsrichtlinie eine Richtlinie für die Speicherung von Nachrichten fest.
  • Konfigurieren Sie beim Erstellen eines Themas eine Richtlinie zum Speichern von Nachrichten.

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.

  1. Rufen Sie in Identity and Access Management die Seite Organisationsrichtlinien auf. .

    Zu den Organisationsrichtlinien

  2. Knoten der Ressourcenhierarchie auswählen (Organisation, Ordner oder Projekt) für die Sie eine Organisationsrichtlinie festlegen möchten.

  3. Geben Sie als Filter Resource Location Restriction (Beschränkung von Ressourcenstandorten) ein.

  4. Klicken Sie auf Google Cloud – Beschränkung von Ressourcenstandorten.

  5. Klicken Sie auf BEARBEITEN.

  6. Fügen Sie nach Bedarf Regionen hinzu oder entfernen Sie sie.

    Diese Einstellungen werden für alle neu erstellten Themen übernommen. Änderungen automatisch auf vorhandene Themen angewendet. 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.

Beim Erstellen eines Themas eine Richtlinie zum Speichern von Nachrichten konfigurieren

Console

Wenn Sie die Google Cloud Console verwenden, können Sie keine Richtlinie für die Speicherung von Nachrichten konfigurieren wenn Sie ein Thema erstellen. Stattdessen werden alle neuen Themen Ihre Organisationsrichtlinie Beschränkung von Ressourcenstandorten übernehmen.

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 zum Erstellen eines Themas mit einer Nachrichtenspeicherrichtlinie die Methode projects.topics.create .

Die Anfrage muss mit einem Zugriffstoken im Authorization authentifiziert werden. Header. 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

  1. Öffnen Sie in der Google Cloud Console die Seite Themendetails.

    Zu den Themendetails

  2. Wählen Sie ein Thema zum Aktualisieren aus.

    Sie können mehrere Themen auswählen.

  3. Wählen Sie im Infofeld den Tab Speicherrichtlinie aus.

    Dieser Bereich ist möglicherweise standardmäßig minimiert. Ist sie minimiert, klicken Sie auf Infofeld anzeigen:

  4. Wählen Sie so viele Regionen wie nötig aus oder heben Sie die Auswahl auf.

  5. Klicken Sie auf Aktualisieren.

gcloud-CLI

Wenn Sie die in Ihrer Organisation definierte Richtlinie für die Speicherung von Nachrichten per Push übertragen möchten Richtlinie zur Beschränkung von Ressourcenstandorten auf ein Thema anwenden, führen Sie folgenden Befehl aus: gcloud pubsub topics update Befehl:

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 zum Aktualisieren eines Themas mit einer Nachrichtenspeicherrichtlinie die Methode projects.topics.patch .

Die Anfrage muss mit einem Zugriffstoken im Authorization authentifiziert werden. Header. 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 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 mehr mit Ihrer Organisationsrichtlinie übereinstimmen:

  1. Rufen Sie die Seite Themendetails auf.

    Details zum Thema aufrufen

  2. Wählen Sie ein Thema aus.

  3. 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 untersuchen.

Unterschiede zwischen Organisations- und Themenrichtlinien beheben

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Themendetails.

    Zu Pub/Sub

  2. Wählen Sie ein Thema aus.

  3. Wählen Sie im Infofeld den Tab Speicherrichtlinie aus.

    Dieser Bereich ist möglicherweise standardmäßig minimiert. Ist sie minimiert, klicken Sie auf Infofeld anzeigen:

    Ihre Speicherrichtlinien werden zusammen mit den Abweichungen.

    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 Standorten nicht.

      Aktualisieren Sie, um die Speicherung überall dort zu ermöglichen, wo Ihre Richtlinien dies zulassen.

    • Die Themen sind veraltet, sowohl zulässige als auch unzulässige Standorte.

      Aktualisieren Sie, um die Speicherung dort zu erlauben, wo Ihre Richtlinien dies zulassen.

  4. Wählen Sie die entsprechende Option aus, um Ihre Probleme zu beheben.

  5. Klicken Sie auf Thema aktualisieren.

    Das Dialogfeld Mit Speicherrichtlinie der Organisation synchronisieren wird geöffnet.

  6. Klicken Sie auf Thema aktualisieren.

Monitoring und Fehlerbehebung

Damit Sie wissen, wo die Nachrichtendaten gespeichert sind, Pub/Sub bietet Messwerte, die nach Google Cloud-Region aufgeschlüsselt sind.

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 zum Speichern von Nachrichten

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 in den vom Nachrichtenspeicher zulässigen Regionen ausführen dass die Richtlinie keine Änderungen an der Latenz oder der Verfügbarkeit des Dienstes erkennt.

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 ein Publisher in einer einzelnen Region ansässig ist, Durch das Hinzufügen weiterer Regionen zur Nachrichtenspeicherrichtlinie wird die Verfügbarkeit nicht erhöht. Bei der Veröffentlichung von außerhalb von Google Cloud ist eine zusätzliche Routingebene um die Anfrage an eine Google Cloud-Region in der Nähe zu senden, Der Pub/Sub-Dienst ist verfügbar.

Stellen Sie sich eine Nachrichtenspeicherrichtlinie vor, die nur die Region us-central1 zulässt.

  1. Ein Publisher-Client, der in us-east1 ausgeführt wird, gibt eine Publish-Anfrage aus.
  2. Die Anfrage wird an einen Pub/Sub-Server in us-east1 weitergeleitet.
  3. 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.
  4. 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