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.
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:

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:

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:

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,
- Quando la richiesta di scrittura arriva al nodo, prima di tutto, registra nel log di commit.
- 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.
- Quando la tabella mem è piena, i dati vengono trasferiti nel file di dati SSTable.

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.
- Richiesta diretta
- Richiesta di sintesi
- 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.
- Migliori memtable viene controllato per primo, poiché le scritture più recenti non sono ancora state salvate.
- Migliori cache delle righe, se abilitato, può rispondere all'intera richiesta senza ulteriori interventi.
- 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.
- 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.
- 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.

