Cassandra Architextuur en replicatiefactor

โšก Slimme samenvatting

Cassandra De architectuur verdeelt gegevens over peer-nodes zonder single point of failure, waarbij gossip wordt gebruikt voor coรถrdinatie en replicatie voor duurzaamheid. Deze pagina behandelt elk onderdeel, zowel de replicatiestrategieรซn en consistentieniveaus als de interne schrijf- en leespaden.

  • ๏ธ Peer-to-peer ontwerp: Elk knooppunt is gelijkwaardig en wisselt statusinformatie uit via het gossip-protocol, waardoor er geen master bestaat die kan uitvallen.
  • ๐Ÿงฑ Opslagcomponenten: Een schrijfbewerking wordt vastgelegd in het commitlogboek en de memtable, waarna de gegevens worden weggeschreven naar een onveranderlijke SSTable op de schijf.
  • ๐Ÿ” Replicatiestrategie: SimpleStrategy is geschikt voor รฉรฉn datacenter, terwijl NetworkTopologyStrategy replica's per datacenter en per rack plaatst.
  • ๐Ÿ”ข Replicatiefactor: Drie kopieรซn op drie knooppunten is de standaardinstelling om elk potentieel storingspunt te elimineren.
  • โ€‹ Consistentieniveaus: Het per query gekozen niveau bepaalt hoeveel replica's een bevestiging moeten ontvangen voordat de client een antwoord krijgt.
  • ๐Ÿ” Leespad: Directe, digest- en leesreparatieverzoeken worden gecombineerd om actuele gegevens terug te geven en verouderde replica's stilletjes te corrigeren.

Cassandra Archistructuurreplicatie

Cassandra is ontworpen om te hanteren Big data. CassandraHet belangrijkste kenmerk van het systeem is het opslaan van gegevens op meerdere knooppunten, zonder dat er sprake is van een enkel storingspunt.

De reden voor dit soort Cassandra's architectuur was dat de hardwarestoring op elk moment kan optreden. Elk knooppunt kan down zijn. In geval van storing kunnen gegevens die in een ander knooppunt zijn opgeslagen, worden gebruikt. Daarom, Cassandra is ontworpen met een gedistribueerde architectuur.

Cassandra slaat gegevens op op verschillende knooppunten met een peer-to-peer gedistribueerde modearchitectuur.

Alle knooppunten wisselen informatie met elkaar uit via Roddel protocol. Roddelen is een protocol in Cassandra waarmee knooppunten met elkaar kunnen communiceren.

Onderdelen van Cassandra Architectuur

Er zijn de volgende componenten in de Cassandra Archistructuur:

Cassandra Architectuur
Cassandra Archistructuurdiagram

Het bovenstaande diagram toont de geneste componenten: knooppunten bevinden zich in een datacenter, datacenters bevinden zich in een cluster, en het commitlog, de memtable en de SSTable bevinden zich in elk afzonderlijk knooppunt.

Knooppunt

Knooppunt is de plaats waar gegevens worden opgeslagen. Het is het basisbestanddeel van Cassandra.

Data Center

Een verzameling knooppunten wordt een datacenter genoemd. Veel knooppunten zijn gecategoriseerd als datacenter.

Cluster

Een cluster is een verzameling van meerdere datacenters.

Vastleggingslogboek

Elke schrijfbewerking wordt naar Commit Log geschreven. Commit log wordt gebruikt voor crashherstel.

Mem-tabel

Nadat de gegevens in het Commit-logboek zijn geschreven, worden de gegevens in de Mem-tabel geschreven. Gegevens worden tijdelijk in de Mem-tabel geschreven.

SSTabel

Wanneer Mem-table een bepaalde drempelwaarde bereikt, worden de gegevens naar een SSTable-schijfbestand weggeschreven. SSTables zijn onveranderlijk, dus een update schrijft een nieuwe versie weg in plaats van de oude te bewerken. Een achtergrondproces genaamd compactie voegt deze versies later samen en verwijdert de vervangen rijen.

Gegevensreplicatie in Cassandra

Omdat er op elk moment tijdens het gegevensproces een hardwareprobleem kan optreden of de verbinding verbroken kan worden, is er een oplossing nodig om een โ€‹โ€‹back-up te maken wanneer het probleem zich heeft voorgedaan. Gegevens worden dus gerepliceerd om er zeker van te zijn dat er geen enkel storingspunt is.

Cassandra plaatst replica's van gegevens op verschillende knooppunten op basis van deze twee factoren.

  • Waar de volgende replica moet worden geplaatst, wordt bepaald door de Strategie voor replicatie.
  • Terwijl het totale aantal replica's dat op verschillende knooppunten wordt geplaatst, wordt bepaald door de Replicatiefactor.

Eรฉn replicatiefactor betekent dat er slechts รฉรฉn kopie van de gegevens is, terwijl drie replicatiefactoren betekenen dat er drie kopieรซn van de gegevens op drie verschillende knooppunten zijn.

Om ervoor te zorgen dat er geen enkel punt van mislukking is, replicatiefactor moet drie zijn.

Er zijn twee soorten replicatiestrategieรซn in Cassandra.

SimpleStrategie in Cassandra

Eenvoudige Strategie wordt gebruikt wanneer u slechts รฉรฉn datacenter hebt. SimpleStrategy plaatst de eerste replica op het knooppunt dat door de partitioner is geselecteerd. Daarna worden de resterende replica's met de klok mee in de Node-ring geplaatst.

Hier is de grafische weergave van de SimpleStrategy:

SimpleStrategie in Cassandra
SimpleStrategie in Cassandra

NetwerkTopologieStrategie in Cassandra

NetwerkTopologieStrategie wordt gebruikt wanneer u meer dan twee datacenters hebt. In NetworkTopologyStrategy worden replica's voor elk datacenter afzonderlijk ingesteld. NetworkTopologyStrategy plaatst replica's met de klok mee in de ring totdat het eerste knooppunt in een ander rack is bereikt. Deze strategie probeert replica's op verschillende racks in hetzelfde datacenter te plaatsen.

Dit komt doordat er soms storingen of problemen in het rack kunnen optreden. Vervolgens kunnen replica's op andere knooppunten gegevens leveren.

Hier is de grafische weergave van de netwerktopologiestrategie:

NetwerkTopologieStrategie in Cassandra
NetwerkTopologieStrategie in Cassandra

De replicatiefactor bepaalt hoeveel kopieรซn er bestaan. Hoeveel van die kopieรซn een bepaald verzoek moeten beantwoorden, is een aparte instelling die hierna wordt beschreven.

Consistentieniveaus in Cassandra

Het consistentieniveau wordt per query ingesteld in plaats van per cluster, en dat is wat het mogelijk maakt om... Cassandra Instelbaar. Het geeft aan hoeveel replica's een schrijfbewerking moeten bevestigen, of op een leesbewerking moeten reageren, voordat de coรถrdinator de client antwoordt. Een laag niveau zorgt voor een snellere respons; een hoog niveau levert gegevens op die met meer zekerheid actueel zijn.

Niveau Gedrag Typisch gebruik
EEN Eรฉn replica moet reageren. Logboekregistratie met hoge doorvoer waarbij een incidentele verouderde uitlezing acceptabel is.
QUORUM Een meerderheid van alle replica's moet reageren, berekend als (RF / 2) + 1. De ideale keuze voor algemeen gebruik, met een goede balans tussen consistentie en beschikbaarheid.
LOKAAL_QUORUM Een meerderheid van de replica's binnen het lokale datacenter moet reageren. Clusters met meerdere datacenters, omdat dit latentie tussen regio's voorkomt.
ALLE Elke replica moet reageren. Zeldzaam. Als รฉรฉn knooppunt uitvalt, mislukt het verzoek volledig.
ENIGE (alleen schrijven) Een overdracht die wordt gesuggereerd, geldt als een succes, zelfs als er geen replica bereikbaar is. Maximale schrijfbeschikbaarheid waarbij duurzaamheid minder belangrijk is.

Sterke consistentie is gegarandeerd wanneer het leesniveau plus het schrijfniveau de replicatiefactor overschrijdt. Bij een replicatiefactor van drie voldoet schrijven op QUORUM en lezen op QUORUM aan die regel, omdat twee plus twee groter is dan drie. Schrijven op ONE en lezen op ONE voldoet hier niet aan, en een leesbewerking kan daarom een โ€‹โ€‹oudere waarde retourneren.

Wanneer een replica onbereikbaar is, slaat de coรถrdinator een zinspelen en speelt het opnieuw af zodra het knooppunt terugkeert, wat de werking is van het ANY-niveau en een groot deel van... Cassandrahet zelfhelend gedragswerk van 's.

Schrijven Operain Cassandra

De coรถrdinator stuurt een schrijfverzoek naar replica's. Als alle replica's actief zijn, ontvangen ze een schrijfverzoek, ongeacht hun consistentieniveau.

Consistentieniveau bepaalt hoeveel knooppunten zullen reageren met de succesbevestiging.

Het knooppunt zal reageren met de succesbevestiging als de gegevens met succes naar het commitlogboek zijn geschreven memTabel.

In รฉรฉn datacenter met een replicatiefactor gelijk aan drie ontvangen drie replica's bijvoorbeeld een schrijfverzoek. Als het consistentieniveau รฉรฉn is, reageert slechts รฉรฉn replica met de succesbevestiging en blijven de overige twee inactief.

Stel dat als de resterende twee replica's gegevens verliezen als gevolg van knooppuntuitval of een ander probleem, Cassandra maakt de rij consistent door het ingebouwde reparatiemechanisme Cassandra.

Hier wordt uitgelegd hoe het schrijfproces plaatsvindt Cassandra,

  1. Als er een schrijfverzoek bij het knooppunt binnenkomt, logt het eerst in het commitlogboek.
  2. Neem dan Cassandra schrijft de gegevens in de mem-tabel. Gegevens die bij elk schrijfverzoek in de mem-tabel zijn geschreven, worden ook afzonderlijk in het commit-logboek geschreven. Mem-table is een tijdelijk opgeslagen gegevens in het geheugen, terwijl Commit log de transactierecords registreert voor back-updoeleinden.
  3. Wanneer de geheugentabel vol is, worden de gegevens naar het SSTable-gegevensbestand gespoeld.
Schrijven Operain Cassandra
Schrijven Operain Cassandra

Omdat SSTables nooit direct worden bewerkt, wordt de rij niet onmiddellijk verwijderd bij een verwijdering. In plaats daarvan wordt een markering, een zogenaamde grafsteen De rij wordt weggeschreven en verdwijnt pas wanneer de compactie na de respijtperiode wordt uitgevoerd. Dit is de reden waarom zware verwijderingsworkloads het lezen vertragen totdat de compactie is voltooid.

Lees Operain Cassandra

Er zijn drie soorten leesaanvragen die een coรถrdinator naar replica's verzendt.

  1. Directe aanvraag
  2. Verzoek om samenvatting
  3. Reparatieverzoek lezen

De coรถrdinator stuurt een direct verzoek naar een van de replica's. Daarna verzendt de coรถrdinator het samenvattingsverzoek naar het aantal replica's dat is opgegeven door het consistentieniveau en controleert of de geretourneerde gegevens bijgewerkte gegevens zijn.

Daarna stuurt de coรถrdinator een samenvattingsverzoek naar alle resterende replica's. Als een knooppunt een verouderde waarde geeft, zal een reparatieverzoek op de achtergrond die gegevens bijwerken. Dit proces wordt het leesreparatiemechanisme genoemd.

Binnen de replica die het directe verzoek ontvangt, is de zoekvolgorde zo ontworpen dat schijfinteractie zoveel mogelijk wordt vermeden.

  1. De memtable wordt eerst gecontroleerd, omdat de meest recente schrijfbewerkingen nog niet zijn doorgevoerd.
  2. De rijcacheIndien ingeschakeld, kan het hele verzoek zonder verdere verwerking worden afgehandeld.
  3. A bloeifilter wordt geraadpleegd voor elke SSTable. Het antwoord is 'zeker niet aanwezig' of 'mogelijk aanwezig', waardoor de meeste SSTables kunnen worden overgeslagen zonder ze te lezen.
  4. De partitie-index En de samenvatting ervan lokaliseert de exacte byte-offset binnen elke SSTable die de Bloom-filtercontrole doorstaat.
  5. Overeenkomende fragmenten uit verschillende SSTables worden samengevoegd, waarbij de meest recente tijdstempel voor elke kolom doorslaggevend is.

Het Bloom-filter is de stap die ervoor zorgt dat leesbewerkingen snel blijven naarmate de hoeveelheid data toeneemt, omdat het vrijwel alle SSTables uitsluit voordat er een schijfzoekactie plaatsvindt. Het toepassen van deze mechanismen op meerdere machines wordt behandeld in het volgende gedeelte. Cassandra cluster tutorial.

Veelgestelde vragen

Elk knooppunt maakt elke seconde contact met een aantal peers en deelt informatie over zichzelf en iedereen die het kent: live-status, belasting, schemaversie en tokenbereiken. Zo blijft een cluster gecoรถrdineerd zonder een master.

Compactie voegt meerdere SSTables samen tot รฉรฉn, waardoor ze behouden blijven.ping De nieuwste versie van elke kolom wordt automatisch toegevoegd en rijen die niet meer in gebruik zijn (tombstoned) worden verwijderd. Zonder deze functie zou een leesbewerking steeds meer bestanden moeten raadplegen.

Virtuele knooppunten verdelen het aandeel van elke fysieke machine in de tokenring in veel kleinere bereiken. Dit zorgt voor een gelijkmatigere spreiding van de data en maakt het toevoegen of vervangen van een knooppunt veel sneller dan handmatige tokentoewijzing.

AI kan de regel 'lezen plus schrijven groter dan replicatiefactor' toepassen en een koppeling voorstellen, maar de acceptabele veroudering voor elke query is een zakelijke beslissing die eerst moet worden vastgesteld.

AI leest de uitvoer en statistieken van nodetool goed, waardoor het effectief is in het opsporen van overbelaste partities, ophoping van tombstones en achterstanden in compactieprocessen. Elke voorgestelde configuratiewijziging moet echter nog steeds worden getest op een stagingcluster.

Vat dit bericht samen met: