Replica

Questa pagina descrive come vengono replicati i dati in Spanner, i diversi tipi di repliche Spanner e i loro ruoli nelle letture e nelle scritture, nonché i vantaggi della replica.

Panoramica

Spanner esegue automaticamente la replica a livello di byte. Come descritto in Durata di letture e scritture di Spanner, sfrutta questa funzionalità nel file system sottostante su cui è basato. Spanner scrive le mutazioni del database nei file di questo file system e 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 su cui si basa Spanner fornisce già la replica a livello di byte, Spanner replica anche i dati per offrire i vantaggi aggiuntivi di disponibilità dei dati e località geografica. A livello generale, tutti i dati in Spanner sono organizzati in righe. Spanner crea più copie, o repliche, di queste righe, poi le archivia in diverse aree geografiche. Spanner utilizza uno schema di replica sincrona basato su Paxos, in cui le repliche di voto votano ogni richiesta di scrittura prima che venga eseguito il commit della scrittura. Questa proprietà della replica sincrona a livello globale ti consente di leggere i dati più aggiornati da qualsiasi replica di lettura/scrittura o di sola lettura di Spanner.

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

Un insieme di suddivisioni viene archiviato e replicato utilizzando Paxos. All'interno di ogni set di repliche Paxos, una replica viene scelta per fungere da leader. Le repliche leader gestiscono le scritture, mentre le repliche di lettura/scrittura o di sola lettura possono soddisfare una richiesta di lettura senza comunicarla alla replica leader. Se viene richiesta una lettura coerente, in genere viene consultato il leader per assicurarsi che la replica di sola lettura abbia ricevuto tutte le mutazioni recenti. Per monitorare il tasso di variazione e la quantità di dati replicati dalla replica leader alle repliche cross-region 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 dati li rende più disponibili per i client che vogliono leggerli. Inoltre, Spanner può continuare a gestire le scritture anche se alcune repliche non sono disponibili, perché per eseguire il commit di una scrittura è necessaria solo la maggioranza delle repliche di voto.

  • Località geografica: la possibilità di inserire dati in diverse regioni e continenti con Spanner significa che i dati possono essere geograficamente più vicini e quindi più veloci da accedere per gli utenti e i servizi che ne hanno bisogno.

  • Esperienza di un singolo database: Spanner può offrire un'esperienza di un singolo database grazie alla replica sincrona e alla elevata coerenza globale.

  • Sviluppo di applicazioni più semplice: poiché Spanner è conforme ad ACID e offre una coerenza globale rigorosa, gli sviluppatori che lavorano con Spanner non devono aggiungere logica aggiuntiva alle loro applicazioni per gestire la coerenza finale, rendendo lo sviluppo delle applicazioni e la successiva manutenzione più rapidi e semplici.

Tipi di replica

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

Puoi creare configurazioni di istanze personalizzate e aggiungere repliche di sola lettura aggiuntive per le configurazioni di istanze regionali e multiregionali.

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

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

* Per maggiori informazioni, scopri come creare un'istanza con una configurazione personalizzata.

Repliche di lettura/scrittura

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

  • Mantenere una copia completa dei tuoi dati.
  • Pubblicare letture.
  • Può votare se eseguire o meno una scrittura.
  • Partecipare alle elezioni della leadership.
  • Siano 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 non votano per i leader o per il commit delle scritture, quindi ti consentono di scalare la capacità di lettura senza aumentare le dimensioni del quorum necessarie per le scritture. Repliche di sola lettura:

  • Mantiene una copia completa dei tuoi dati, replicata dalla replica di lettura/scrittura leader.
  • Non partecipare alla votazione per eseguire commit di scrittura. Pertanto, la posizione delle repliche di sola lettura non contribuisce mai alla latenza di scrittura.
  • Non sono idonei a diventare leader.
  • Pubblicare letture.
  • Può essere scalato in modo asimmetrico. Per saperne di più, consulta Scalabilità automatica asimmetrica di sola lettura.
  • Se è la replica più vicina alla tua applicazione, la replica di sola lettura può in genere gestire letture non aggiornate senza richiedere un round trip alla regione leader, supponendo che l'obsolescenza sia di almeno 15 secondi. Puoi anche utilizzare le letture dirette per indirizzare le transazioni di sola lettura e le singole letture a un tipo di replica specifico o a una regione in una configurazione di istanza multiregionale. Per ulteriori informazioni, consulta Letture guidate.

    Le letture coerenti potrebbero richiedere un round trip alla replica leader. Il round trip serve solo per negoziare il timestamp, non per spedire i dati effettivi dal leader. La negoziazione del timestamp è un'operazione efficiente in termini di CPU sul leader e in genere i dati sono già in transito. Questa comunicazione viene gestita automaticamente dal sistema.

    Per saperne di più sulle letture obsolete e coerenti, consulta la sezione Letture.

Repliche di sola lettura facoltative

Puoi creare una configurazione di istanza regionale o multiregionale personalizzata e aggiungere repliche di sola lettura facoltative per scalare le letture e supportare letture obsolete a bassa latenza. La replica di sola lettura aggiunta deve trovarsi in una regione che non fa parte della configurazione di base predefinita dell'istanza. Per un elenco delle regioni di sola lettura facoltative che puoi aggiungere, consulta la colonna Regione facoltativa in Configurazioni regionali disponibili e Configurazioni multiregionali disponibili. Se non vedi la posizione della replica di sola lettura che hai scelto, puoi richiedere una nuova regione di replica di sola lettura facoltativa.

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 a una configurazione dell'istanza personalizzata 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 un minimo di due repliche di sola lettura. Ciò contribuisce a mantenere una bassa latenza di lettura nel caso in cui una delle repliche di sola lettura non sia più disponibile.

Come best practice, testa i carichi di lavoro delle prestazioni nelle istanze non di produzione nella configurazione dell'istanza personalizzata. Puoi consultare la dashboard di benchmark della latenza e del throughput tra regioni per i dati sulla latenza mediana tra regioni. Ad esempio, se crei una configurazione di istanza personalizzata con la configurazione di base multiregionale eur6 e una replica di sola lettura facoltativa in us-east1, la latenza di lettura coerente prevista per un client in us-east1 è di circa 100 millisecondi a causa del tempo di andata e ritorno nella regione leader in europe-west4. Le letture obsolete con un'obsolescenza 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 comportano latenze elevate.

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

Repliche di sola lettura

Le repliche di testimoni non supportano le letture, ma partecipano alla votazione per eseguire le scritture. Queste repliche semplificano il raggiungimento dei quorum per le scritture senza le risorse di archiviazione e di calcolo richieste dalle repliche di lettura/scrittura per archiviare una copia completa dei dati e gestire le letture. Repliche di sola lettura:

  • Vengono utilizzati in istanze a due regioni e multiregionali.
  • Non conservare una copia completa dei dati.
  • Non pubblicare letture.
  • Vota se eseguire i commit delle scritture.
  • Partecipare all'elezione del leader, ma non essere idoneo a diventare una replica del leader.

Il ruolo delle repliche nelle scritture e nelle letture

Questa sezione descrive il ruolo delle repliche nelle scritture e nelle letture di Spanner, il che è utile per capire perché Spanner utilizza repliche di controllo nelle configurazioni a due regioni e multiregionali.

In writes

Le richieste di scrittura del client vengono sempre elaborate prima nella replica leader, anche se esiste una replica non leader più vicina al client o se la replica leader è geograficamente distante dal client. Se utilizzi una configurazione di istanza multiregionale o dual-region e la tua applicazione client si trova in una regione non leader, Spanner utilizza il routing leader-aware per instradare dinamicamente le transazioni di lettura/scrittura per ridurre la latenza nel database. Per saperne di più, consulta Routing consapevole del leader.

La replica leader registra la scrittura in entrata e la inoltra, in parallelo, alle altre repliche idonee a votare per quella scrittura. Ogni replica idonea completa la scrittura e poi risponde al leader con un voto che indica se la scrittura deve essere eseguita. La scrittura viene eseguita quando la maggior parte delle repliche con diritto di voto (o quorum di scrittura) accetta di eseguire la scrittura. In background, tutte le repliche rimanenti (non testimoni) registrano la scrittura. Se una replica di lettura/scrittura o di sola lettura rimane indietro nella registrazione delle scritture, può richiedere i dati mancanti a un'altra replica per avere una copia completa e aggiornata dei dati.

Letture

Le richieste di lettura del client potrebbero essere eseguite o richiedere la comunicazione con la replica leader, a seconda della modalità di concorrenza della richiesta di lettura.

  • Le letture che fanno parte di una transazione di lettura/scrittura vengono eseguite dalla replica leader, perché questa mantiene i blocchi necessari per garantire la serializzabilità.

  • I metodi di lettura singoli (una lettura al di fuori del contesto di una transazione) e le letture nelle transazioni di sola lettura potrebbero richiedere la comunicazione con il leader, a seconda della modalità di concorrenza della lettura. Per saperne di più sulle modalità di concorrenza, consulta Tipi di lettura.

    • Le richieste di lettura coerenti 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 non aggiornate vengono inviate alla replica di lettura/scrittura o di sola lettura più vicina disponibile che ha raggiunto il timestamp della richiesta. Può trattarsi della replica leader se è la più vicina al client che ha emesso la richiesta di lettura.

Monitorare la replica dei dati

Puoi monitorare il tasso di modifica e la quantità di dati replicati dalla replica leader alle repliche cross-region nella configurazione dell'istanza. Il tasso di variazione è in byte al secondo e la quantità di dati è in byte. A questo scopo, utilizza la metrica di monitoraggio Byte replicati tra regioni (instance/cross_region_replicated_bytes_count).

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

  1. Nella console Google Cloud , vai a Monitoring:

    Vai a Monitoring

  2. Nel menu di navigazione, seleziona Metrics Explorer.

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

  4. Nel campo Filtra per nome risorsa o 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. In caso contrario, viene visualizzata nella sezione Metriche non attive. Per impostazione predefinita, l'interfaccia utente filtra e mostra solo le metriche attive. Deseleziona il segno di spunta Attivo per visualizzare le metriche attive e non attive.

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

  5. (Facoltativo) Per mostrare la quantità di dati (in byte) replicati 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 Tasso e seleziona Delta.
    3. Seleziona Tabella o Entrambi 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 un'istanza o un attributo specifico:

    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 visualizzare un elenco completo delle metriche di Google Cloud , consulta metriche diGoogle Cloud .

Passaggi successivi