Panoramica della replica

La replica per Bigtable consente di aumentare la disponibilità e la durabilità dei tuoi dati copiandoli in più regioni o in più zone all'interno della stessa regione. Puoi isolare i carichi di lavoro instradando tipi di richieste diversi a cluster diversi.

Questa pagina spiega come funziona la replica in Bigtable e alcuni casi d'uso comuni per la replica. Illustra inoltre il modello di coerenza utilizzato da Bigtable quando la replica è abilitata e descrive cosa succede quando viene eseguito il failover di un cluster su un altro.

Prima di leggere questa pagina, dovresti avere familiarità con la panoramica di Bigtable.

Come funziona la replica

Per utilizzare la replica in un'istanza Bigtable, crea una nuova istanza con più di un cluster o aggiungi cluster a un'istanza esistente.

Le istanze Bigtable possono avere cluster situati in un massimo di otto regioni Bigtable e in ognuna di queste otto regioni, l'istanza può contenere un solo cluster per zona. Ad esempio, se crei un'istanza in 8 regioni con 3 zone ciascuna, l'istanza può avere fino a 24 cluster.

Ogni zona di una regione può contenere un solo cluster. Avere cluster in zone o regioni diverse consente di accedere ai dati dell'istanza anche se una zona o regione Google Cloud non è disponibile.

Quando crei un'istanza con più di un cluster, Bigtable inizia immediatamente a sincronizzare i dati tra i cluster, creando una copia separata e indipendente dei dati in ogni zona in cui l'istanza ha un cluster. Allo stesso modo, quando aggiungi un nuovo cluster a un'istanza esistente, Bigtable copia i dati esistenti dalla zona del cluster originale a quella del nuovo cluster, quindi sincronizza le modifiche ai dati tra le zone.

Bigtable replica qualsiasi modifica apportata ai dati, inclusi tutti i tipi di modifica seguenti:

  • Aggiornamenti ai dati nelle tabelle esistenti
  • Tabelle nuove ed eliminate
  • Famiglie di colonne aggiunte e rimosse
  • Modifiche al criterio di garbage collection di una famiglia di colonne

La replica ha una certa latenza e la coerenza tra i cluster è finale.

Bigtable tratta ogni cluster nella tua istanza come cluster principale, quindi puoi eseguire letture e scritture in ogni cluster. Puoi anche configurare l'istanza in modo che le richieste da diversi tipi di applicazioni vengano instradate a cluster diversi.

Prima di aggiungere cluster a un'istanza, devi conoscere le restrizioni che si applicano quando modifichi i criteri di garbage collection per le tabelle replicate.

Prestazioni

L'uso della replica ha implicazioni in termini di prestazioni che devi pianificare quando crei un'istanza replicata o abiliti la replica aggiungendo un cluster a un'istanza a cluster singolo. Ad esempio, i cluster replicati in regioni diverse hanno in genere una latenza di replica più elevata rispetto ai cluster replicati nella stessa regione. Inoltre, i cluster in istanze che hanno più di un cluster spesso hanno bisogno di più nodi per gestire il lavoro aggiuntivo di gestione della replica. Per saperne di più, consulta Informazioni sul rendimento.

Casi d'uso

Questa sezione descrive alcuni casi d'uso comuni per la replica Bigtable. Per trovare le impostazioni di configurazione migliori per ogni caso d'uso, nonché suggerimenti per l'implementazione per altri casi d'uso, consulta Esempi di impostazioni di replica.

Le applicazioni pubblicate sono isolate dalle letture batch

Quando utilizzi un singolo cluster per eseguire un job di analisi batch che esegue numerose operazioni di lettura di grandi dimensioni insieme a un'applicazione che esegue una combinazione di letture e scritture, il job batch di grandi dimensioni può rallentare le cose per gli utenti dell'applicazione. Con la replica, puoi utilizzare i profili delle app con il routing a cluster singolo per instradare i job di analisi batch e il traffico delle applicazioni a cluster diversi, in modo che i job batch non influiscano sugli utenti delle applicazioni. Scopri di più sull'implementazione di questo caso d'uso.

La disponibilità è migliore

Se un'istanza ha un solo cluster, la durabilità e la disponibilità dei dati sono limitate alla zona in cui si trova il cluster. La replica può migliorare la durabilità e la disponibilità archiviando copie separate dei dati in più zone o regioni ed eseguendo automaticamente il failover tra i cluster, se necessario. Scopri di più sull'implementazione di questo caso d'uso.

Il backup è quasi in tempo reale

In alcuni casi, ad esempio se non puoi permetterti di leggere dati inattivi, dovrai sempre instradare le richieste a un singolo cluster. Tuttavia, puoi comunque utilizzare la replica gestendo le richieste con un cluster e conservando un altro cluster come backup quasi in tempo reale. Se il cluster di gestione non è più disponibile, puoi ridurre al minimo il tempo di inattività eseguendo manualmente il failover sul cluster di backup. Scopri di più sull'implementazione di questo caso d'uso.

I dati hanno una presenza globale

Puoi configurare la replica in località di tutto il mondo per avvicinare i dati ai tuoi clienti. Ad esempio, puoi creare un'istanza con cluster replicati negli Stati Uniti, in Europa e in Asia, e configurare profili di app per instradare il traffico delle applicazioni al cluster più vicino. Scopri di più sull'implementazione di questo caso d'uso.

Modello di coerenza

Per impostazione predefinita, la replica per Bigtable è alla fine coerente. Questo termine indica che quando scrivi una modifica in un cluster, alla fine sarai in grado di leggerla dagli altri cluster dell'istanza, ma solo dopo che la modifica viene replicata tra i cluster.

Se l'istanza è reattiva, la latenza per la replica è in genere di pochi secondi o minuti, non di ore. Tuttavia, se scrivi una grande quantità di dati in un cluster o se un cluster è sovraccarico o temporaneamente non disponibile, la replica potrebbe impiegare tempo per recuperare. Inoltre, la replica può richiedere più tempo se i cluster sono lontani. Di conseguenza, in genere non è sicuro presumere che tu stia sempre leggendo l'ultimo valore scritto o che attendere alcuni secondi dopo una scrittura dia a Bigtable il tempo sufficiente per replicare la modifica.

Se hai bisogno di una garanzia di coerenza diversa, Bigtable può anche fornire la coerenza in lettura/scrittura quando è abilitata la replica, per garantire che un'applicazione non leggerà mai dati precedenti alle scritture più recenti. Per ottenere la coerenza delle operazioni di lettura/scrittura per un gruppo di applicazioni, ogni applicazione del gruppo deve utilizzare un profilo dell'app configurato per il routing a cluster singolo e tutti i profili delle app devono instradare le richieste allo stesso cluster. Puoi usare i cluster aggiuntivi dell'istanza contemporaneamente per altri scopi.

Per alcuni casi d'uso di replica, Bigtable può anche fornire elevata coerenza, che garantisce che tutte le applicazioni vedano i dati nello stesso stato. Per ottenere elevata coerenza, utilizza la configurazione del profilo app di routing a cluster singolo per la coerenza read-your-writes descritta in precedenza, ma non devi utilizzare i cluster aggiuntivi dell'istanza a meno che non sia necessario eseguire il failover in un altro cluster. Esamina gli esempi di impostazioni di replica per verificare se è possibile per il tuo caso d'uso.

Risoluzione dei conflitti

Ogni valore di cella in una tabella Bigtable è identificato in modo univoco dalle quattro tuple (chiave di riga, famiglia di colonne, qualificatore di colonna, timestamp). Consulta Modello di archiviazione Bigtable per ulteriori dettagli su questi identificatori. Nel raro caso in cui due scritture con la stessa quattro tuple vengano inviate a due cluster diversi, Bigtable risolve automaticamente il conflitto utilizzando un algoritmo interno di ultima scrittura vince basato sul tempo lato server. L'implementazione "l'ultima scrittura vince" di Bigtable è deterministica e, quando la replica raggiunge il ritardo, tutti i cluster hanno lo stesso valore per la quattro tuple.

Profili di applicazione

Se un'istanza utilizza la replica, puoi usare i profili di applicazione o i profili di app per specificare i criteri di routing. I profili delle app determinano anche se puoi eseguire transazioni su riga singola, che includono operazioni di lettura, modifica e scrittura (inclusi incrementi e aggiunte) e operazioni di verifica e mutazione (note anche come mutazioni condizionali o scritture condizionali).

Per maggiori dettagli, vedi Profili di applicazione. Per esempi di impostazioni che puoi utilizzare per implementare casi d'uso comuni, consulta Esempi di configurazioni di replica.

Criteri di routing

Ogni profilo di app ha un criterio di routing che controlla quali cluster gestiscono le richieste in arrivo dalle tue applicazioni. Le opzioni per i criteri di routing sono le seguenti:

  • Routing a cluster singolo: invia tutte le richieste a un singolo cluster da te specificato.
  • Routing multi-cluster a qualsiasi cluster: invia le richieste al cluster più vicino disponibile nell'istanza.
  • Routing del gruppo di cluster: invia le richieste al cluster più vicino disponibile all'interno di un gruppo di cluster specificato nelle impostazioni del profilo dell'app.

Failover

Se un cluster Bigtable non risponde, la replica consente di eseguire il failover del traffico in entrata verso un altro cluster nella stessa istanza. Gli errori possono essere manuali o automatici, a seconda del profilo dell'app utilizzato dall'applicazione e della configurazione del profilo.

Per maggiori dettagli, consulta Failover.

Eliminazione degli intervalli di righe quando la replica è abilitata

L'API Cloud Bigtable Admin consente di trascinare un intervallo contiguo di righe da una tabella in base alle relative chiavi di riga. Nelle istanze che non utilizzano la replica, Bigtable può eliminare un intervallo di righe in modo rapido ed efficiente. Tuttavia, quando la replica è abilitata, l'eliminazione di un intervallo di righe è notevolmente più lenta e molto meno efficiente.

Passaggi successivi