Cassandra Archistruttura e fattore di replica

⚡ Riepilogo intelligente

Cassandra L'architettura distribuisce i dati tra nodi peer senza un singolo punto di guasto, utilizzando il gossip per il coordinamento e la replica per la durabilità. Questa pagina descrive ogni componente, sia le strategie di replica, sia i livelli di coerenza, sia i percorsi interni di scrittura e lettura.

  • 🕸️ Progettazione peer-to-peer: Ogni nodo è uguale e scambia stato tramite il protocollo gossip, quindi non esiste un nodo master che possa fallire.
  • 🧱 Componenti di archiviazione: Una scrittura viene registrata nel log delle transazioni e nella memtable, quindi viene salvata su un'unità SSTable immutabile sul disco.
  • 🔁 Strategia di replica: SimpleStrategy è adatta a un singolo data center, mentre NetworkTopologyStrategy posiziona le repliche per ogni data center e per ogni rack.
  • 🔢 Fattore di replica: La configurazione standard prevede tre copie su tre nodi per eliminare qualsiasi singolo punto di guasto.
  • Livelli di coerenza: Il livello scelto per ogni query determina quante repliche devono confermare la richiesta prima che il client riceva una risposta.
  • 🔍 Percorso di lettura: Le richieste di riparazione dirette, elaborate e lette si combinano per restituire i dati correnti e correggere silenziosamente le repliche obsolete.

Cassandra ArchiReplicazione della struttura

Cassandra è progettato per gestire Big Data. CassandraLa caratteristica principale di è quella di archiviare i dati su più nodi senza un singolo punto di errore.

Il motivo di questo tipo di CassandraL'architettura di era tale che il guasto hardware può verificarsi in qualsiasi momento. Qualsiasi nodo può essere inattivo. In caso di guasto, i dati memorizzati in un altro nodo possono essere utilizzati. Quindi, Cassandra è progettato con la sua architettura distribuita.

Cassandra memorizza i dati su nodi diversi con un'architettura distribuita peer-to-peer.

Tutti i nodi si scambiano informazioni tra loro utilizzando Protocollo di pettegolezzi. Il pettegolezzo è un protocollo in Cassandra attraverso il quale i nodi possono comunicare tra loro.

Componenti di Cassandra Architectura

Ci sono i seguenti componenti nel Cassandra Architecnologia:

Cassandra Architectura
Cassandra Archidiagramma della struttura

Il diagramma sopra illustra la struttura a livelli dei componenti: i nodi si trovano all'interno di un data center, i data center si trovano all'interno di un cluster e il log delle transazioni, la memtable e la SSTable risiedono all'interno di ogni singolo nodo.

Nodo

Il nodo è il luogo in cui vengono archiviati i dati. È la componente base di Cassandra.

Banca dati

Una raccolta di nodi è chiamata data center. Molti nodi sono classificati come data center.

Cluster

Il cluster è la raccolta di molti data center.

Registro dei commit

Ogni operazione di scrittura viene scritta nel log di commit. Il registro di commit viene utilizzato per il ripristino da arresto anomalo.

Tabella Mem

Dopo che i dati sono stati scritti nel log di commit, i dati vengono scritti nella tabella Mem. I dati vengono scritti temporaneamente nella tabella Mem.

SSTable

Quando la tabella Mem-table raggiunge una determinata soglia, i dati vengono scritti su un file SSTable su disco. Gli SSTable sono immutabili, quindi un aggiornamento scrive una nuova versione anziché modificare quella precedente, e un processo in background chiamato compattazione unisce successivamente queste versioni ed elimina le righe obsolete.

Replica dei dati in Cassandra

Poiché possono verificarsi problemi hardware o il collegamento può essere interrotto in qualsiasi momento durante l'elaborazione dei dati, è necessaria una soluzione per fornire un backup quando si verifica il problema. Pertanto i dati vengono replicati per garantire l'assenza di singoli punti di errore.

Cassandra posiziona repliche di dati su nodi diversi in base a questi due fattori.

  • Dove posizionare la replica successiva è determinato da Strategia di replica.
  • Mentre il numero totale di repliche posizionate su nodi diversi è determinato da Fattore di replica.

Un fattore di replica significa che esiste una sola copia dei dati mentre tre fattori di replica significano che esistono tre copie dei dati su tre nodi diversi.

Per garantire che non vi sia alcun singolo punto di errore, il fattore di replica deve essere tre.

Esistono due tipi di strategie di replica in Cassandra.

SimpleStrategy dentro Cassandra

Strategia semplice viene utilizzato quando si ha un solo data center. SimpleStrategy posiziona la prima replica sul nodo selezionato dal partizionatore. Dopodiché, le repliche rimanenti vengono posizionate in senso orario nell'anello Node.

Ecco la rappresentazione pittorica della SimpleStrategy:

SimpleStrategy dentro Cassandra
SimpleStrategy dentro Cassandra

Strategia della topologia di rete in Cassandra

Strategia della topologia di rete viene utilizzato quando si hanno più di due data center. In NetworkTopologyStrategy, le repliche sono impostate separatamente per ogni data center. NetworkTopologyStrategy posiziona le repliche in senso orario nell'anello finché non raggiunge il primo nodo in un altro rack. Questa strategia cerca di posizionare le repliche su rack diversi nello stesso data center.

Ciò è dovuto al fatto che a volte possono verificarsi guasti o problemi nel rack. Quindi le repliche su altri nodi possono fornire dati.

Ecco la rappresentazione pittorica della strategia di topologia di rete:

Strategia della topologia di rete in Cassandra
Strategia della topologia di rete in Cassandra

Il fattore di replica determina quante copie esistono. Il numero di copie che devono rispondere a una determinata richiesta è un'impostazione separata, descritta di seguito.

Livelli di coerenza in Cassandra

Il livello di coerenza è impostato per query piuttosto che per cluster, ed è questo che lo rende Cassandra Regolabile. Indica quante repliche devono confermare una scrittura o rispondere a una lettura prima che il coordinatore risponda al client. Un livello basso restituisce dati più velocemente; un livello alto restituisce dati con maggiore certezza aggiornati.

Livella Comportamento Utilizzo tipico
ONE Una delle repliche deve rispondere. Registrazione ad alta velocità in cui una lettura occasionale di dati non aggiornati è accettabile.
QUORUM La maggioranza di tutte le repliche deve rispondere, calcolata come (RF / 2) + 1. La scelta ideale per chi cerca un prodotto versatile, con un buon equilibrio tra consistenza e disponibilità.
QUORUM_LOCALE La maggior parte delle repliche all'interno del data center locale deve rispondere. Cluster multi-data center, perché evitano la latenza tra regioni diverse.
TUTTO Ogni replica deve rispondere. Raro. Un nodo non funzionante causa il fallimento completo della richiesta.
QUALSIASI (solo scrittura) Un passaggio di consegne accennato viene considerato un successo anche se non è possibile raggiungere alcuna replica. Massima disponibilità di scrittura laddove la durabilità può essere rilassata.

La coerenza forte è garantita quando la somma del livello di lettura e del livello di scrittura supera il fattore di replica. Con un fattore di replica pari a tre, la scrittura al livello QUORUM e la lettura al livello QUORUM soddisfano questa regola, perché due più due è maggiore di tre. La scrittura al livello ONE e la lettura al livello ONE non la soddisfano, e pertanto una lettura potrebbe restituire un valore più vecchio.

Quando una replica non è raggiungibile, il coordinatore memorizza un accennare e lo riproduce una volta che il nodo ritorna, ed è così che funziona il livello ANY e gran parte di Cassandrail comportamento di autoguarigione funziona.

Scrivi Operazione in Cassandra

Il coordinatore invia una richiesta di scrittura alle repliche. Se tutte le repliche sono attive, riceveranno una richiesta di scrittura indipendentemente dal loro livello di coerenza.

Livello di coerenza determina quanti nodi risponderanno con la conferma di successo.

Il nodo risponderà con la conferma di successo se i dati vengono scritti correttamente nel log di commit e memTable.

Ad esempio, in un singolo data center con un fattore di replica pari a tre, tre repliche riceveranno una richiesta di scrittura. Se il livello di coerenza è uno, solo una replica risponderà con la conferma dell'esito positivo e le restanti due rimarranno inattive.

Supponiamo che le due repliche rimanenti perdano dati a causa di nodi inattivi o di qualche altro problema, Cassandra renderà la riga coerente grazie al meccanismo di riparazione integrato in Cassandra.

Qui viene spiegato come avviene il processo di scrittura Cassandra,

  1. Quando la richiesta di scrittura arriva al nodo, prima di tutto, registra nel log di commit.
  2. Poi Cassandra scrive i dati nella tabella mem. I dati scritti nella tabella mem su ogni richiesta di scrittura vengono scritti anche separatamente nel log di commit. Mem-table è un dato archiviato temporaneamente nella memoria mentre il log di commit registra i record delle transazioni a scopo di backup.
  3. Quando la tabella mem è piena, i dati vengono trasferiti nel file di dati SSTable.
Scrivi Operazione in Cassandra
Scrivi Operazione in Cassandra

Poiché gli SSTable non vengono mai modificati sul posto, un'eliminazione non rimuove immediatamente la riga. Invece un marcatore chiamato lapide viene scritto e la riga scompare solo quando la compattazione viene eseguita dopo il periodo di grazia. Questo è il motivo per cui i carichi di lavoro di cancellazione intensivi rallentano le letture finché la compattazione non si aggiorna.

Leggi Operazione in Cassandra

Esistono tre tipi di richieste di lettura che un coordinatore invia alle repliche.

  1. Richiesta diretta
  2. Richiesta di sintesi
  3. Leggi la richiesta di riparazione

Il coordinatore invia una richiesta diretta a una delle repliche. Successivamente, il coordinatore invia la richiesta digest al numero di repliche specificato dal livello di coerenza e controlla se i dati restituiti sono dati aggiornati.

Successivamente, il coordinatore invia la richiesta digest a tutte le repliche rimanenti. Se un nodo fornisce un valore non aggiornato, una richiesta di riparazione in lettura in background aggiornerà tali dati. Questo processo è chiamato meccanismo di riparazione della lettura.

All'interno della replica che riceve la richiesta diretta, l'ordine di ricerca è progettato per evitare, ove possibile, di accedere al disco.

  1. Migliori memtable viene controllato per primo, poiché le scritture più recenti non sono ancora state salvate.
  2. Migliori cache delle righe, se abilitato, può rispondere all'intera richiesta senza ulteriori interventi.
  3. A filtro fioritura viene consultato per ogni SSTable. Risponde sicuramente non presente o potenzialmente presente, il che consente di saltare la maggior parte degli SSTable senza leggerli.
  4. Migliori indice di partizione e il suo riepilogo individuano l'esatto offset in byte all'interno di qualsiasi SSTable che superi il controllo del filtro Bloom.
  5. I frammenti corrispondenti provenienti da diverse SSTable vengono uniti, e per ogni colonna prevale il timestamp più recente.

Il filtro bloom è il passaggio che mantiene veloci le letture man mano che i dati crescono, perché rimuove quasi ogni SSTable dalla considerazione prima che avvenga qualsiasi ricerca su disco. L'applicazione di questi meccanismi su più macchine è trattata in Cassandra gruppo tutorial.

DOMANDE FREQUENTI

Ogni nodo contatta alcuni peer ogni secondo e condivide informazioni su se stesso e su tutti i nodi con cui è in contatto: stato di attività, carico, versione dello schema e intervalli di token. È così che un cluster rimane coordinato senza un nodo master.

La compattazione unisce più SSTable in uno solo, mantenendoping la versione più recente di ogni colonna e scartando le righe contrassegnate come obsolete. Senza di essa, una lettura dovrebbe accedere a un numero progressivamente maggiore di file.

I nodi virtuali suddividono la quota di token ring di ciascuna macchina fisica in molti intervalli più piccoli. Questo distribuisce i dati in modo più uniforme e rende l'aggiunta o la sostituzione di un nodo molto più rapida rispetto all'assegnazione manuale dei token.

L'IA può applicare la regola "lettura più scrittura maggiore del fattore di replica" e suggerire un abbinamento, ma la scadenza accettabile per ogni query è una decisione aziendale che deve essere fornita in anticipo.

L'intelligenza artificiale interpreta correttamente l'output e le metriche di nodetool, risultando quindi efficace nell'individuare partizioni critiche, accumulo di file eliminati e ritardi nella compattazione. Qualsiasi modifica alla configurazione proposta dovrebbe comunque essere testata su un cluster di staging.

Riassumi questo post con: