Cassandra wurde für den Umgang mit Big Data entwickelt. Die Hauptfunktion von Cassandra besteht darin, Daten auf mehreren Knoten ohne einen einzigen Fehlerpunkt zu speichern.
Der Grund für diese Art von Cassandra-Architektur war, dass der Hardwarefehler jederzeit auftreten kann. Jeder Knoten kann ausgefallen sein. Im Fehlerfall können auf einem anderen Knoten gespeicherte Daten verwendet werden. Daher ist Cassandra mit seiner verteilten Architektur entworfen.
Cassandra speichert Daten auf verschiedenen Knoten mit einer Peer-to-Peer-verteilten Modearchitektur.
Alle Knoten tauschen Informationen unter Verwendung des Gossip-Protokolls miteinander aus . Gossip ist ein Protokoll in Cassandra, mit dem Knoten miteinander kommunizieren können.
In diesem Tutorial lernen Sie:
- Komponenten von Cassandra
- Datenreplikation
- Schreibvorgang
- Betrieb lesen
Komponenten von Cassandra
Es gibt folgende Komponenten in der Cassandra;
- Knoten
Knoten ist der Ort, an dem Daten gespeichert werden. Es ist die Grundkomponente von Cassandra.
- Rechenzentrum
Eine Sammlung von Knoten wird als Rechenzentrum bezeichnet. Viele Knoten sind als Rechenzentrum kategorisiert.
- Cluster
Der Cluster ist die Sammlung vieler Rechenzentren.
- Protokoll festschreiben
Jeder Schreibvorgang wird in das Commit-Protokoll geschrieben. Das Festschreibungsprotokoll wird für die Wiederherstellung nach einem Absturz verwendet.
- Mem-Tabelle
Nach dem Schreiben von Daten in das Commit-Protokoll werden die Daten in die Mem-Tabelle geschrieben. Die Daten werden vorübergehend in die Mem-Tabelle geschrieben.
- SSTable
Wenn die Mem-Tabelle einen bestimmten Schwellenwert erreicht, werden die Daten in eine SSTable-Datenträgerdatei geschrieben.
Datenreplikation
Da während des Datenprozesses ein Hardwareproblem auftreten oder die Verbindung jederzeit unterbrochen werden kann, ist eine Lösung erforderlich, um eine Sicherung bereitzustellen, wenn das Problem aufgetreten ist. Daher werden Daten repliziert, um sicherzustellen, dass kein einzelner Fehlerpunkt auftritt.
Cassandra platziert Replikate von Daten auf verschiedenen Knoten basierend auf diesen beiden Faktoren.
- Wo das nächste Replikat platziert werden soll, wird durch die Replikationsstrategie festgelegt .
- Die Gesamtzahl der auf verschiedenen Knoten platzierten Replikate wird durch den Replikationsfaktor bestimmt .
Ein Replikationsfaktor bedeutet, dass nur eine einzige Kopie der Daten vorhanden ist, während drei Replikationsfaktoren bedeuten, dass sich drei Kopien der Daten auf drei verschiedenen Knoten befinden.
Um sicherzustellen, dass es keinen einzelnen Fehlerpunkt gibt, muss der Replikationsfaktor drei betragen.
In Cassandra gibt es zwei Arten von Replikationsstrategien.
SimpleStrategy
SimpleStrategy wird verwendet, wenn Sie nur ein Rechenzentrum haben. SimpleStrategy platziert das erste Replikat auf dem vom Partitionierer ausgewählten Knoten. Danach werden die verbleibenden Replikate im Uhrzeigersinn im Knotenring platziert.
Hier ist die bildliche Darstellung der SimpleStrategy.
NetworkTopologyStrategy
NetworkTopologyStrategy wird verwendet, wenn Sie mehr als zwei Rechenzentren haben.
In NetworkTopologyStrategy werden Replikate für jedes Rechenzentrum separat festgelegt. NetworkTopologyStrategy platziert Replikate im Uhrzeigersinn im Ring, bis der erste Knoten in einem anderen Rack erreicht ist.
Diese Strategie versucht, Replikate auf verschiedenen Racks im selben Rechenzentrum zu platzieren. Dies liegt daran, dass manchmal Fehler oder Probleme im Rack auftreten können. Dann können Replikate auf anderen Knoten Daten bereitstellen.
Hier ist die bildliche Darstellung der Netzwerktopologiestrategie
Schreibvorgang
Der Koordinator sendet eine Schreibanforderung an Replikate. Wenn alle Replikate aktiv sind, erhalten sie unabhängig von ihrer Konsistenzstufe eine Schreibanforderung.
Die Konsistenzstufe bestimmt, wie viele Knoten mit der Erfolgsbestätigung antworten.
Der Knoten antwortet mit der Erfolgsbestätigung, wenn Daten erfolgreich in das Festschreibungsprotokoll und in die MemTable geschrieben wurden.
In einem einzelnen Rechenzentrum mit einem Replikationsfaktor von drei erhalten beispielsweise drei Replikate eine Schreibanforderung. Wenn die Konsistenzstufe eins ist, antwortet nur ein Replikat mit der Erfolgsbestätigung, und die verbleibenden zwei bleiben inaktiv.
Angenommen, die verbleibenden zwei Replikate verlieren Daten aufgrund von Knotenausfällen oder einem anderen Problem. Cassandra macht die Zeile durch den in Cassandra integrierten Reparaturmechanismus konsistent.
Hier wird erklärt, wie der Schreibvorgang in Cassandra abläuft.
- Wenn eine Schreibanforderung an den Knoten kommt, protokolliert er zunächst das Festschreibungsprotokoll.
- Dann schreibt Cassandra die Daten in die Mem-Tabelle. Daten, die bei jeder Schreibanforderung in die Mem-Tabelle geschrieben werden, werden auch separat in das Festschreibungsprotokoll geschrieben. Mem-Tabelle sind vorübergehend im Speicher gespeicherte Daten, während das Commit-Protokoll die Transaktionsdatensätze zu Sicherungszwecken protokolliert.
- Wenn die Mem-Tabelle voll ist, werden die Daten in die SSTable-Datendatei geschrieben.
Betrieb lesen
Es gibt drei Arten von Leseanforderungen, die ein Koordinator an Replikate sendet.
- Direkte Anfrage
- Digest-Anfrage
- Reparaturanforderung lesen
Der Koordinator sendet eine direkte Anfrage an eine der Replikate. Danach sendet der Koordinator die Digest-Anforderung an die durch die Konsistenzstufe angegebene Anzahl von Replikaten und prüft, ob es sich bei den zurückgegebenen Daten um aktualisierte Daten handelt.
Danach sendet der Koordinator eine Digest-Anfrage an alle verbleibenden Replikate. Wenn ein Knoten einen veralteten Wert angibt, werden diese Daten durch eine Reparaturanforderung zum Lesen im Hintergrund aktualisiert. Dieser Vorgang wird als Lesereparaturmechanismus bezeichnet.
Zusammenfassung
In diesem Tutorial wird die interne Architektur von Cassandra erläutert und wie Cassandra Daten in verschiedenen Phasen repliziert, schreibt und liest. Außerdem wird hier erklärt, wie Cassandra das Konsistenzniveau während des gesamten Prozesses beibehält.