Cassandra - Architektur
Das Entwurfsziel von Cassandra besteht darin, Big-Data-Workloads über mehrere Knoten hinweg ohne einen einzigen Fehlerpunkt zu verarbeiten. Cassandra verfügt über ein Peer-to-Peer-System, das auf seine Knoten verteilt ist, und Daten werden auf alle Knoten in einem Cluster verteilt.
Alle Knoten in einem Cluster spielen dieselbe Rolle. Jeder Knoten ist unabhängig und gleichzeitig mit anderen Knoten verbunden.
Jeder Knoten in einem Cluster kann Lese- und Schreibanforderungen akzeptieren, unabhängig davon, wo sich die Daten tatsächlich im Cluster befinden.
Wenn ein Knoten ausfällt, können Lese- / Schreibanforderungen von anderen Knoten im Netzwerk bedient werden.
Datenreplikation in Cassandra
In Cassandra fungieren einer oder mehrere der Knoten in einem Cluster als Replikate für ein bestimmtes Datenelement. Wenn festgestellt wird, dass einige der Knoten mit einem veralteten Wert geantwortet haben, gibt Cassandra den neuesten Wert an den Client zurück. Nach der Rückgabe des letzten Werts führt Cassandra a ausread repair im Hintergrund, um die veralteten Werte zu aktualisieren.
Die folgende Abbildung zeigt eine schematische Ansicht, wie Cassandra die Datenreplikation zwischen den Knoten in einem Cluster verwendet, um sicherzustellen, dass kein einzelner Fehlerpunkt auftritt.
Note - Cassandra benutzt die Gossip Protocol im Hintergrund, damit die Knoten miteinander kommunizieren und fehlerhafte Knoten im Cluster erkennen können.
Komponenten von Cassandra
Die Schlüsselkomponenten von Cassandra sind wie folgt:
Node - Hier werden Daten gespeichert.
Data center - Es ist eine Sammlung verwandter Knoten.
Cluster - Ein Cluster ist eine Komponente, die ein oder mehrere Rechenzentren enthält.
Commit log- Das Festschreibungsprotokoll ist ein Mechanismus zur Wiederherstellung nach einem Absturz in Cassandra. Jede Schreiboperation wird in das Festschreibungsprotokoll geschrieben.
Mem-table- Eine Mem-Tabelle ist eine speicherresidente Datenstruktur. Nach dem Festschreibungsprotokoll werden die Daten in die Mem-Tabelle geschrieben. Manchmal gibt es für eine einspaltige Familie mehrere Mem-Tabellen.
SSTable - Es handelt sich um eine Datenträgerdatei, in die die Daten aus der Mem-Tabelle gelöscht werden, wenn ihr Inhalt einen Schwellenwert erreicht.
Bloom filter- Dies sind nichts anderes als schnelle, nicht deterministische Algorithmen zum Testen, ob ein Element Mitglied einer Menge ist. Es ist eine besondere Art von Cache. Auf Bloom-Filter wird nach jeder Abfrage zugegriffen.
Cassandra-Abfragesprache
Benutzer können über ihre Knoten mit Cassandra Query Language (CQL) auf Cassandra zugreifen. CQL behandelt die Datenbank(Keyspace)als Container von Tabellen. Programmierer verwendencqlsh: eine Aufforderung, mit CQL oder separaten Anwendungssprachentreibern zu arbeiten.
Clients nähern sich einem der Knoten für ihre Lese- / Schreibvorgänge. Dieser Knoten (Koordinator) spielt einen Proxy zwischen dem Client und den Knoten, die die Daten enthalten.
Schreibvorgänge
Jede Schreibaktivität von Knoten wird von der erfasst commit logsin den Knoten geschrieben. Später werden die Daten erfasst und im gespeichertmem-table. Immer wenn die Mem-Tabelle voll ist, werden Daten in die geschrieben SStableDatendatei. Alle Schreibvorgänge werden automatisch partitioniert und im gesamten Cluster repliziert. Cassandra konsolidiert die SSTables regelmäßig und verwirft unnötige Daten.
Operationen lesen
Während des Lesevorgangs erhält Cassandra Werte aus der Mem-Tabelle und überprüft den Bloom-Filter, um die entsprechende SSTable zu finden, die die erforderlichen Daten enthält.