Configurare i criteri di archiviazione dei messaggi

Se pubblichi messaggi nell'endpoint Pub/Sub globale, Pub/Sub li archivia automaticamente nella regione Google Cloud più vicina. Se vuoi controllare le regioni in cui vengono archiviati ed elaborati i tuoi messaggi, puoi configurare un criterio di archiviazione dei messaggi per il tuo argomento.

Panoramica dei criteri di archiviazione dei messaggi

Puoi impostare un criterio di archiviazione dei messaggi quando crei un nuovo argomento o quando aggiorni un argomento utilizzando la console, Google Cloud CLI o le API REST.

I criteri di archiviazione dei messaggi si applicano solo ai contenuti dei messaggi. Il criterio non si applica ad altri dati, ad esempio nomi di argomenti, etichette o impostazioni IAM (Identity and Access Management).

Pub/Sub archivia i messaggi quando un client li pubblica in Pub/Sub. Un criterio di archiviazione dei messaggi assicura che Pub/Sub archivi ed elabori i messaggi solo nell'insieme di regioni di Google Cloud specificato, indipendentemente dall'origine delle richieste di pubblicazione o sottoscrizione. Se il criterio consente più regioni per le operazioni di pubblicazione, Pub/Sub archivia il messaggio in una regione consentita più vicina alla posizione in cui il messaggio pubblicato entra nella rete Google Cloud.

Quando specifichi un criterio di archiviazione dei messaggi, puoi impostare enforceInTransit su True. Questo flag regola quanto segue:

  • Le richieste di pubblicazione, pull e streamingPull ricevute in una regione non consentita nel criterio di archiviazione dei messaggi vengono rifiutate con un errore FAILED_PRECONDITION.

  • La consegna per gli abbonamenti push viene gestita solo all'interno delle regioni Cloud consentite. In alcuni casi, questa limitazione può mettere in pausa completamente la consegna dei messaggi per le sottoscrizioni push. Quando una sottoscrizione push entra in uno stato di questo tipo a causa dell'eccessiva limitazione delle località delle località da parte di una combinazione di fattori come la posizione di archiviazione dei messaggi, le regioni consentite e la località delle risorse di esportazione, questo stato diventa visibile in Stackdriver.

Criteri di archiviazione dei messaggi per i nuovi argomenti

  • Se non specifichi un criterio di archiviazione dei messaggi quando crei un argomento, il criterio di archiviazione dei messaggi viene determinato automaticamente in base al criterio dell'organizzazione restrizione sulla località delle risorse effettivo. Se nessun criterio dell'organizzazione è attivo, il criterio di archiviazione dei messaggi consente tutte le regioni.

  • Analogamente, in assenza di un criterio di archiviazione dei messaggi specificato, il flag enforceInTransit viene determinato in base al criterio dell'organizzazione Applica le regioni in transito per i messaggi Pub/Sub effettivo. Per ulteriori informazioni su questo criterio dell'organizzazione, vedi Vincoli dei criteri dell'organizzazione.

  • Se specifichi un criterio di archiviazione dei messaggi durante la creazione di un argomento, il criterio di archiviazione dei messaggi può contenere solo le regioni consentite dal criterio dell'organizzazione restrizione sulla località delle risorse effettivo. Se nessun criterio dell'organizzazione è attivo, il criterio di archiviazione dei messaggi può contenere qualsiasi regione.

Criteri di archiviazione dei messaggi per gli argomenti esistenti

  • Quando un criterio dell'organizzazione viene aggiornato, le modifiche non si propagano automaticamente agli argomenti esistenti. Di conseguenza, il criterio di archiviazione dei messaggi di un argomento esistente può non essere sincronizzato con il criterio dell'organizzazione più recente. Per saperne di più, consulta Gestire le differenze tra i criteri dell'organizzazione e degli argomenti.

  • Quando i criteri di archiviazione dei messaggi di un argomento vengono aggiornati, le modifiche non si propagano nei messaggi già pubblicati. I messaggi già archiviati in base a un criterio precedente non vengono spostati per essere coerenti con il nuovo criterio. ma si applicano solo ai messaggi pubblicati dopo l'aggiornamento.

Eccezioni

Il criterio consente di specificare un elenco di nomi di regioni Google Cloud consentiti. Di conseguenza, i seguenti elementi non sono supportati:

  • Elenchi di esclusione
  • Zone o località di più regioni

Se pubblichi un messaggio con una chiave di ordinamento e il criterio di archiviazione dei messaggi esclude la regione più vicina, il servizio Pub/Sub restituisce un errore.

Configurare i criteri di archiviazione dei messaggi

Esistono due modi per configurare i criteri di archiviazione dei messaggi per gli argomenti, tra cui:

  • Impostare un criterio di archiviazione dei messaggi utilizzando un criterio dell'organizzazione.
  • Configurare un criterio di archiviazione dei messaggi durante la creazione di un argomento.

Impostare un criterio di archiviazione dei messaggi utilizzando un criterio dell'organizzazione

Console

Per configurare un criterio di archiviazione dei messaggi che si applichi a più argomenti, imposta un criterio dell'organizzazione Restrizione sulla località delle risorse.

  1. Vai alla pagina Criteri organizzazione nella console Identity and Access Management.

    Vai a Criteri dell'organizzazione

  2. Seleziona il nodo della gerarchia delle risorse (organizzazione, cartella o progetto) su cui vuoi impostare un criterio dell'organizzazione.

  3. Nel filtro, inserisci Restrizione sulla località delle risorse.

  4. Fai clic su Google Cloud - Restrizione sulla località delle risorse.

  5. Fai clic su MODIFICA.

  6. Aggiungi o rimuovi le regioni in base alle esigenze.

    Tutti i nuovi argomenti che crei ereditano queste impostazioni. Le modifiche non si propagano automaticamente agli argomenti esistenti. Per aggiornare gli argomenti esistenti, devi eseguire un'operazione di aggiornamento.

Per saperne di più sui criteri dell'organizzazione, vedi Gestire le risorse Google Cloud.

Configurare un criterio di archiviazione dei messaggi durante la creazione di un argomento

Console

Se utilizzi la console Google Cloud, non puoi configurare un criterio di archiviazione dei messaggi durante la creazione di un argomento. Tutti i nuovi argomenti ereditano invece automaticamente il criterio dell'organizzazione relativo alla restrizione sulla località delle risorse.

Tuttavia, dopo aver creato un argomento, puoi modificare il relativo criterio di archiviazione dei messaggi nella console con un'operazione di aggiornamento.

Interfaccia a riga di comando gcloud

Per creare un argomento con uno specifico criterio di archiviazione dei messaggi, utilizza il comando gcloud pubsub topics create con il flag --message-storage-policy-allowed-regions:

gcloud pubsub topics create TOPIC_ID \
    --message-storage-policy-allowed-regions=REGION1, REGION2

Sostituisci quanto segue:

  • TOPIC_ID: l'ID o il nome del nuovo argomento.
  • REGION1, REGION2: un elenco separato da virgole delle regioni di Google Cloud supportate.

REST

Per creare un argomento con un criterio di archiviazione dei messaggi, utilizza il metodo projects.topics.create.

La richiesta deve essere autenticata con un token di accesso nell'intestazione Authorization. Per ottenere un token di accesso per le Credenziali predefinite dell'applicazione correnti: 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

Specifica i seguenti campi nel corpo della richiesta:

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": ["REGION"],
    "enforceInTransit": true
  }
}

Dove:

  • PROJECT_ID è l'ID progetto.

  • TOPIC_ID è l'ID del tuo argomento.

  • REGION è la regione specificata.

Esempio di risposta:

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": [
      "REGION"
    ],
    "enforceInTransit": true
  }
}

Per ulteriori informazioni sulla configurazione dei criteri di archiviazione dei messaggi, consulta i seguenti riferimenti API.

Aggiornare i criteri di archiviazione dei messaggi

Console

  1. Nella console Google Cloud, apri la pagina Dettagli argomento.

    Vai ai dettagli dell'argomento

  2. Seleziona un argomento da aggiornare.

    Puoi selezionare più argomenti.

  3. Nel riquadro Informazioni, seleziona la scheda Criterio di archiviazione.

    Questo riquadro potrebbe essere compresso per impostazione predefinita. Se è compresso, fai clic su Mostra riquadro informazioni.

  4. Seleziona o deseleziona tutte le regioni necessarie.

  5. Fai clic su Aggiorna.

Interfaccia a riga di comando gcloud

Per eseguire il push del criterio di archiviazione dei messaggi definito nei criteri per la restrizione sulla località delle risorse dell'organizzazione a un argomento, esegui questo comando gcloud pubsub topics update:

gcloud pubsub topics update TOPIC_ID \
    --recompute-message-storage-policy

Per aggiornare il criterio di archiviazione dei messaggi di un argomento con regioni specifiche, esegui il comando gcloud pubsub topics update con il flag --message-storage-policy-allowed-regions:

gcloud pubsub topics update TOPIC_ID \
    --message-storage-policy-allowed-regions=REGION1, REGION2

Sostituisci quanto segue:

  • TOPIC_ID: l'ID dell'argomento che stai aggiornando.
  • REGION1, REGION2: un elenco separato da virgole delle regioni di Google Cloud supportate.

REST

Per aggiornare un argomento con un criterio di archiviazione dei messaggi, utilizza il metodo projects.topics.patch.

La richiesta deve essere autenticata con un token di accesso nell'intestazione Authorization. Per ottenere un token di accesso per le Credenziali predefinite dell'applicazione correnti: 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

Specifica i seguenti campi nel corpo della richiesta:

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": ["REGION"], // Replace with your required region
    "enforceInTransit": true
  }
}

Dove:

  • PROJECT_ID è l'ID progetto.

  • TOPIC_ID è l'ID del tuo argomento.

  • REGION è la regione specificata.

Esempio di risposta:

{
  "name": "projects/PROJECT_ID/topics/TOPIC_ID",
  "messageStoragePolicy": {
    "allowedPersistenceRegions": [
      "REGION"
    ],
    "enforceInTransit": true
  }
}

Per ulteriori informazioni sull'aggiornamento dei criteri di archiviazione dei messaggi, consulta i seguenti riferimenti API.

Gestisci le differenze tra i criteri dell'organizzazione e quelli relativi agli argomenti

Visualizza le differenze tra i criteri dell'organizzazione e quelli degli argomenti

Console

La console Google Cloud mostra eventuali differenze tra i criteri dell'organizzazione e i criteri di archiviazione dei messaggi dei singoli argomenti.

Per verificare se alcuni argomenti non sono sincronizzati con il criterio dell'organizzazione:

  1. Vai alla pagina Dettagli argomento.

    Vai ai dettagli dell'argomento

  2. Seleziona un argomento.

  3. Nel riquadro Informazioni, seleziona la scheda Criterio di archiviazione.

    Questo riquadro potrebbe essere compresso per impostazione predefinita. Se è compresso, fai clic su Mostra riquadro informazioni.

    I criteri di archiviazione sono visualizzati nel riquadro, insieme alle eventuali differenze tra i criteri dell'organizzazione e quelli degli argomenti.

Interfaccia a riga di comando gcloud

Per esaminare il criterio corrente assegnato a un argomento, esegui questo comando:

gcloud pubsub topics describe TOPIC_ID

Sostituisci quanto segue:

  • TOPIC_ID: l'ID dell'argomento che stai esaminando.

Risolvere le differenze tra i criteri dell'organizzazione e degli argomenti

Console

  1. Nella console Google Cloud, apri la pagina Dettagli argomento.

    Vai a Pub/Sub

  2. Seleziona un argomento.

  3. Nel riquadro Informazioni, seleziona la scheda Criterio di archiviazione.

    Questo riquadro potrebbe essere compresso per impostazione predefinita. Se è compresso, fai clic su Mostra riquadro informazioni.

    I criteri di archiviazione sono visualizzati nel riquadro, insieme alle eventuali discrepanze.

    In caso di discrepanze, il riquadro delle informazioni mostra tre opzioni per sincronizzare il criterio di archiviazione dell'argomento con il criterio dell'organizzazione, tra cui:

    • Gli argomenti consentono l'archiviazione in località non consentite.

      Aggiorna per consentire l'archiviazione solo in località autorizzate dal criterio.

    • L'argomento non consente l'archiviazione in alcune posizioni consentite.

      Aggiorna per consentire l'archiviazione ovunque sia consentito dal criterio.

    • Gli argomenti non sono aggiornati in base alle località non consentite e consentite.

      Aggiorna per consentire l'archiviazione in località autorizzate dal criterio.

  4. Seleziona l'opzione appropriata per risolvere i problemi.

  5. Fai clic su Aggiorna argomento.

    Viene visualizzata la finestra di dialogo Sincronizza con il criterio di archiviazione dell'organizzazione.

  6. Fai clic su Aggiorna argomento.

Monitoraggio e risoluzione dei problemi

Per aiutarti a capire dove sono archiviati i dati dei messaggi, Pub/Sub offre metriche suddivise per ogni regione Google Cloud.

Puoi utilizzare queste metriche per:

  • Scopri come sono distribuiti i tuoi dati in tutto il mondo.
  • Ottimizza la località di deployment di publisher e abbonati in base a questi dati.

Metriche di archiviazione dei messaggi

Numero di messaggi archiviati non confermati:

subscription/num_unacked_messages_by_region

Volume di dati archiviati:

subscription/unacked_bytes_by_region

Età del messaggio meno recente:

subscription/oldest_unacked_message_age_by_region

Sono disponibili metriche analoghe per argomenti e snapshot. Inoltre, sono disponibili le metriche corrispondenti per i messaggi confermati che facoltativamente vengono conservati per la riproduzione. Ad esempio:

subscription/num_retained_acked_messages_by_region

Implicazioni per prestazioni e disponibilità

Il criterio di archiviazione dei messaggi non influisce sullo SLA (accordo sul livello del servizio) complessivo, ma introduce un compromesso nel controllo della disponibilità quando publisher o abbonati vengono eseguiti al di fuori di Google Cloud o in regioni non consentite dal criterio. Gli utenti che eseguono client editore nell'insieme di regioni consentite dal criterio di archiviazione dei messaggi non notano alcun cambiamento nella latenza o nella disponibilità del servizio.

Per comprendere questi compromessi, vale la pena considerare come vengono indirizzate le richieste di pubblicazione. In genere, Pub/Sub tenta di archiviare i messaggi il più vicino possibile all'origine della richiesta. Come regola, le richieste provenienti da Google Cloud sono associate alle istanze Pub/Sub nella stessa regione. Se un editore si trova in una singola regione, l'aggiunta di più regioni ai criteri di archiviazione dei messaggi non aumenta la disponibilità. Quando pubblichi dall'esterno di Google Cloud, è previsto un ulteriore livello di routing per inviare la richiesta a una regione Google Cloud vicina in cui è disponibile il servizio Pub/Sub.

Prendi in considerazione un criterio di archiviazione dei messaggi che consenta solo la regione us-central1.

  1. Un publisher client in esecuzione in us-east1 emette una richiesta Publish.
  2. La richiesta viene instradata a un server Pub/Sub in us-east1.
  3. Anziché archiviare i dati in us-east1, la richiesta viene instradata alla regione più vicina consentita dal criterio di archiviazione dei messaggi, ovvero us-central1.
  4. Pub/Sub archivia i messaggi pubblicati in us-central1 e inoltra i messaggi ai sottoscrittori da quella posizione.

Questo meccanismo ha implicazioni sulla latenza delle richieste e sulla disponibilità complessiva del sistema. Poiché la richiesta attraversa più link di rete, il completamento richiede più tempo e ha una probabilità relativamente maggiore di errore.Ciò significa anche che i sottoscrittori potrebbero visualizzare il messaggio un po' più tardi, perché deve spostarsi nella regione consentita più vicina prima di essere inviato. Se il criterio consente una singola regione, ma le applicazioni dei publisher vengono eseguite in più regioni, l'applicazione distribuita diventa disponibile solo come unica regione consentita.

Passaggi successivi