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.

  • ๐Ÿ•ธ๏ธ Peer-to-peer-design: Varje nod รคr lika och utbyter tillstรฅnd via Gossip-protokollet, sรฅ ingen master finns som kan misslyckas.
  • ๐Ÿงฑ Lagringskomponenter: En skrivning landar i commit-loggen och mem-tabellen, och spolas sedan till en ofรถrรคnderlig SSTable pรฅ disken.
  • ๐Ÿ” Replikeringsstrategi: SimpleStrategy passar ett datacenter, medan NetworkTopologyStrategy placerar repliker per datacenter och per rack.
  • ๐Ÿ”ข Replikationsfaktor: Tre kopior pรฅ tre noder รคr standardinstรคllningen fรถr att ta bort en enskild felpunkt.
  • โš–๏ธ Konsekvensnivรฅer: Den nivรฅ som vรคljs per frรฅga avgรถr hur mรฅnga repliker som mรฅste bekrรคftas innan klienten fรฅr svar.
  • ๐Ÿ” Lรคs sรถkvรคg: Direkta, sammanfattade och lรคsta reparationsfรถrfrรฅgningar kombineras fรถr att returnera aktuell data och i tysthet korrigera inaktuella repliker.

Cassandra ArchiTekturreplikering

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:

Cassandra Architecture
Cassandra ArchiTecture Diagram

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:

SimpleStrategy in Cassandra
SimpleStrategy in Cassandra

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:

NรคtverkstopologiStrategi i Cassandra
NรคtverkstopologiStrategi i Cassandra

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,

  1. Nรคr skrivbegรคran kommer till noden loggas den fรถrst av allt i commit-loggen.
  2. 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.
  3. Nรคr minnestabellen รคr full spolas data till SSTable-datafilen.
Skriva Operation in Cassandra
Skriva Operation in Cassandra

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.

  1. Direkt begรคran
  2. Sammanfattningsfรถrfrรฅgan
  3. 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.

  1. Ocuco-landskapet minnestabell kontrolleras fรถrst, eftersom de senaste skrivningarna รคnnu inte har rensats.
  2. Ocuco-landskapet radcache, om aktiverad, kan svara pรฅ hela fรถrfrรฅgan utan ytterligare arbete.
  3. 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.
  4. Ocuco-landskapet partitionsindex och dess sammanfattning lokaliserar den exakta byte-offseten i alla SSTAble som รถverlever bloom-filterkontrollen.
  5. 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.

Vanliga frรฅgor

Varje nod kontaktar ett fรฅtal peers varje sekund och delar status om sig sjรคlv och alla den kรคnner: liveness, load, schemaversion och tokenintervall. Sรฅ hรคr fรถrblir ett kluster koordinerat utan en master.

Komprimering sammanfogar flera SSTAbeller till en, keeping den senaste versionen av varje kolumn och rader med tombstone-markeringar tas bort. Utan den skulle en lรคsning behรถva berรถra successivt fler filer.

Virtuella noder delar upp varje fysisk maskins andel av tokenringen i mรฅnga smรฅ intervall. Detta sprider data jรคmnare och gรถr det mycket snabbare att lรคgga till eller ersรคtta en nod รคn manuell tokentilldelning.

AI kan tillรคmpa regeln fรถr lรคsning plus skrivning som รคr stรถrre รคn replikeringsfaktorn och fรถreslรฅ en parkoppling, men den acceptabla fรถrรฅldringen fรถr varje frรฅga รคr ett affรคrsbeslut som mรฅste anges fรถrst.

AI lรคser nodetool-utdata och mรคtvรคrden vรคl, sรฅ den รคr effektiv fรถr att upptรคcka heta partitioner, tombstone-uppbyggnad och komprimeringsbackloggar. Alla konfigurationsรคndringar som fรถreslรฅs bรถr fortfarande testas pรฅ ett staging-kluster.

Sammanfatta detta inlรคgg med: