Cassandra Architecture & Replikationsfaktor
โก Smart sammanfattning
Cassandra arkitekturen distribuerar data mellan peer-noder utan en enda felpunkt, med hjรคlp av Gossip fรถr koordinering och replikering fรถr hรฅllbarhet. Den hรคr sidan tรคcker varje komponent, bรฅde replikeringsstrategier, konsekvensnivรฅer och de interna skriv- och lรคsvรคgarna.

Cassandra รคr utformad fรถr att hantera Stora data. CassandraHuvudfunktionen รคr att lagra data pรฅ flera noder utan en enda felpunkt.
Anledningen till denna typ av Cassandras arkitektur var att hรฅrdvarufelet kan uppstรฅ nรคr som helst. Vilken nod som helst kan vara nere. Vid fel kan data som lagras i en annan nod anvรคndas. Dรคrfรถr, Cassandra รคr designad med sin distribuerade arkitektur.
Cassandra lagrar data pรฅ olika noder med en peer-to-peer-distribuerad modearkitektur.
Alla noder utbyter information med varandra med hjรคlp av Skvallerprotokoll. Skvaller รคr ett protokoll i Cassandra genom vilka noder kan kommunicera med varandra.
Komponenter av Cassandra Architecture
Det finns fรถljande komponenter i Cassandra Architecture:

Diagrammet ovan kapslar komponenterna: noder sitter inuti ett datacenter, datacenter sitter inuti ett kluster och commit-loggen, memtablen och SSTablen finns inuti varje enskild nod.
Nod
Noden รคr platsen dรคr data lagras. Det รคr den grundlรคggande komponenten i Cassandra.
Data Center
En samling noder kallas datacenter. Mรฅnga noder kategoriseras som ett datacenter.
Cluster
Klustret รคr samlingen av mรฅnga datacenter.
Commit Log
Varje skrivoperation skrivs till Commit Log. Commit log anvรคnds fรถr kraschรฅterstรคllning.
Mem-bord
Efter att data skrivits i Commit-loggen skrivs data i Mem-tabell. Data skrivs tillfรคlligt i Mem-tabellen.
SSTable
Nรคr Mem-tabellen nรฅr ett visst trรถskelvรคrde spolas data till en SSTable-diskfil. SSTables รคr ofรถrรคnderliga, sรฅ en uppdatering skriver en ny version istรคllet fรถr att redigera den gamla, och en bakgrundsprocess som kallas komprimering sammanfogar senare dessa versioner och kasserar de ersatta raderna.
Datareplikering i Cassandra
Eftersom maskinvaruproblem kan uppstรฅ eller lรคnken kan vara nere nรคr som helst under dataprocessen, krรคvs en lรถsning fรถr att tillhandahรฅlla en sรคkerhetskopia nรคr problemet har uppstรฅtt. Sรฅ data replikeras fรถr att sรคkerstรคlla att det inte finns nรฅgon enskild felpunkt.
Cassandra placerar repliker av data pรฅ olika noder baserat pรฅ dessa tvรฅ faktorer.
- Var nรคsta replik ska placeras bestรคms av Replikeringsstrategi.
- Medan det totala antalet repliker placerade pรฅ olika noder bestรคms av Replikeringsfaktor.
En replikeringsfaktor betyder att det bara finns en kopia av data medan tre replikeringsfaktorer betyder att det finns tre kopior av data pรฅ tre olika noder.
Fรถr att sรคkerstรคlla att det inte finns nรฅgon enskild punkt av misslyckande, replikeringsfaktorn mรฅste vara tre.
Det finns tvรฅ typer av replikeringsstrategier i Cassandra.
SimpleStrategy in Cassandra
Enkel Strategi anvรคnds nรคr du bara har ett datacenter. SimpleStrategy placerar den fรถrsta repliken pรฅ noden som vรคljs av partitioneraren. Dรคrefter placeras รฅterstรฅende repliker medurs i Nod-ringen.
Hรคr รคr den bildliga representationen av SimpleStrategy:

NรคtverkstopologiStrategi i Cassandra
Nรคtverkstopologistrategi anvรคnds nรคr du har fler รคn tvรฅ datacenter. I NetworkTopologyStrategy stรคlls repliker in fรถr varje datacenter separat. NetworkTopologyStrategy placerar repliker medurs i ringen tills den nรฅr den fรถrsta noden i ett annat rack. Denna strategi fรถrsรถker placera repliker pรฅ olika rack i samma datacenter.
Detta beror pรฅ att det ibland kan uppstรฅ fel eller problem i racket. Sedan kan repliker pรฅ andra noder tillhandahรฅlla data.
Hรคr รคr den bildliga representationen av nรคtverkstopologistrategin:

Replikeringsfaktorn avgรถr hur mรฅnga kopior som finns. Hur mรฅnga av dessa kopior som mรฅste svara pรฅ en given begรคran รคr en separat instรคllning, som beskrivs nedan.
Konsistensnivรฅer i Cassandra
Konsekvensnivรฅn anges per frรฅga snarare รคn per kluster, vilket รคr det som gรถr Cassandra avstรคmbar. Den anger hur mรฅnga repliker som mรฅste bekrรคfta en skrivning, eller svara pรฅ en lรคsning, innan koordinatorn svarar klienten. En lรฅg nivรฅ returnerar snabbare; en hรถg nivรฅ returnerar data som รคr mer sรคkrast aktuella.
| Nivรฅ | Beteende | Typisk anvรคndning |
|---|---|---|
| ONE | En replik mรฅste svara. | Hรถg dataรถverfรถringshastighetsloggning dรคr enstaka inaktuella avlรคsningar รคr acceptabla. |
| BESLUTSMรSSIGT ANTAL | En majoritet av alla repliker mรฅste svara, berรคknat som (RF / 2) + 1. | Det universella valet fรถr balanserad konsistens och tillgรคnglighet. |
| LOKAL_KVORUM | En majoritet av replikerna inom det lokala datacentret mรฅste svara. | Kluster med flera datacenter, eftersom det undviker latens mellan regioner. |
| ALLA | Varje replik mรฅste svara. | Sรคllsynt. En nod ner gรถr att begรคran misslyckas helt. |
| Nร GON (endast skriver) | En antydd รถverlรคmning rรคknas som lyckad รคven om ingen replik รคr nรฅbar. | Maximal skrivtillgรคnglighet dรคr hรฅllbarheten kan avslappnas. |
Stark konsistens garanteras nรคr lรคsnivรฅn plus skrivnivรฅn รถverstiger replikeringsfaktorn. Med en replikeringsfaktor pรฅ tre uppfyller skrivning vid QUORUM och lรคsning vid QUORUM den regeln, eftersom tvรฅ plus tvรฅ รคr stรถrre รคn tre. Att skriva vid ETT och lรคsning vid ETT gรถr det inte, och en lรคsning kan dรคrfรถr returnera ett รคldre vรคrde.
Nรคr en replik inte kan nรฅs lagrar koordinatorn en antyda och spelar upp den igen nรคr noden รฅtervรคnder, vilket รคr hur ALLA nivรฅer och mycket av Cassandras sjรคlvlรคkande beteende fungerar.
Skriva Operation in Cassandra
Samordnaren skickar en skrivfรถrfrรฅgan till repliker. Om alla replikerna รคr uppe kommer de att fรฅ skrivbegรคran oavsett deras konsistensnivรฅ.
Konsistensnivรฅ bestรคmmer hur mรฅnga noder som kommer att svara tillbaka med framgรฅngsbekrรคftelsen.
Noden kommer att svara tillbaka med framgรฅngsbekrรคftelsen om data skrivs framgรฅngsrikt till commit-loggen och minnestabell.
Till exempel, i ett enda datacenter med en replikeringsfaktor som รคr lika med tre, kommer tre repliker att ta emot skrivbegรคran. Om konsistensnivรฅn รคr en, kommer bara en replik att svara tillbaka med framgรฅngsbekrรคftelsen, och de รฅterstรฅende tvรฅ kommer att fรถrbli vilande.
Anta att om de รฅterstรฅende tvรฅ replikerna fรถrlorar data pรฅ grund av nodnedgรฅngar eller nรฅgot annat problem, Cassandra kommer att gรถra raden konsekvent med den inbyggda reparationsmekanismen i Cassandra.
Hรคr fรถrklaras hur skrivprocessen gรฅr till Cassandra,
- Nรคr skrivbegรคran kommer till noden loggas den fรถrst av allt i commit-loggen.
- Sedan Cassandra skriver data i mem-tabellen. Data som skrivs i minnestabellen pรฅ varje skrivbegรคran skrivs ocksรฅ i commit-loggen separat. Mem-tabell รคr en tillfรคlligt lagrad data i minnet medan Commit-logg loggar transaktionsposterna fรถr sรคkerhetskopieringsรคndamรฅl.
- Nรคr minnestabellen รคr full spolas data till SSTable-datafilen.

Eftersom SSTAbeller aldrig redigeras pรฅ plats, tar en borttagning inte bort raden omedelbart. Istรคllet anvรคnds en markรถr som kallas en gravsten skrivs, och raden fรถrsvinner endast nรคr komprimeringen kรถrs efter respitperioden. Det รคr dรคrfรถr tunga borttagningsarbetsbelastningar gรถr att lรคsningen saktas ner tills komprimeringen kommer ikapp.
Lรคsa Operation in Cassandra
Det finns tre typer av lรคsbegรคranden som en samordnare skickar till repliker.
- Direkt begรคran
- Sammanfattningsfรถrfrรฅgan
- Lรคs reparationsfรถrfrรฅgan
Samordnaren skickar direkt fรถrfrรฅgan till en av replikerna. Dรคrefter skickar koordinatorn sammanfattningsbegรคran till antalet repliker som anges av konsistensnivรฅn och kontrollerar om den returnerade datan รคr en uppdaterad data.
Efter det skickar koordinatorn sammanfattningsbegรคran till alla รฅterstรฅende repliker. Om nรฅgon nod ger ett inaktuellt vรคrde kommer en bakgrundslรคsreparationsbegรคran att uppdatera dessa data. Denna process kallas lรคsreparationsmekanism.
Inuti repliken som tar emot den direkta begรคran รคr sรถkordningen utformad fรถr att undvika att vidrรถra disken dรคr det รคr mรถjligt.
- Ocuco-landskapet minnestabell kontrolleras fรถrst, eftersom de senaste skrivningarna รคnnu inte har rensats.
- Ocuco-landskapet radcache, om aktiverad, kan svara pรฅ hela fรถrfrรฅgan utan ytterligare arbete.
- A blomfilter konsulteras fรถr varje SSTAbell. Den svarar definitivt inte nรคrvarande eller mรถjligen nรคrvarande, vilket gรถr att de flesta SSTAbeller kan hoppas รถver utan att lรคsa dem.
- Ocuco-landskapet partitionsindex och dess sammanfattning lokaliserar den exakta byte-offseten i alla SSTAble som รถverlever bloom-filterkontrollen.
- Matchande fragment frรฅn flera SSTAbeller slรฅs samman, dรคr den senaste tidsstรคmpeln vinner fรถr varje kolumn.
Bloomfiltret รคr det steg som hรฅller lรคsningarna snabba allt eftersom data vรคxer, eftersom det tar bort nรคstan alla SSTAbeller frรฅn beaktande innan nรฅgon disksรถkning sker. Att tillรคmpa dessa mekanismer pรฅ flera maskiner behandlas i Cassandra kluster handledning.
