Cassandra Architecture & Replikationsfaktor
Cassandra er designet til at håndtere Big data. Cassandra's hovedfunktion er at gemme data på flere noder uden et enkelt fejlpunkt.
Årsagen til denne slags Cassandra's arkitektur var, at hardwarefejlen kan opstå når som helst. Enhver node kan være nede. I tilfælde af fejl kan data gemt i en anden node bruges. Derfor, Cassandra er designet med sin distribuerede arkitektur.
Cassandra gemmer data på forskellige noder med en peer to peer distribueret modearkitektur.
Alle knudepunkter udveksler information med hinanden vha Sladder protokol. Sladder er en protokol i Cassandra hvormed noder kan kommunikere med hinanden.
Komponenter af Cassandra Architecture
Der er følgende komponenter i Cassandra Archilære:

Node
Node er det sted, hvor data gemmes. Det er den grundlæggende komponent af Cassandra.
Data Center
En samling af noder kaldes datacenter. Mange noder er kategoriseret som et datacenter.
Cluster
Klyngen er samlingen af mange datacentre.
Commit Log
Hver skriveoperation skrives til Commit Log. Commit log bruges til crash recovery.
Mem-bord
Efter data skrevet i Commit log, skrives data i Mem-tabel. Data skrives midlertidigt i Mem-tabel.
SSTable
Når Mem-table når en vis tærskel, tømmes data til en SSTable diskfil.
Datareplikering i Cassandra
Da hardwareproblem kan opstå, eller linket kan være nede på et hvilket som helst tidspunkt under dataprocessen, er en løsning påkrævet for at give en backup, når problemet er opstået. Så data replikeres for at sikre, at der ikke er et enkelt fejlpunkt.
Cassandra placerer replikaer af data på forskellige noder baseret på disse to faktorer.
- Hvor den næste replika skal placeres, bestemmes af Replikeringsstrategi.
- Mens det samlede antal replikaer placeret på forskellige noder bestemmes af Replikationsfaktor.
En replikeringsfaktor betyder, at der kun er en enkelt kopi af data, mens tre replikeringsfaktor betyder, at der er tre kopier af dataene på tre forskellige noder.
For at sikre, at der ikke er et enkelt fejlpunkt, replikationsfaktor skal være tre.
Der er to slags replikeringsstrategier i Cassandra.
SimpleStrategy i Cassandra
Simpel Strategi bruges, når du kun har ét datacenter. SimpleStrategy placerer den første replika på den node, der er valgt af partitioneren. Derefter placeres resterende replikaer med uret i Node-ringen.
Her er den billedlige repræsentation af SimpleStrategy:

Netværk Topologi Strategi i Cassandra
Netværkstopologistrategi bruges, når du har mere end to datacentre. I NetworkTopologyStrategy indstilles replikaer for hvert datacenter separat. NetworkTopologyStrategy placerer replikaer i urets retning i ringen, indtil den når den første node i et andet rack. Denne strategi forsøger at placere replikaer på forskellige racks i det samme datacenter.
Dette skyldes, at der nogle gange kan opstå fejl eller problemer i stativet. Så kan replikaer på andre noder levere data.
Her er den billedlige repræsentation af netværkstopologistrategien:

Skrive Operation i Cassandra
Koordinatoren sender en skriveanmodning til replikaer. Hvis alle replikaerne er oppe, vil de modtage skriveanmodning uanset deres konsistensniveau.
Konsistensniveau bestemmer, hvor mange noder der vil svare tilbage med succesbekræftelsen.
Noden vil svare tilbage med succesbekræftelsen, hvis data er skrevet med succes til commit-loggen og memTabel.
For eksempel vil tre replikaer modtage skriveanmodninger i et enkelt datacenter med en replikeringsfaktor lig med tre. Hvis konsistensniveauet er ét, vil kun én replika svare tilbage med succesbekræftelsen, og de resterende to vil forblive i dvale.
Antag, at hvis de resterende to replikaer mister data på grund af knudepunkter eller et andet problem, Cassandra vil gøre rækken ensartet ved den indbyggede reparationsmekanisme i Cassandra.
Her er det forklaret, hvordan skriveprocessen foregår i Cassandra,
- Når skriveanmodning kommer til noden, logger den først og fremmest på commit-loggen.
- Derefter Cassandra skriver dataene i mem-tabellen. Data skrevet i mem-tabellen på hver skriveanmodning skriver også i commit-log separat. Mem-table er en midlertidigt gemt data i hukommelsen, mens Commit-log logger transaktionsposterne til sikkerhedskopieringsformål.
- Når mem-tabellen er fuld, tømmes data til SSTable-datafilen.

Læs Operation i Cassandra
Der er tre typer læseanmodninger, som en koordinator sender til replikaer.
- Direkte anmodning
- Sammenfatningsanmodning
- Læs reparationsanmodning
Koordinatoren sender direkte anmodning til en af replikaerne. Derefter sender koordinatoren sammenfatningsanmodningen til det antal replikaer, der er angivet af konsistensniveauet, og kontrollerer, om de returnerede data er opdaterede data.
Derefter sender koordinatoren en sammenfatningsanmodning til alle de resterende replikaer. Hvis en node giver en forældet værdi, vil en anmodning om baggrundslæsereparation opdatere disse data. Denne proces kaldes læsereparationsmekanisme.
Resumé
- Denne vejledning forklarer Cassandra intern arkitektur, og hvordan Cassandra replikerer, skriver og læser data på forskellige stadier.
- Her forklares også hvordan Cassandra opretholder konsistensniveauet gennem hele processen.
- Komponenter af Cassandra Architecture: Node, Datacenter, Cluster, Commit Log, Mem-tabel, SSTable
- En replikeringsfaktor betyder, at der kun er en enkelt kopi af data, mens tre replikeringsfaktor betyder, at der er tre kopier af dataene på tre forskellige noder.
- SimpleStrategy bruges, når du kun har ét datacenter.
- NetworkTopologyStrategy bruges, når du har mere end to datacentre.