Cassandra ArchiTecture & Replication Factor

โšก ร„lykรคs yhteenveto

Cassandra arkkitehtuuri jakaa dataa vertaissolmujen kesken ilman yksittรคistรค vikaantumispistettรค kรคyttรคen juoruja koordinointiin ja replikointiin kestรคvyyden takaamiseksi. Tรคmรค sivu kattaa kaikki komponentit, sekรค replikointistrategiat, yhdenmukaisuustasot ettรค sisรคiset kirjoitus- ja lukupolut.

  • ๐Ÿ•ธ๏ธ Vertaisverkon suunnittelu: Jokainen solmu on tasavertainen ja vaihtaa tilaa Gossip-protokollan kautta, joten ei ole olemassa isรคntรครค, joka epรคonnistuisi.
  • ๐Ÿงฑ Tallennuskomponentit: Kirjoitustoiminto pรครคtyy commit-lokiin ja memtable-taulukkoon ja sitten levyllรค olevaan muuttumattomaan SSTable-taulukkoon.
  • ๐Ÿ” Replikointistrategia: SimpleStrategy sopii yhteen datakeskukseen, kun taas NetworkTopologyStrategy sijoittaa replikat datakeskuksia ja rรคkkejรค kohden.
  • ๐Ÿ”ข Replikaatiokerroin: Kolme kopiota kolmella solmulla on vakioasetus yksittรคisten vikaantumiskohtien poistamiseksi.
  • ๐Ÿ‡ง๐Ÿ‡ท Johdonmukaisuustasot: Kyselykohtaisesti valittu taso mรครคrittรครค, kuinka monta replikaa on kuitattava ennen kuin asiakkaalle vastataan.
  • ๐Ÿ” Lue polku: Suorat, tiivistetyt ja luetut korjauspyynnรถt palauttavat yhdessรค ajantasaista dataa ja korjaavat hiljaisesti vanhentuneita kopioita.

Cassandra Architekstuurin replikointi

Cassandra on suunniteltu kรคsittelemรครคn Big Data. CassandraPรครคominaisuus on tallentaa tietoja useisiin solmuihin ilman yhtรค vikakohtaa.

Syynรค tรคllaiseen CassandraArkkitehtuuri oli, ettรค laitteistovika voi tapahtua milloin tahansa. Mikรค tahansa solmu voi olla alhaalla. Vian sattuessa voidaan kรคyttรครค toiseen solmuun tallennettuja tietoja. Siten, Cassandra on suunniteltu hajautetulla arkkitehtuurillaan.

Cassandra tallentaa tietoja eri solmuista peer to peer -hajautetulla muotiarkkitehtuurilla.

Kaikki solmut vaihtavat tietoja keskenรครคn kรคyttรคmรคllรค Juoruprotokolla. Juorut ovat protokolla Cassandra joiden avulla solmut voivat kommunikoida keskenรครคn.

Komponentit Cassandra Archirakenne

Siinรค on seuraavat komponentit Cassandra Archirakenne:

Cassandra Archirakenne
Cassandra Architecture Kaavio

Yllรค oleva kaavio sisรคkkรคisiรค komponentteja: solmut sijaitsevat datakeskuksen sisรคllรค, datakeskukset sijaitsevat klusterin sisรคllรค ja commit-loki, memtable ja SSTable sijaitsevat jokaisen yksittรคisen solmun sisรคllรค.

Solmu

Solmu on paikka, johon tiedot tallennetaan. Se on peruskomponentti Cassandra.

Data Center

Solmujen kokoelmaa kutsutaan datakeskukseksi. Monet solmut on luokiteltu tietokeskuksiksi.

Cluster

Klusteri on monien datakeskusten kokoelma.

Sitoumusloki

Jokainen kirjoitustoiminto kirjoitetaan toimituslokiin. Toimituslokia kรคytetรครคn kaatumisen palauttamiseen.

Muistipรถytรค

Toimituslokiin kirjoitetun tiedon jรคlkeen tiedot kirjoitetaan Mem-taulukkoon. Tiedot kirjoitetaan vรคliaikaisesti Mem-taulukkoon.

SSTable

Kun Mem-taulukko saavuttaa tietyn kynnyksen, tiedot tyhjennetรครคn SSTable-levytiedostoon. SSTable-taulukot ovat muuttumattomia, joten pรคivitys kirjoittaa uuden version vanhan version muokkaamisen sijaan, ja taustalla suoritettava prosessi, jota kutsutaan tiivistรคmiseksi, yhdistรครค nรคmรค versiot ja hylkรครค korvatut rivit.

Tietojen replikointi sisรครคn Cassandra

Koska laitteisto-ongelma tai linkki voi olla poissa milloin tahansa tietojenkรคsittelyn aikana, tarvitaan ratkaisu varmuuskopion luomiseksi, kun ongelma on ilmennyt. Joten tiedot kopioidaan, jotta varmistetaan, ettei yksittรคinen vikakohta ole.

Cassandra sijoittaa datakopioita eri solmuihin nรคiden kahden tekijรคn perusteella.

  • Seuraavan replikan sijoituspaikka mรครคrittรครค Replikointistrategia.
  • Vaikka eri solmuihin sijoitettujen replikoiden kokonaismรครคrรค mรครคrรคytyy Replikointitekijรค.

Yksi replikointitekijรค tarkoittaa, ettรค tiedoista on vain yksi kopio, kun taas kolme replikointitekijรครค tarkoittaa, ettรค tiedoista on kolme kopiota kolmessa eri solmussa.

Varmistaakseen, ettรค ei ole yhtรค vikakohtaa, replikointitekijรคn on oltava kolme.

Siinรค on kahdenlaisia โ€‹โ€‹replikointistrategioita Cassandra.

SimpleStrategy sisรครคn Cassandra

Yksinkertainen strategia kรคytetรครคn, kun sinulla on vain yksi datakeskus. SimpleStrategy sijoittaa ensimmรคisen replikan osioinnin valitsemaan solmuun. Sen jรคlkeen loput replikat sijoitetaan myรถtรคpรคivรครคn solmurenkaaseen.

Tรคssรค on kuvallinen esitys SimpleStrategysta:

SimpleStrategy sisรครคn Cassandra
SimpleStrategy sisรครคn Cassandra

NetworkTopologyStrategy sisรครคn Cassandra

NetworkTopologyStrategy kรคytetรครคn, kun sinulla on enemmรคn kuin kaksi datakeskusta. NetworkTopologyStrategyssa kopiot asetetaan jokaiselle datakeskukselle erikseen. NetworkTopologyStrategy sijoittaa replikat myรถtรคpรคivรครคn renkaaseen, kunnes se saavuttaa toisen telineen ensimmรคisen solmun. Tรคmรค strategia yrittรครค sijoittaa replikoita eri telineisiin samassa palvelinkeskuksessa.

Tรคmรค johtuu siitรค, ettรค telineessรค voi joskus ilmetรค vika tai ongelma. Sitten muiden solmujen replikat voivat tarjota tietoja.

Tรคssรค on kuvallinen esitys verkkotopologiastrategiasta:

NetworkTopologyStrategy sisรครคn Cassandra
NetworkTopologyStrategy sisรครคn Cassandra

Replikaatiokerroin mรครคrรครค, kuinka monta kopiota on olemassa. Se, kuinka monen nรคistรค kopioista on vastattava tiettyyn pyyntรถรถn, on erillinen asetus, jota kuvataan seuraavaksi.

Johdonmukaisuustasot Cassandra

Yhdenmukaisuustaso asetetaan kyselykohtaisesti eikรค klusterikohtaisesti, mikรค tekee siitรค Cassandra viritettรคvรค. Se mรครคrittรครค, kuinka monen replikan on kuitattava kirjoitus tai vastattava lukuun, ennen kuin koordinaattori vastaa asiakkaalle. Matala taso palauttaa nopeammin; korkea taso palauttaa tietoja, jotka ovat varmasti ajankohtaisempia.

Taso Kรคyttรคytyminen Tyypillinen kรคyttรถ
ONE Yhden kopion on vastattava. Suuritehoinen lokikirjaus, jossa satunnainen vanhentunut luku on hyvรคksyttรคvรค.
Pร„IVร„YS Kaikista replikoista enemmistรถn on vastattava, laskettuna kaavalla (RF / 2) + 1. Yleiskรคyttรถinen valinta tasapainoisen johdonmukaisuuden ja saatavuuden kannalta.
PAIKALLINEN_Pร„ร„Tร–SMร„YS Suurimman osan paikallisen datakeskuksen replikoista on vastattava. Usean datakeskuksen klusterit, koska se vรคlttรครค alueiden vรคlisen viiveen.
KAIKKI Jokaisen kopion on vastattava. Harvinainen. Yksi solmun kaatuminen aiheuttaa pyynnรถn tรคydellisen epรคonnistumisen.
KAIKKI (vain kirjoitusoikeudet) Vihjeellรค tehty vaihto lasketaan onnistuneeksi, vaikka replikaan ei olisikaan yhteyttรค. Maksimaalinen kirjoitusapu, jossa kestรคvyydestรค voidaan tinkiรค.

Vahva johdonmukaisuus on taattu, kun luku- ja kirjoitustason summa ylittรครค replikointikertoimen. Replikointikertoimen ollessa kolme QUORUM-tasolla kirjoittaminen ja QUORUM-tasolla lukeminen tรคyttรคvรคt tรคmรคn sรครคnnรถn, koska kaksi ynnรค kaksi on suurempi kuin kolme. YKSI-tasolla kirjoittaminen ja YKSI-tasolla lukeminen eivรคt tรคyty, ja luku voi siksi palauttaa vanhemman arvon.

Kun replikaan ei saada yhteyttรค, koordinaattori tallentaa vihje ja toistaa sen uudelleen, kun solmu palaa, mikรค on tapa, jolla MIKร„ TAHANSA taso ja suuri osa siitรค Cassandran itseรครคn parantava kรคyttรคytymismalli toimii.

Kirjoittaa Operavuonna Cassandra

Koordinaattori lรคhettรครค kopioille kirjoituspyynnรถn. Jos kaikki kopiot ovat valmiina, ne saavat kirjoituspyynnรถn johdonmukaisuustasosta riippumatta.

Johdonmukaisuustaso mรครคrittรครค, kuinka monta solmua vastaa onnistumisvahvistuksella.

Solmu vastaa onnistumiskuittauksella, jos tiedot kirjoitetaan onnistuneesti toimituslokiin ja muistitaulukko.

Esimerkiksi yhdessรค datakeskuksessa, jonka replikointikerroin on kolme, kolme replikaa vastaanottaa kirjoituspyynnรถn. Jos johdonmukaisuustaso on yksi, vain yksi replika vastaa onnistumisilmoituksella, ja loput kaksi pysyvรคt lepotilassa.

Oletetaan, ettรค kaksi jรคljellรค olevaa replikaa menettรครค tietoja solmujen laskun tai muun ongelman vuoksi, Cassandra tekee rivistรค yhtenรคisen sisรครคnrakennetun korjausmekanismin ansiosta Cassandra.

Tรคssรค selitetรครคn, kuinka kirjoitusprosessi tapahtuu Cassandra,

  1. Kun solmulle tulee kirjoituspyyntรถ, se kirjautuu ensin toimituslokiin.
  2. Sitten Cassandra kirjoittaa tiedot mem-taulukkoon. Jokaisen kirjoituspyynnรถn mem-taulukkoon kirjoitetut tiedot kirjoitetaan myรถs toimituslokiin erikseen. Mem-taulukko on vรคliaikaisesti muistiin tallennettu tieto, kun taas Commit log kirjaa tapahtumatietueet varmuuskopiointia varten.
  3. Kun muistitaulukko on tรคynnรค, tiedot huuhdellaan SSTable-datatiedostoon.
Kirjoittaa Operavuonna Cassandra
Kirjoittaa Operavuonna Cassandra

Koska SSTable-taulukoita ei koskaan muokata paikan pรครคllรค, poisto ei poista riviรค vรคlittรถmรคsti. Sen sijaan kรคytetรครคn merkkiรค, jota kutsutaan nimellรค hautakivi kirjoitetaan, ja rivi katoaa vasta, kun pakkaus suoritetaan lisรคajan jรคlkeen. Tรคstรค syystรค suuret poistotyรถmรครคrรคt hidastavat lukemista, kunnes pakkaus saavuttaa sen.

Lue Operavuonna Cassandra

Koordinaattori lรคhettรครค replikoihin kolmenlaisia โ€‹โ€‹lukupyyntรถjรค.

  1. Suora pyyntรถ
  2. Tiivistelmรคpyyntรถ
  3. Lue korjauspyyntรถ

Koordinaattori lรคhettรครค suoran pyynnรถn yhdelle replikoista. Tรคmรคn jรคlkeen koordinaattori lรคhettรครค tiivistelmรคpyynnรถn johdonmukaisuustason mรครคrittรคmรคlle mรครคrรคlle replikoita ja tarkistaa, onko palautettu data pรคivitettyรค dataa.

Tรคmรคn jรคlkeen koordinaattori lรคhettรครค tiivistelmรคpyynnรถn kaikille jรคljellรค oleville replikoille. Jos jokin solmu antaa vanhentuneen arvon, taustalukukorjauspyyntรถ pรคivittรครค tiedot. Tรคtรค prosessia kutsutaan lukukorjausmekanismiksi.

Suoran pyynnรถn vastaanottavan replikan sisรคllรค hakujรคrjestys on suunniteltu siten, ettรค levylle ei kosketa aina kun mahdollista.

  1. muistitaulukko tarkistetaan ensin, koska uusimpia kirjoitustรถitรค ei ole vielรค tyhjennetty.
  2. rivivรคlimuisti, jos kรคytรถssรค, voi vastata koko pyyntรถรถn ilman lisรคtoimia.
  3. A kukintasuodatin kyselyรค kรคytetรครคn jokaisen SSTable-taulukon kohdalla. Se vastaa joko definitely not present tai possibly present, minkรค ansiosta useimmat SSTable-taulukot voidaan ohittaa lukematta niitรค.
  4. osioindeksi ja sen yhteenveto paikantavat tarkan tavuoffsetin missรค tahansa SSTable-taulukossa, joka selviรครค bloom-suodattimen tarkistuksesta.
  5. Useiden SSTable-taulukoiden vastaavat fragmentit yhdistetรครคn, ja kunkin sarakkeen viimeisin aikaleima voittaa.

Bloom-suodatin on vaihe, joka pitรครค lukemat nopeina datan kasvaessa, koska se poistaa lรคhes kaikki SSTable-taulukot huomioon ottaen ennen levyn hakua. Nรคiden mekaniikoiden soveltamista useissa koneissa kรคsitellรครคn seuraavassa. Cassandra klusteri opetusohjelma.

UKK

Jokainen solmu ottaa yhteyttรค muutamaan vertaiseen joka sekunti ja jakaa tilaa itsestรครคn ja kaikista tuntemistaan: elรคvyyden, kuormituksen, skeemaversion ja token-alueet. Nรคin klusteri pysyy koordinoituna ilman isรคntรครค.

Tiivistรคminen yhdistรครค useita SSTable-taulukoita yhdeksi, keeping kunkin sarakkeen uusin versio ja hautakivillรค merkittyjen rivien hylkรครคminen. Ilman sitรค lukutoiminnon tรคytyisi koskettaa asteittain useampia tiedostoja.

Virtuaalisolmut jakavat kunkin fyysisen koneen osuuden token-renkaasta useisiin pienempiin alueisiin. Tรคmรค levittรครค dataa tasaisemmin ja tekee solmun lisรครคmisestรค tai korvaamisesta paljon nopeampaa kuin manuaalinen token-mรครคrรคys.

Tekoรคly voi soveltaa luku- ja kirjoitussuhdetta, joka on suurempi kuin replikointikerroin, ja ehdottaa paritusta, mutta kunkin kyselyn hyvรคksyttรคvรค vanhenemisaika on liiketoimintapรครคtรถs, joka on tehtรคvรค ensin.

Tekoรคly lukee nodetool-ohjelman tulostetta ja mittareita hyvin, joten se on tehokas havaitsemaan kuumat osiot, tombstone-kertymรคt ja tiivistysjonot. Kaikki sen ehdottamat kokoonpanomuutokset tulisi silti testata testiympรคristรถssรค olevalla klusterilla.

Tiivistรค tรคmรค viesti seuraavasti: