Replica

Questa pagina descrive come i dati vengono replicati in Spanner, le diverse tipi di repliche Spanner e relativi ruoli nelle letture e scritture, e i vantaggi della replica.

Panoramica

Spanner esegue la replica automaticamente a livello di byte. Come descritto in Durata di letture e scritture di Spanner, sfrutta questa funzionalità nel file system di base su cui è basato. Spanner scrive le mutazioni del database nei file di questo file system, mentre il file system si occupa di replicare e recuperare i file in caso di guasto di una macchina o di un disco.

Anche se il file system distribuito sottostante che Spanner è basato già su fornisce una replica a livello di byte, consente di replicare i dati per offrire i vantaggi aggiuntivi della disponibilità dei dati località geografica. A livello generale, tutti i dati in Spanner sono organizzati in righe. Spanner crea più copie oppure replicas, di queste righe, le archivia poi in regioni diverse in queste aree. Spanner utilizza uno schema di replica sincrono basato su Paxos, in cui le repliche con diritto di voto votano su ogni richiesta di scrittura prima che venga eseguito il commit della scrittura. Questa proprietà della replica sincrona a livello mondiale consente di leggere i dati più aggiornati da qualsiasi replica di Spanner di lettura o di sola lettura.

Spanner crea repliche di ogni split del database. Una suddivisione contiene un intervallo di righe contigue, in cui le righe sono ordinate per chiave primaria. Tutti i dati di una suddivisione sono fisicamente archiviati insieme nella replica e Spanner gestisce ogni replica da un errore indipendente zona di destinazione. Per ulteriori informazioni, consulta la panoramica degli schemi.

Un insieme di suddivisioni viene memorizzato e replicato utilizzando Paxos. All'interno di ogni insieme di repliche Paxos, una replica viene eletta come leader. Repliche leader mentre le repliche di lettura/scrittura o di sola lettura possono gestire le richieste di lettura senza comunicare con il leader. Se viene richiesta una lettura sicura, solitamente viene consultato il leader per assicurarsi che la replica di sola lettura abbia ricevuto tutte le mutazioni recenti. Per monitorare la frequenza di variazione e la quantità di dati che vengono replicati dalla replica leader alle repliche tra regioni nella configurazione dell'istanza, consulta Monitorare la replica dei dati.

Vantaggi della replica di Spanner

I vantaggi della replica di Spanner includono:

  • Disponibilità dei dati: avere più copie dei tuoi dati ne aumenta il numero disponibili per i clienti che vogliono leggerla. Inoltre, Spanner può effettuare comunque le scritture anche se alcune delle repliche non sono disponibili, perché è necessaria solo la maggioranza delle repliche con diritto di voto per eseguire il commit di una scrittura.

  • Località geografica: capacità di posizionare i dati tra diverse le regioni e i continenti con Spanner significa che i dati geograficamente più vicini, e quindi più rapidi ad accedere, agli utenti e ai servizi che ne hanno bisogno.

  • Esperienza con un singolo database: Spanner può fornire una con un singolo database grazie alla replica sincrona elevata coerenza globale.

  • Sviluppo delle applicazioni semplificato. Poiché Spanner è è conforme ad ACID e offre un'elevata coerenza globale, gli sviluppatori lavorano con Spanner non devono aggiungere ulteriore logica applicazioni per gestire la coerenza finale, rendendo lo sviluppo e la successiva manutenzione in modo più rapido e semplice.

Tipi di replica

Spanner ha tre tipi di repliche: repliche di lettura/scrittura, repliche di sola lettura e repliche di testimoni. Le regioni e le topialogie di replica che formano le configurazioni di istanze di base sono fisse:

Puoi creare configurazioni di istanze personalizzate e aggiungere altre repliche di sola lettura per le configurazioni di istanze regionali e su più regioni.

La tabella seguente riassume i tipi di repliche di Spanner e le loro proprietà:

Tipo di replica Può votare Può diventare leader Può pubblicare letture Può configurare la replica manualmente
Lettura/scrittura no
Sola lettura no no yes*
Testimonio no no no

* Per ulteriori informazioni, vedi come creare un'istanza con un configurazione dell'istanza.

Repliche di lettura/scrittura

Le repliche di lettura e scrittura supportano sia le letture sia le scritture. Queste repliche:

  • Conserva una copia completa dei tuoi dati.
  • Elabora le letture.
  • Può votare se eseguire una scrittura.
  • Partecipare all'elezione del leader.
  • Sono idonei a diventare leader.
  • Sono l'unico tipo di replica utilizzato nelle istanze regionali.

Repliche di sola lettura

Le repliche di sola lettura supportano solo le letture, ma non le scritture. Queste repliche di votare per i leader o per gli scritture, che ti consentono di adattare senza aumentare il quorum necessario per le scritture. Sola lettura di repliche:

  • Conserva una copia completa dei tuoi dati, che vengono replicati dal leader di lettura e scrittura.
  • Non partecipare al voto per confermare le scritture. Di conseguenza, la posizione delle repliche di sola lettura non contribuisce mai alla latenza di scrittura.
  • Non sono idonei a diventare leader.
  • Elabora le letture.
  • Se è la replica più vicina alla tua applicazione, la replica di sola lettura di solito pubblicano letture obsolete senza il bisogno di un andata e ritorno per la regione leader, supponendo che l'inattività sia di almeno 15 secondi. Puoi anche utilizzare letture dirette per instradare le transazioni di sola lettura e le singole letture a un un tipo di replica specifico o una regione in una configurazione di istanze multiregionali. Per ulteriori informazioni, consulta la sezione Letture dirette.

    Le letture sicure potrebbero richiedere un viaggio di andata e ritorno alla replica leader. Andata e ritorno serve solo per negoziare il timestamp, non per spedire i dati effettivi leader. La negoziazione del timestamp è un'operazione efficiente per la CPU del leader e in genere i dati sono già in transito. Questa comunicazione viene gestita automaticamente dal sistema.

    Per ulteriori informazioni su letture inattive ed efficaci, consulta Nella sezione Letture.

Repliche di sola lettura facoltative

Puoi creare una configurazione di istanza personalizzata per una o più regioni e aggiungi repliche di sola lettura facoltative per scalare le letture e supportare una bassa latenza di dati legge. Puoi aggiungere le località elencate in Regione facoltativa come replica di sola lettura facoltativa. Se non vedi la località della replica di sola lettura che hai scelto, puoi richiedere una nuova regione facoltativa per le repliche di sola lettura.

Tutte le repliche di sola lettura facoltative sono soggette a costi di capacità di calcolo, archiviazione e replica. Inoltre, l'aggiunta di repliche di sola lettura la configurazione dell'istanza non modifica gli SLA di Spanner della configurazione dell'istanza. Se scegli di aggiungere una replica di sola lettura a un continente diverso da quello della regione leader, ti consigliamo di aggiungere almeno due repliche di sola lettura. Ciò aiuta a mantenere una bassa latenza di lettura nel caso in cui una delle repliche di sola lettura non sia disponibile.

Come best practice, testa prima i carichi di lavoro relativi alle prestazioni nelle istanze non di produzione nella configurazione dell'istanza personalizzata. Puoi fare riferimento alle Dashboard del benchmark di latenza e velocità effettiva tra regioni per i dati di latenza mediani tra regioni. Ad esempio, se crei una configurazione personalizzata dell'istanza con la configurazione di base multiregione eur6 e una replica facoltativa di sola lettura in us-east1, la latenza di lettura elevata prevista per un client in us-east1 è di circa 100 millisecondi a causa del tempo di percorrenza della regione leader in europe-west4. Le letture non aggiornate con un'inattività sufficiente non comportano il round trip e sono quindi molto più veloci. Puoi anche utilizzare gli approfondimenti sui blocchi e sulle transazioni per identificare le transazioni che generano latenze elevate.

Per istruzioni su come aggiungere repliche di sola lettura facoltative, vedi Crea una configurazione dell'istanza personalizzata.

Repliche testimoni

Le repliche dei testimoni non supportano le letture, ma partecipano alle votazioni per impegnarsi scrive. Queste repliche consentono di raggiungere più facilmente i quorum per le scritture senza e risorse di computing necessarie dalle repliche di lettura/scrittura per archiviare una copia completa dei dati e gestire le letture. Repliche di sola lettura:

  • Vengono utilizzati nelle istanze a due regioni e in quelle multiregione.
  • Non mantenere una copia completa dei dati.
  • Non pubblicare letture.
  • Vota se confermare le scritture.
  • Partecipare alle elezioni dei leader, ma non avere l'idoneità a diventare leader replica.

Il ruolo delle repliche nelle scritture e nelle letture

Questa sezione descrive il ruolo delle repliche nelle operazioni di scrittura e lettura di Spanner, il che è utile per capire perché Spanner utilizza le repliche di testimoni nelle configurazioni a due regioni e multiregionali.

In scrittura

Le richieste di scrittura del client vengono sempre elaborate per prime nella replica leader, anche se c'è una replica non leader più vicina al cliente, o se il leader geograficamente distante dal client. Se utilizzi due regioni o un'istanza multiregionale e l'applicazione client si trova in una una regione non leader, Spanner utilizza il routing sensibile al leader per eseguire il routing dinamico delle transazioni di lettura-scrittura per ridurre la latenza nel database. Per ulteriori informazioni, consulta Routing basato sui leader.

La replica leader registra la scrittura in entrata e la inoltra, in parallelo, alle altre repliche idonee a votare per la scrittura. Ogni replica idonea completa la scrittura, quindi risponde al leader con un voto per decidere se occorre eseguire il commit della scrittura. L'operazione di scrittura viene eseguita quando la maggioranza dei votanti repliche (o scrittura del quorum) accettano di eseguire la scrittura. In background, tutte le repliche rimanenti (non testimoni) registrano la scrittura. Se una replica di sola lettura o di lettura/scrittura rimane indietro nelle scritture dei log, può richiedere i dati mancanti da un'altra replica per avere una copia completa e aggiornata dei dati.

In letture

Le richieste di lettura del client potrebbero essere eseguite o richiedere di comunicare con il replica leader, a seconda della modalità di contemporaneità della richiesta di lettura.

  • Le letture che fanno parte di una transazione di lettura/scrittura vengono eseguite dalla replica leader, perché la replica leader gestisce i blocchi necessari per applicare la serializzazione.

  • Metodi di lettura singoli (una lettura al di fuori del contesto di una transazione) e lettura nelle transazioni di sola lettura potrebbe richiedere di comunicare con il leader, a seconda della modalità di contemporaneità della lettura. Per ulteriori informazioni modalità di contemporaneità, vedi Tipi di lettura.

    • Le richieste di lettura sicure possono essere inviate a qualsiasi replica di lettura/scrittura o di sola lettura. Se la richiesta viene inviata a una replica non leader, questa deve comunicare con il leader per eseguire la lettura.

    • Le richieste di lettura inattive vanno alle richieste di sola lettura o lettura/scrittura più vicine disponibili replica che ha raggiunto il timestamp della richiesta. Può essere la replica leader se è la replica più vicina al client che ha emesso la richiesta di lettura.

Monitorare la replica dei dati

Puoi monitorare la frequenza di modifica e la quantità di dati replicati della tua replica leader alle repliche tra regioni della tua istanza configurazione. La frequenza di variazione è espressa in byte al secondo e la quantità di dati è in byte. A questo scopo, utilizza il campo Byte replicati tra regioni (instance/cross_region_replicated_bytes_count) metrica di monitoraggio.

Per visualizzare questa metrica nella console Google Cloud, segui questi passaggi:

  1. Nella console Google Cloud, vai a Monitoraggio:

    Vai a Monitoring

  2. Nel menu di navigazione, seleziona Esplora metriche.

  3. Nel campo Metrica, fai clic sul menu a discesa Seleziona una metrica.

  4. Nel campo Filtra in base al nome della risorsa o della metrica, seleziona Istanza Cloud Spanner > Istanza > Byte replicati tra regioni e poi fai clic su Applica.

    Questa metrica è disponibile solo in Metriche attive se nella tua istanza è presente un'attività di replica tra regioni. Altrimenti, viene visualizzata in Metriche non attive. Per impostazione predefinita, l'interfaccia utente filtra e mostra solo lo stato Attivo metriche di valutazione. Deseleziona il segno di spunta Attivi per visualizzare sia le attività attive che quelle non attive. metriche di valutazione.

    Il grafico mostra la frequenza di variazione (in byte al secondo) dei dati replicati su tutte le istanze Spanner nell'intervallo di tempo specificato.

  5. (Facoltativo) Per mostrare la quantità di dati (in byte) replicata anziché il tasso di variazione:

    1. Nel campo Aggregazione, fai clic sul menu a discesa Somma e seleziona Configura allineatore.
    2. Nel campo Funzione di allineamento, fai clic sul menu a discesa Tariffa e Seleziona Delta.
    3. Seleziona Tabella o Entrambe come tipo di tabella anziché Grafico.

      La tabella mostra la quantità di dati (in byte) replicati nell'intervallo di tempo specificato.

  6. (Facoltativo) Per visualizzare l'utilizzo per una determinata istanza o un attributo:

    1. Utilizza il campo Filtro per aggiungere filtri, ad esempio un ID istanza, un ID database, una regione di origine, una regione di destinazione o un tag.
    2. Fai clic su Aggiungi filtro per aggiungere più filtri.

Per un elenco completo delle metriche Google Cloud, consulta Metriche Google Cloud.

Passaggi successivi