Replica

Questa pagina descrive come vengono replicati i dati in Spanner, i diversi tipi di repliche di Spanner e i relativi ruoli nelle operazioni di lettura e scrittura, nonché i vantaggi della replica.

Panoramica

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

Anche se il file system distribuito sottostante su cui si basa Spanner offre una replica a livello di byte, Spanner replica anche i dati per fornire i vantaggi aggiuntivi della disponibilità dei dati e della località geografica. A livello generale, tutti i dati in Spanner sono organizzati in righe. Spanner crea più copie, o "repliche", di queste righe, quindi le archivia in diverse aree geografiche. Spanner utilizza uno schema di replica sincrono basato su Paxos, in cui le repliche di voto assegnano un voto a ogni richiesta di scrittura prima del commit della scrittura. Questa proprietà della replica sincrona a livello globale consente di leggere i dati più aggiornati da qualsiasi replica di lettura/scrittura o di sola lettura di Spanner.

Spanner crea repliche di ogni suddivisione del database. Una suddivisione contiene un intervallo di righe contigue, in cui le righe sono ordinate in base alla chiave primaria. Tutti i dati di una suddivisione sono archiviati fisicamente insieme nella replica e Spanner fornisce ogni replica da una zona di errore indipendente. Per saperne di più, consulta Informazioni sugli schemi.

Un insieme di suddivisioni viene archiviato e replicato utilizzando Paxos. All'interno di ogni set di repliche Paxos, viene scelta una replica come leader. Le repliche leader sono responsabili della gestione delle scritture, mentre qualsiasi replica di lettura-scrittura o di sola lettura può soddisfare una richiesta di lettura senza comunicare con il leader (anche se, se è richiesta una lettura elevata, in genere quest'ultimo viene consultato per verificare che la replica di sola lettura abbia ricevuto tutte le mutazioni recenti).

Vantaggi della replica Spanner

I vantaggi della replica Spanner includono:

  • Disponibilità dei dati: avere più copie dei tuoi dati rende i dati più disponibili per i clienti che vogliono leggerli. Inoltre, Spanner può comunque gestire le scritture anche se alcune repliche non sono disponibili, perché solo la maggior parte delle repliche di voto è necessaria per eseguire il commit di una scrittura.

  • Località geografica: la possibilità di inserire dati in diverse regioni e continenti con Spanner significa che i dati possono essere più vicini l'area geografica e, di conseguenza, un accesso più rapido agli utenti e ai servizi che ne hanno bisogno.

  • Esperienza con singolo database: Spanner può offrire un'unica esperienza con il database grazie alla sua replica sincrona e all'elevata coerenza globale.

  • Sviluppo di applicazioni semplificato: poiché Spanner è conforme agli ACID e offre un'elevata coerenza globale, gli sviluppatori che lavorano con Spanner non devono aggiungere logica aggiuntiva nelle applicazioni per gestire la coerenza finale, rendendo lo sviluppo delle applicazioni e la successiva manutenzione più facili e veloci.

Tipi di replica

Spanner include tre tipi di repliche: repliche di lettura/scrittura, repliche di sola lettura e repliche di sola lettura. Le regioni e le topologie di replica che formano le configurazioni delle istanze di base sono fisse. Le configurazioni di istanze a livello di regione di base utilizzano solo repliche di lettura/scrittura, mentre le configurazioni di istanze di base su più regioni utilizzano una combinazione di tutti e tre i tipi di replica. Puoi creare configurazioni di istanze personalizzate e aggiungere ulteriori repliche di sola lettura per configurazioni di istanze sia a livello di regione che di più regioni.

La seguente tabella 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 ulteriori informazioni, consulta l'articolo su come creare un'istanza con una configurazione dell'istanza personalizzata.

Repliche di lettura/scrittura

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

  • Conserva una copia completa dei tuoi dati.
  • Pubblicare letture.
  • Può votare se eseguire o meno una scrittura.
  • Partecipare alle elezioni della leadership.
  • Sono idonei a diventare leader.
  • Sono l'unico tipo utilizzato nelle istanze a una singola regione.

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 consentono di scalare la capacità di lettura senza aumentare la dimensione del quorum necessaria per le scritture. Repliche di sola lettura:

  • Mantieni una copia completa dei tuoi dati, che viene replicata dalle repliche di lettura/scrittura.
  • Pubblicare letture.
  • Non partecipare alle votazioni per eseguire il commit di scrittura. Di conseguenza, la località delle repliche di sola lettura non contribuisce mai alla latenza di scrittura.
  • Se è la replica più vicina alla tua applicazione, la replica di sola lettura può solitamente gestire letture inattive senza bisogno di un round trip per la regione leader predefinita, supponendo che il tempo di inattività sia di almeno 15 secondi. Puoi anche utilizzare le letture indirizzate per instradare transazioni di sola lettura e singole letture su una regione o un tipo di replica specifico in una configurazione di istanze su più regioni. Per scoprire di più, consulta la sezione Letture dirette.

    Letture efficaci potrebbero richiedere un round trip alla replica leader. Il round trip serve solo per la negoziazione del timestamp, non per inviare i dati effettivi del responsabile. La negoziazione di timestamp è un'operazione efficiente dalla CPU nella parte leader e in genere i dati sono già in viaggio. Questa comunicazione viene gestita automaticamente dal sistema.

    Per ulteriori informazioni sulle letture inattive ed efficaci, consulta la sezione Letture.

  • Non sono idonei a diventare leader.

Puoi creare una configurazione di istanza personalizzata per una o più regioni e aggiungere repliche facoltative di sola lettura per scalare le letture e supportare letture inattive a bassa latenza. Puoi aggiungere le località elencate in Regione facoltativa come replica facoltativa di sola lettura. Se non vedi la località della replica di sola lettura che hai scelto, puoi richiedere una nuova regione facoltativa per la replica di sola lettura. Tieni presente che non puoi modificare la topologia di replica delle configurazioni di istanze di base, che sono fisse.

Tutte le repliche facoltative di sola lettura sono soggette a costi di calcolo e di archiviazione. 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 che si trova in un continente diverso da quello della regione leader, ti consigliamo di aggiungere almeno due repliche di sola lettura. Ciò consente di mantenere una bassa latenza di lettura nel caso in cui una delle repliche di sola lettura non sia più disponibile.

Quando aggiungi repliche di sola lettura, la replica leader riscontra un carico di replica maggiore, che potrebbe influire sulle prestazioni. Come best practice, testa prima i carichi di lavoro con prestazioni nelle istanze non di produzione nella configurazione delle istanze personalizzate. Per i dati sulla latenza mediana tra regioni, puoi fare riferimento alla dashboard Latenza tra regioni e Velocità effettiva. Ad esempio, se crei una configurazione dell'istanza personalizzata con la configurazione di base per più regioni eur6 e una replica facoltativa di sola lettura in us-east1, l'elevata latenza di lettura prevista per un client in us-east1 è di circa 100 millisecondi a causa del tempo di round trip per la regione leader in europe-west4. Le letture inattive con un livello di inattività sufficiente non comportano il round trip e sono quindi molto più veloci. Puoi anche utilizzare la metrica Latenza per tipo di transazione per visualizzare i dati di latenza per le transazioni di tipo lettura-scrittura e sola lettura.

Per le istruzioni, vedi Creare una configurazione dell'istanza personalizzata.

Repliche di replica

Le repliche di replica non supportano le letture, ma partecipano alle votazioni per le scritture. Queste repliche semplificano il raggiungimento dei quorum per le scritture senza le risorse di archiviazione e calcolo necessarie alle repliche di lettura e scrittura per archiviare una copia completa dei dati e gestire le letture. Repliche di replica:

  • Vengono utilizzate solo in istanze multiregionali.
  • Non conservare una copia completa dei dati.
  • Non pubblicare le letture.
  • Vota se eseguire operazioni di scrittura.
  • Partecipare a elezioni di leader, ma non avere l'idoneità a diventare leader.

Il ruolo delle repliche nelle scritture e nelle letture

Questa sezione descrive il ruolo delle repliche nelle scritture e nelle letture di Spanner, utile per comprendere perché Spanner utilizza le repliche di replica nelle configurazioni multiregionali.

In scrittura

Le richieste di scrittura del client vengono sempre elaborate prima nella replica leader, anche se è presente una replica non leader più vicina al client o se la replica leader è geograficamente distante dal client. Se utilizzi una configurazione dell'istanza multiregionale e la tua applicazione client si trova in un'area geografica non leader, Spanner utilizza il routing basato sui leader per instradare le transazioni di lettura/scrittura in modo dinamico e ridurre la latenza nel database. Per ulteriori informazioni, consulta la sezione Routing basato sui leader.

La replica leader registra la scrittura in entrata e la inoltra, parallelamente, alle altre repliche idonee a votare per quella scrittura. Ogni replica idonea completa la scrittura e poi risponde al leader con un voto per decidere se la scrittura debba essere confermata. L'impegno di scrittura viene confermato quando la maggioranza delle repliche di voto (o "scrive il quorum") acconsente alla scrittura. In background, tutte le repliche (non di seguito) rimanenti registrano la scrittura. Se una replica di lettura/scrittura o di sola lettura non è disponibile per le scritture di logging, può richiedere ai dati mancanti di un'altra replica di avere una copia completa e aggiornata dei dati.

In lettura

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

  • Le letture che fanno parte di una transazione di lettura/scrittura vengono gestite dalla replica leader, perché quest'ultima mantiene i blocchi richiesti per applicare la serializzabilità.

  • I singoli metodi di lettura (lettura al di fuori del contesto di una transazione) e le letture nelle transazioni di sola lettura potrebbero richiedere la comunicazione con la società leader, a seconda della modalità di contemporaneità della lettura. Scopri di più su queste modalità di contemporaneità in Tipi di lettura.

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

    • Le richieste di lettura inattive vanno alla replica di sola lettura o lettura/scrittura più vicina disponibile e raggiunge il timestamp della richiesta. Può essere la replica leader se quest'ultima è la replica più vicina al client che ha emesso la richiesta di lettura.