Replica

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

Panoramica

Spanner 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, e il file system si occupa di replicare e recuperare i file quando della macchina o del disco si guasta.

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 organizzate in righe. Spanner crea più copie oppure "repliche" di queste righe, le repliche vengono poi archiviate in regioni diverse in queste aree. Spanner usa uno schema di replica sincrono basato su Paxos, in cui le repliche di voto votano per 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 Spanner di sola lettura o di lettura/scrittura.

Spanner crea repliche di ogni suddiviso di database. Una divisione 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 sezione Informazioni sugli schemi.

Un insieme di suddivisioni viene archiviato e replicato utilizzando Paxos. All'interno di ogni Paxos di replica, viene scelta una replica come leader. 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 la responsabile (anche se se di lettura, in genere viene consultato il leader per assicurarsi che la replica di sola lettura ha ricevuto tutte le mutazioni recenti).

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ò gestire comunque le scritture anche se alcune repliche non sono disponibili, è necessaria solo la maggioranza delle repliche di voto per eseguire 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 unico database: Spanner può offrire un'esperienza con un unico database grazie alla replica sincrona e alla coerenza globale elevata.

  • 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. Configurazioni di istanza regionale di base utilizzare solo repliche di lettura/scrittura. Configurazioni di base delle istanze a due regioni utilizzare repliche di lettura e scrittura e di testimonianza, configurazioni di istanze multiregionali di base userà una combinazione di tutti e tre i tipi di replica. Puoi creare impostazioni personalizzate configurazioni di istanza e aggiungere ulteriori repliche di sola lettura configurazioni di istanze regionali e multiregionali.

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 *
Testimone no no no

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

Repliche di lettura/scrittura

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

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

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 l'esecuzione del commit delle scritture, quindi ti consentono di scalare la capacità di lettura senza aumentare le dimensioni del quorum necessarie per le scritture. Sola lettura di repliche:

  • Conservare una copia completa dei tuoi dati, che viene replicata dalle operazioni di lettura e scrittura o lo scale out mediante repliche di lettura.
  • Elabora le letture.
  • Non partecipare alle votazioni per impegnare le scritture. Pertanto, la posizione le repliche di sola lettura non contribuiscono alla latenza di scrittura.
  • Se è la replica più vicina alla tua applicazione, la replica di sola lettura può solitamente fornire letture non aggiornate senza richiedere un viaggio di andata e ritorno alla regione leader predefinita, supponendo che la mancata aggiornamento sia di almeno 15 secondi. Puoi anche utilizzare le letture dirette per instradare le transazioni di sola lettura e le letture singole a un tipo di replica o a una regione specifici in una configurazione di istanze multi-regione. Per ulteriori informazioni, consulta la sezione Letture dirette.

    Letture efficaci 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 dalla CPU presso il leader, e in genere i dati sono già in viaggio. Questa comunicazione viene gestita automaticamente dal sistema.

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

  • Non sono idonei a diventare leader.

Puoi creare una configurazione di istanze regionali o multiregionali personalizzata e aggiungere repliche di sola lettura facoltative per scalare le letture e supportare letture obsolete a bassa latenza. Puoi aggiungere località elencate in Regione facoltativa come replica di sola lettura facoltativa. Se non visualizzi il modello di sola lettura scelto località di replica, puoi richiedere una nuova regione di replica di sola lettura facoltativa. Non puoi modificare la topologia di replica delle configurazioni delle istanze di base, sono corretti.

Tutte le repliche facoltative di sola lettura sono soggette a capacità di calcolo e archiviazione aggiuntivi. 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 che si trova in un continente diverso da quello della regione leader, consigliamo aggiungendo 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 le prestazioni dei carichi di lavoro nelle istanze non di produzione in la 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 un'immagine dell'istanza con la configurazione base multiregionale eur6 e un replica di sola lettura facoltativa in us-east1, la elevata latenza di lettura prevista per un in us-east1 è di circa 100 millisecondi a causa del tempo di round trip regione leader in europe-west4. Le letture inattive con un livello di inattività sufficiente non vengono incorrere in un viaggio di andata e ritorno e sono quindi molto più veloci. Puoi utilizzare anche Gli approfondimenti sui blocchi e gli insight sulle transazioni per identificare le transazioni che generano latenze elevate.

Per le istruzioni, vedi Creare 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 e scrittura per archiviare una copia completa dei dati e gestire le letture. Repliche replica:

  • Vengono utilizzati in istanze a due e più regioni.
  • Non conservare una copia completa dei dati.
  • Non pubblicare letture.
  • Vota se eseguire il commit delle scritture.
  • Partecipare all'elezione del leader, ma non essere idonei a diventarlo.

Il ruolo delle repliche nelle scritture e nelle letture

Questa sezione descrive il ruolo delle repliche nelle scritture e il che è utile per capire perché Spanner utilizza replica di replica in configurazioni 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 più regioni dell'istanza e la tua applicazione client si trova in una posizione in una regione specifica, Spanner usa il routing leader-aware per instradare le operazioni di lettura e scrittura transazioni in modo dinamico per ridurre la latenza nel database. Per ulteriori informazioni informazioni, vedi Routing sensibile al lead.

La replica leader registra la scrittura in entrata e la inoltra, in parallelo, al altre repliche idonee al voto scritto. 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 "write quorum") accettano di eseguire il commit della scrittura. In background, le repliche rimanenti (non testimoni) registrano la scrittura. Se un sistema operativo è di sola lettura/scrittura la replica rimane indietro nelle scritture di logging, può richiedere i dati mancanti 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 gestite dalla replica leader, perché mantiene i blocchi necessari per in modo forzato la serializzabilità.

  • 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 va a una replica non leader, quest'ultima deve comunicare leader per eseguire la lettura.

    • Le richieste di lettura non aggiornate vengono inviate alla replica di sola lettura o di lettura/scrittura più vicina disponibile che è aggiornata al timestamp della richiesta. Può essere la replica leader se è la replica più vicina al client che ha emesso la richiesta di lettura.