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 messaggi, puoi configurare un criterio di archiviazione dei messaggi nell'argomento.
Panoramica dei criteri di archiviazione dei messaggi
Puoi impostare un criterio di archiviazione dei messaggi quando crei un nuovo argomento o aggiornare un argomento utilizzando la console, Google Cloud CLI o le API REST.
Il criterio di archiviazione dei messaggi si applica solo ai contenuti dei messaggi. Il criterio non si applicano ad altri dati, come nomi di argomenti, etichette o impostazioni di Identity and Access Management (IAM).
Pub/Sub archivia i messaggi quando un client li pubblica su Pub/Sub. Un criterio di archiviazione dei messaggi garantisce che Pub/Sub archivi ed elabori i messaggi solo nell'insieme di regioni Google Cloud specificate, indipendentemente dall'origine delle richieste di pubblicazione o di iscrizione. Se il criterio consente la pubblicazione di più regioni , Pub/Sub archivia il messaggio in una regione consentita più vicina dove il messaggio pubblicato entra nella rete Google Cloud.
Quando specifichi un criterio di archiviazione dei messaggi, puoi impostare
Da enforceInTransit
a True
. Questo flag regola i seguenti elementi:
Le richieste di pubblicazione, pull e streaming pull ricevute in una regione non consentita nei criteri di archiviazione dei messaggi vengono rifiutate con un messaggio di errore
FAILED_PRECONDITION
.L'invio per le iscrizioni push viene gestito solo all'interno delle regioni Cloud consentite. In alcuni casi, questa limitazione può mettere in pausa completamente il messaggio per le sottoscrizioni push. Quando una sottoscrizione push inserisce un perché le località di push sono eccessivamente limitate da una combinazione di Fattori come la posizione di archiviazione dei messaggi, le regioni consentite ed l'esportazione località della risorsa, 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 viene determinato automaticamente in base al criterio dell'organizzazione relativo alla restrizione sulla località delle risorse in vigore. Quando non sono in vigore criteri dell'organizzazione, 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. Per maggiori informazioni informazioni su questo criterio dell'organizzazione, consulta Vincoli dei criteri dell'organizzazione.Se specifichi un criterio di archiviazione dei messaggi quando crei un argomento, il criterio di archiviazione dei messaggi può contenere solo le regioni consentite Il criterio dell'organizzazione vigente per la limitazione sulla località delle risorse. Se no è attivo, il criterio di archiviazione dei messaggi può 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 più sincronizzato con il criterio dell'organizzazione più recente. Per Per saperne di più, consulta Gestire le differenze tra i criteri dell'organizzazione e quelli relativi agli argomenti.
Quando il criterio di archiviazione dei messaggi di un argomento viene aggiornato, le modifiche non vengono propagate ai messaggi già pubblicati. Messaggi già archiviati in base a un criterio precedente non vengono spostati in modo coerente con nuova norma. Le modifiche si applicano solo ai messaggi pubblicati dopo l'update.
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à con più regioni
Se pubblichi un messaggio contenente ordering key e il messaggio il criterio di archiviazione 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:
- Imposta un criterio di archiviazione dei messaggi utilizzando un criterio dell'organizzazione.
- Configura un criterio di archiviazione dei messaggi quando crei un argomento.
Impostare un criterio di archiviazione dei messaggi utilizzando un criterio dell'organizzazione
Console
Per configurare un criterio di archiviazione dei messaggi da applicare a più argomenti: Impostare un criterio dell'organizzazione relativo alla limitazione sulla località delle risorse.
Vai alla pagina Criteri dell'organizzazione in Identity and Access Management Google Cloud.
Seleziona il nodo della gerarchia delle risorse (organizzazione, cartella o progetto) per cui vuoi impostare un criterio dell'organizzazione.
Nel filtro, inserisci Restrizione sulla località delle risorse.
Fai clic su Google Cloud - Resource Location Restriction (Google Cloud - Limitazione della località della risorsa).
Fai clic su MODIFICA.
Aggiungi o rimuovi le regioni in base alle esigenze.
Tutti i nuovi argomenti che crei ereditano queste impostazioni. Le modifiche no si propagano automaticamente ad 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
Quando utilizzi la console Google Cloud, non puoi configurare un criterio di archiviazione dei messaggi quando crei un argomento. Tutti i nuovi argomenti ereditano 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 un criterio di archiviazione dei messaggi specifico, utilizza la classe
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 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 l'istanza
Credenziali predefinite dell'applicazione: 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 è il tuo ID 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.
Aggiorna i criteri di archiviazione dei messaggi
Console
Nella console Google Cloud, apri la pagina Dettagli argomento.
Seleziona un argomento da aggiornare.
Puoi selezionare più argomenti.
Nel riquadro informativo, seleziona la scheda Criteri di archiviazione.
Questo riquadro potrebbe essere compresso per impostazione predefinita. Se è compresso, fai clic su Mostra riquadro informazioni.
Seleziona o deseleziona tutte le regioni necessarie.
Fai clic su Aggiorna.
Interfaccia a riga di comando gcloud
Per eseguire il push del criterio di archiviazione dei messaggi definito nel set di dati
Criterio di restrizione sulla località delle risorse per 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 di regioni di Google Cloud supportate.
REST
Per aggiornare un argomento con un criterio di archiviazione dei messaggi, utilizza la classe
projects.topics.patch
.
La richiesta deve essere autenticata con un token di accesso in Authorization
intestazione. 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 è il tuo ID argomento.
REGION è la regione specificata.
Risposta di esempio:
{
"name": "projects/PROJECT_ID/topics/TOPIC_ID",
"messageStoragePolicy": {
"allowedPersistenceRegions": [
"REGION"
],
"enforceInTransit": true
}
}
Per ulteriori informazioni sull'aggiornamento del messaggio, consulta i seguenti riferimenti API criteri di archiviazione.
Gestire le differenze tra i criteri dell'organizzazione e quelli degli argomenti
Visualizza le differenze tra i criteri dell'organizzazione e quelli degli argomenti
Console
La console Google Cloud mostra eventuali differenze tra le norme dell'organizzazione e le norme di archiviazione dei messaggi dei singoli argomenti.
Per verificare se gli argomenti non sono sincronizzati con i criteri della tua organizzazione:
Vai alla pagina Dettagli argomento.
Seleziona un argomento.
Nel riquadro informazioni, seleziona la scheda Criterio dello spazio di archiviazione.
Questo riquadro potrebbe essere compresso per impostazione predefinita. Se è compresso, fai clic su Mostra riquadro informazioni.
I criteri relativi allo spazio di archiviazione sono mostrati nel riquadro, insieme a eventuali le differenze tra i criteri dell'organizzazione e quelli degli argomenti.
Interfaccia a riga di comando gcloud
Per esaminare il criterio attuale 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 le norme relative a organizzazioni e argomenti
Console
Nella console Google Cloud, apri la pagina Dettagli argomento.
Seleziona un argomento.
Nel riquadro informazioni, seleziona la scheda Criterio dello spazio di archiviazione.
Questo riquadro potrebbe essere compresso per impostazione predefinita. Se è compressa, fai clic su Mostra riquadro informazioni.
I criteri relativi allo spazio di archiviazione sono mostrati nel riquadro, insieme a eventuali discrepanze.
In caso di discrepanze, il riquadro delle informazioni mostra tre opzioni per sincronizzare il criterio di archiviazione dell'argomento con quello 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 sono obsoleti sia per le località non consentite che per quelle consentite.
Aggiorna per consentire l'archiviazione in località autorizzate dal criterio.
Seleziona la risposta appropriata per risolvere i problemi.
Fai clic su Aggiorna argomento.
Si apre la finestra di dialogo Sincronizza con il criterio di archiviazione dell'organizzazione.
Fai clic su Aggiorna argomento.
Monitoraggio e risoluzione dei problemi
Per aiutarti a capire dove vengono archiviati i dati dei messaggi, Pub/Sub offre metriche suddivise per ogni regione Google Cloud.
Puoi utilizzare queste metriche per:
- Scopri come vengono 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
Conteggi dei 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
Metriche analoghe sono disponibili per argomenti e snapshot. Inoltre, sono disponibili le metriche corrispondenti per i messaggi confermati che possono essere conservati facoltativamente 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 introdurre un compromesso nel controllo della disponibilità quando editori o abbonati al di fuori di Google Cloud o in regioni non consentite dal criterio. Utenti che Esegui client publisher all'interno dell'insieme di regioni consentite dall'archiviazione dei messaggi non rileva alcuna modifica 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. Richieste provenienti da Come regola, Google Cloud è vincolato al bucket Pub/Sub di istanze gestite nella stessa regione. Se un publisher si trova in una singola regione, L'aggiunta di più regioni al criterio di archiviazione dei messaggi non aumenta la disponibilità. Quando pubblichi da un computer esterno a Google Cloud, è necessario un livello aggiuntivo di instradamento per inviare la richiesta a una regione Google Cloud vicina in cui è disponibile il servizio Pub/Sub.
Considera un criterio di archiviazione dei messaggi che consenta l'accesso solo alla regione us-central1
.
- Un client publisher in esecuzione su
us-east1
invia una richiestaPublish
. - La richiesta viene indirizzata a un server Pub/Sub in
us-east1
. - Invece di archiviare i dati in
us-east1
, la richiesta viene inoltrata alla regione più vicina consentita dal criterio di archiviazione dei messaggi, ovverous-central1
. - Pub/Sub archivia i messaggi pubblicati in
us-central1
e li inoltra ai sottoscrittori da questa posizione.
Questo meccanismo ha implicazioni sulla latenza delle richieste e sulla disponibilità complessiva del sistema. Poiché la richiesta attraversa più link di rete, richiede più tempo e ha una probabilità relativamente più alta di fallimento.Ciò significa anche che i sottoscrittori potrebbero vedere il messaggio in un secondo momento perché deve spostarsi alla regione più vicina consentita prima di essere spedito. Se il criterio consente regione, ma le applicazioni del publisher vengono eseguite in più regioni, un'applicazione distribuita diventa disponibile solo se la singola regione consentita.
Passaggi successivi
- Consulta la panoramica delle API Pub/Sub per informazioni su come utilizzare gli endpoint globali o basati sulla posizione.