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 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 di base su cui si basa Spanner offre già la replica a livello di byte, Spanner replica anche i dati per offrire 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, poi le memorizza in aree geografiche diverse. Spanner utilizza uno schema di replica sincrona 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 globale ti consente di leggere i dati più aggiornati da qualsiasi replica di Spanner di sola lettura o di lettura/scrittura.
Spanner crea repliche di ogni split del database. Un split 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 serve ogni replica da una zona di errore indipendente. 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. Le repliche leader gestiscono le scritture, mentre le repliche di lettura/scrittura o di sola lettura possono soddisfare una richiesta di lettura senza comunicare con la replica 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 dati li rende più disponibili per i clienti che vogliono leggerli. Inoltre, Spanner può eseguire comunque le scritture anche se alcune delle repliche non sono disponibili, perché per eseguire il commit di una scrittura è necessaria solo la maggioranza delle repliche con diritto di voto.
Località geografica: la possibilità di posizionare i dati in regioni e continenti diversi con Spanner significa che i dati possono essere geograficamente più vicini e quindi più rapidi da accedere per gli utenti e i 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 di applicazioni più semplice: poiché Spanner è conforme allo standard ACID e offre una elevata coerenza a livello globale, gli sviluppatori che utilizzano Spanner non devono aggiungere logica aggiuntiva alle loro applicazioni per gestire la coerenza finale, rendendo lo sviluppo e la successiva manutenzione delle applicazioni più rapidi e semplici.
Tipi di replica
Spanner ha tre tipi di repliche: repliche di lettura/scrittura, repliche di sola lettura e repliche di testimone. Le regioni e le topialogie di replica che formano le configurazioni di istanze di base sono fisse:
- Le configurazioni di istanze a regione singola (regionali) di base utilizzano solo repliche di lettura/scrittura.
- Le configurazioni di istanze a due regioni di base utilizzano repliche di lettura/scrittura e di testimone.
- Le configurazioni di istanze multiregione di base utilizzano una combinazione di tutti e tre i tipi di replica.
Puoi creare configurazioni di istanze personalizzate e aggiungere altre repliche di sola lettura per le configurazioni di istanze regionali e su più regioni.
La seguente tabella riassume i tipi di repliche di Spanner e le relative proprietà:
Tipo di replica | Può votare | Può diventare leader | Può pubblicare letture | Può configurare la replica manualmente |
---|---|---|---|---|
Lettura/scrittura | sì | sì | sì | no |
Sola lettura | no | no | sì | yes* |
Testimonio | sì | no | no | no |
* Per ulteriori 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:
- Mantieni una copia completa dei tuoi dati.
- Leggi.
- Può votare se eseguire o meno l'commit di 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 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. Repliche di sola lettura:
- Mantieni una copia completa dei dati, che viene replicata dalla replica leader di lettura/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 soddisfi i requisiti di idoneità per diventare un leader.
- Leggi.
Se è la replica più vicina alla tua applicazione, la replica di sola lettura può solitamente eseguire letture non aggiornate senza richiedere un viaggio di andata e ritorno alla regione leader, assumendo 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 specifico o a una regione in una configurazione di istanze multi-regione. Per ulteriori informazioni, consulta Letture dirette.
Le letture sicure potrebbero richiedere un viaggio di andata e ritorno alla replica leader. Il viaggio di andata e ritorno è solo per la negoziazione del timestamp, non per l'invio dei dati effettivi dal 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 sulle letture obsolete e attendibili, consulta la sezione Letture.
Repliche di sola lettura facoltative
Puoi creare una configurazione di istanze regionali o multiregionali personalizzata e aggiungere repliche di sola lettura facoltative per scalare le letture e supportare letture non aggiornate a bassa latenza. Puoi aggiungere le località elencate in Regione facoltativa come replica di sola lettura facoltativa. Se non visualizzi la località della replica di sola lettura scelta, 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 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 almeno due repliche di sola lettura. In questo modo, la latenza di lettura rimane bassa anche 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. Per i dati sulla latenza interregionale mediana, puoi consultare la
dashboard di benchmark della latenza e del throughput interregionale. 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, consulta Creare una configurazione dell'istanza personalizzata.
Repliche di sola lettura
Le repliche di testimoni non supportano le letture, ma partecipano al voto per confermare 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 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 all'elezione del leader, ma non essere idonei a diventare un 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 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 istanze a due regioni o multiregionali e la tua applicazione client si trova in una regione non leader, Spanner utilizza il routing consapevole del leader per indirizzare dinamicamente le transazioni di lettura/scrittura in modo da 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 e poi risponde al leader con un voto sull'opportunità di eseguire il commit della scrittura. La scrittura viene confermata quando la maggioranza delle repliche con diritto di voto (o quorum di scrittura) accetta di confermarla. 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 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é la replica leader gestisce i blocchi necessari per applicare la serializzazione.
I metodi di lettura singola (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 ulteriori informazioni sulle modalità di concorrenza, consulta 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 non aggiornate vengono inviate alla replica di sola lettura o di lettura/scrittura più vicina disponibile 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 dalla replica leader alle repliche tra regioni nella configurazione dell'istanza. La frequenza di variazione è in byte al secondo e la quantità di dati
è in byte. A tale 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:
Nella console Google Cloud, vai a Monitoraggio:
Nel menu di navigazione, seleziona Esploratore delle metriche.
Nel campo Metrica, fai clic sul menu a discesa Seleziona una metrica.
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. In caso contrario, viene visualizzata in Metriche non attive. Per impostazione predefinita, l'interfaccia utente filtra e mostra solo le metriche attive. Deseleziona il segno di spunta Attivo per visualizzare sia le metriche attive sia quelle non attive.
Il grafico mostra la frequenza di variazione (in byte al secondo) dei dati replicati su tutte le istanze Spanner nell'intervallo di tempo specificato.
(Facoltativo) Per visualizzare la quantità di dati (in byte) replicati anziché la frequenza di variazione:
- Nel campo Aggregazione, fai clic sul menu a discesa Somma e seleziona Configura allineatore.
- Nel campo Funzione di allineamento, fai clic sul menu a discesa Tasso e seleziona Delta.
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.
(Facoltativo) Per visualizzare l'utilizzo per una determinata istanza o un attributo:
- 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.
- Fai clic su Aggiungi filtro per aggiungere più filtri.
Per un elenco completo delle metriche di Google Cloud, consulta Metriche di Google Cloud.
Passaggi successivi
- Scopri di più sulle configurazioni delle istanze.
- Scopri come creare e gestire le istanze.
- Scopri come creare e gestire le configurazioni delle istanze.
- Scopri di più su regioni e geografia di Google Cloud.