Cassandra Architecture & Replication Factor

⚡ Okos összefoglaló

Cassandra Az architektúra egyetlen meghibásodási pont nélkül osztja el az adatokat a peer csomópontok között, a koordinációhoz a gossip (szó szerinti fordítás) módszert, a tartósság érdekében pedig a replikációt használja. Ez az oldal minden komponenst lefed, mind a replikációs stratégiákat, mind a konzisztenciaszinteket, mind a belső írási és olvasási útvonalakat.

  • 🕸️ Peer-to-Peer tervezés: Minden csomópont egyenlő és a gossip protokollon keresztül cseréli ki az állapotát, így nincs olyan mester, amelyik meghibásodna.
  • 🧱 Tároló alkatrészek: Egy írási művelet a commit naplóba és a memtable-be érkezik, majd egy megváltoztathatatlan SSTable-be kerül a lemezen.
  • 🔁 Replikációs stratégia: A SimpleStrategy egyetlen adatközpont számára alkalmas, míg a NetworkTopologyStrategy adatközpontonként és rackenként helyez el replikákat.
  • 🔢 Replikációs faktor: Három példány három csomóponton a standard beállítás bármely egyszeri meghibásodási pont eltávolítására.
  • 🇧🇷 Konzisztenciaszintek: A lekérdezésenként kiválasztott szint határozza meg, hogy hány replikának kell visszaigazolnia a kérést, mielőtt a kliens válaszolna.
  • 🔍 Olvasási útvonal: A közvetlen, a kivonatoló és az olvasási javítási kérelmek együttesen adják vissza az aktuális adatokat, és csendben javítják az elavult replikákat.

Cassandra Archistruktúra replikáció

Cassandra kezelésére tervezték Big adatok. CassandraA fő jellemzője, hogy több csomóponton tárolja az adatokat egyetlen hibapont nélkül.

Az oka ennek a fajta CassandraAz architektúra az volt, hogy a hardverhiba bármikor előfordulhat. Bármely csomópont leállhat. Meghibásodás esetén egy másik csomópontban tárolt adatok használhatók. Ezért, Cassandra elosztott architektúrájával tervezték.

Cassandra különböző csomópontokon tárol adatokat egy peer to peer elosztott divatarchitektúrával.

Az összes csomópont információt cserél egymással a használatával Pletyka protokoll. A pletyka egy protokoll Cassandra amellyel a csomópontok kommunikálni tudnak egymással.

A Cassandra Architectúra

A következő összetevőket tartalmazza Cassandra Architectúra:

Cassandra Architectúra
Cassandra Architecture diagram

A fenti ábra egymásba ágyazza a komponenseket: a csomópontok egy adatközpontban, az adatközpontok egy klaszterben helyezkednek el, a commit napló, a memtable és az SSTable pedig minden egyes csomóponton belül található.

Csomópont

A csomópont az a hely, ahol az adatokat tárolják. Ez az alapvető összetevője Cassandra.

Adatközpont

A csomópontok gyűjteményét adatközpontnak nevezzük. Sok csomópont adatközpontként van besorolva.

Cluster

A fürt számos adatközpont gyűjteménye.

Végrehajtási napló

Minden írási művelet a véglegesítési naplóba kerül. A végrehajtási napló az összeomlás helyreállítására szolgál.

Mem-tábla

A Commit naplóba írt adatok után az adatok a Mem-táblázatba kerülnek. Az adatok ideiglenesen a Mem-táblába kerülnek.

SSTable

Amikor a Mem-tábla mérete elér egy bizonyos küszöbértéket, az adatok egy SSTable lemezfájlba kerülnek. Az SSTable-ok megváltoztathatatlanok, így egy frissítés új verziót ír a régi szerkesztése helyett, és egy tömörítésnek nevezett háttérfolyamat később egyesíti ezeket a verziókat, és elveti a felülírt sorokat.

Adatreplikáció be Cassandra

Mivel az adatfeldolgozás során bármikor előfordulhat hardverprobléma, vagy a kapcsolat leállhat, megoldásra van szükség a biztonsági másolat készítéséhez, amikor a probléma fellép. Így az adatok replikálódnak, hogy ne legyen egyetlen hibapont sem.

Cassandra e két tényező alapján különböző csomópontokra helyezi el az adatok replikáit.

  • A következő replika elhelyezésének helyét a Replikációs stratégia.
  • Míg a különböző csomópontokon elhelyezett replikák teljes számát a Replikációs tényező.

Az egy replikációs faktor azt jelenti, hogy az adatoknak csak egyetlen példánya van, míg a három replikációs faktor azt jelenti, hogy három különböző csomóponton van három másolat.

Annak érdekében, hogy ne legyen egyetlen hibapont, A replikációs faktornak háromnak kell lennie.

Kétféle replikációs stratégia létezik Cassandra.

SimpleStrategy in Cassandra

SimpleStrategy akkor használatos, ha csak egy adatközpontja van. A SimpleStrategy az első replikát a particionáló által kiválasztott csomópontra helyezi. Ezt követően a fennmaradó replikákat az óramutató járásával megegyező irányban helyezzük el a csomóponti gyűrűben.

Íme a SimpleStrategy képi ábrázolása:

SimpleStrategy in Cassandra
SimpleStrategy in Cassandra

NetworkTopologyStrategy in Cassandra

NetworkTopologyStrategy akkor használatos, ha kettőnél több adatközpontja van. A NetworkTopologyStrategy programban a replikák minden adatközponthoz külön vannak beállítva. A NetworkTopologyStrategy az óramutató járásával megegyező irányban helyezi el a replikákat a gyűrűben, amíg el nem éri egy másik rack első csomópontját. Ez a stratégia megpróbálja a replikákat ugyanabban az adatközpontban különböző állványokon elhelyezni.

Ennek az az oka, hogy néha meghibásodás vagy probléma léphet fel az állványban. Ezután a más csomópontokon lévő replikák szolgáltathatnak adatokat.

Íme a hálózati topológia stratégia képi ábrázolása:

NetworkTopologyStrategy in Cassandra
NetworkTopologyStrategy in Cassandra

A replikációs tényező határozza meg, hogy hány másolat létezik. Az, hogy ezek közül a másolatok közül hánynak kell válaszolnia egy adott kérésre, egy külön beállítás, amelyet a továbbiakban ismertetünk.

Konzisztenciaszintek a Cassandra

A konzisztenciaszint lekérdezésenként, nem pedig klaszterenként van beállítva, ami miatt Cassandra hangolható. Azt határozza meg, hogy hány replikának kell visszaigazolnia egy írást, vagy válaszolnia egy olvasásra, mielőtt a koordinátor válaszolna az ügyfélnek. Az alacsony szint gyorsabban, a magas szint pedig biztosan aktuálisabb adatokat ad vissza.

Szintek Viselkedés Tipikus felhasználás
ONE Egy másolatnak válaszolnia kell. Nagy áteresztőképességű naplózás, ahol az alkalmankénti elavult beolvasás elfogadható.
HATÁROZATKÉPESSÉG Az összes replika többségének válaszolnia kell, a számítás a következőképpen történik: (RF / 2) + 1. Általános célú választás a kiegyensúlyozott konzisztencia és rendelkezésre állás érdekében.
HELYI_KÉPVISELŐ A helyi adatközpontban található replikák többségének válaszolnia kell. Több adatközpontú klaszterek, mivel elkerüli a régiók közötti késleltetést.
MINDEN Minden replikának válaszolnia kell. Ritka. Egyetlen csomópont leállása a kérés teljes meghiúsulását okozza.
ANY (csak írási jogosultságok) A célzott átadás sikeresnek számít, még akkor is, ha egyetlen replika sem érhető el. Maximális írási rendelkezésre állás, ahol a tartósság enyhíthető.

Az erős konzisztencia akkor garantált, ha az olvasási szint és az írási szint összege meghaladja a replikációs tényezőt. Három replikációs tényező esetén a QUORUM-mal történő írás és a QUORUM-mal történő olvasás megfelel ennek a szabálynak, mivel a kettő meg kettő nagyobb, mint a három. Az EGY-gyel történő írás és EGY-gyel történő olvasás nem, ezért az olvasás régebbi értéket adhat vissza.

Amikor egy replika elérhetetlen, a koordinátor tárol egy célzás és visszajátssza, amint a csomópont visszatér, így működik ANY szint és a Cassandraöngyógyító viselkedésmódja működik.

Ír Operabe Cassandra

A koordinátor írási kérelmet küld a replikáknak. Ha az összes replika fent van, akkor írási kérést kapnak, függetlenül a konzisztencia szintjétől.

Konzisztencia szint meghatározza, hogy hány csomópont válaszol vissza a siker visszaigazolásával.

A csomópont a siker visszaigazolásával válaszol, ha az adatok sikeresen beírásra kerültek a véglegesítési naplóba, és memTable.

Például egyetlen adatközpontban, amelynek replikációs tényezője három, három replika kap írási kérést. Ha a konzisztencia szintje egy, akkor csak egy replika válaszol vissza a siker visszaigazolásával, a maradék kettő pedig alvó állapotban marad.

Tegyük fel, ha a fennmaradó két replika elveszíti az adatokat csomópont-leállás vagy más probléma miatt, Cassandra egységessé teszi a sort a beépített javítómechanizmussal Cassandra.

Itt elmagyarázzuk, hogyan megy végbe az írási folyamat Cassandra,

  1. Amikor írási kérés érkezik a csomóponthoz, mindenekelőtt bejelentkezik a véglegesítési naplóba.
  2. Majd Cassandra beírja az adatokat a mem-táblába. A mem-táblába írt adatok minden írási kérésnél külön is íródnak a véglegesítési naplóba. A mem-tábla egy ideiglenesen tárolt adat a memóriában, míg a Commit log naplózza a tranzakciós rekordokat biztonsági mentés céljából.
  3. Amikor a mem-table megtelt, az adatok az SSTable adatfájlba kerülnek.
Ír Operabe Cassandra
Ír Operabe Cassandra

Mivel az SSTable-ök soha nem szerkeszthetők helyben, a törlés nem távolítja el azonnal a sort. Ehelyett egy jelölő, az úgynevezett sírkő ki van írva, és a sor csak akkor tűnik el, ha a tömörítés a türelmi időszak után fut. Ezért lassítják a nagy törlési terhelések az olvasást, amíg a tömörítés utoléri.

Olvass Operabe Cassandra

Háromféle olvasási kérés létezik, amelyeket a koordinátor küld a replikáknak.

  1. Közvetlen kérés
  2. Digest kérés
  3. Olvassa el a javítási kérelmet

A koordinátor közvetlen kérést küld az egyik replikának. Ezt követően a koordinátor elküldi a kivonatkérést a konzisztenciaszint által meghatározott számú replikának, és ellenőrzi, hogy a visszaadott adat frissített adat-e.

Ezt követően a koordinátor kivonatkérést küld az összes fennmaradó replikának. Ha bármely csomópont elavult értéket ad, a háttérben történő olvasási javítási kérelem frissíti az adatokat. Ezt a folyamatot olvasási javítási mechanizmusnak nevezik.

A közvetlen kérést fogadó replikán belül a keresési sorrend úgy van kialakítva, hogy amennyire csak lehetséges, kerülje a lemez érintését.

  1. Az memtable először a kerül ellenőrzésre, mivel a legújabb írási műveletek még nem lettek kiürítve.
  2. Az sor gyorsítótár, ha engedélyezve van, további munka nélkül képes válaszolni a teljes kérésre.
  3. A virágzásszűrő minden SSTable esetében lekérdezésre kerül. A válasza definitely not present (határozottan nem jelen) vagy possibly present (lehetségesen jelen), így a legtöbb SSTable kihagyható beolvasás nélkül.
  4. Az partícióindex és az összegzése megkeresi a pontos bájt eltolást bármely olyan SSTable-en belül, amely túléli a bloom szűrő ellenőrzését.
  5. Több SSTables egyező töredékeit egyesíti a rendszer, minden oszlopban a legfrissebb időbélyeggel győztesen.

A bloom szűrő az a lépés, amely az adatmennyiség növekedésével gyors olvasást biztosít, mivel szinte az összes SSTable-t eltávolítja a figyelembe vételből, mielőtt bármilyen lemezkeresés megtörténne. Ezen mechanizmusok több gépen történő alkalmazását a ... részben tárgyaljuk. Cassandra fürt tutorial.

GYIK

Minden csomópont másodpercenként kapcsolatba lép néhány peerrel, és megosztja saját magáról és mindenkiről az állapotát, akit ismer: élőség, betöltés, séma verzió és token tartományok. Így marad koordinált egy klaszter master nélkül.

A tömörítés több SSTable-t egyesít egyetlenbe, keeping az egyes oszlopok legújabb verzióját, és elveti a sírköves sorokat. Enélkül egy olvasásnak egyre több fájlt kellene érintenie.

A virtuális csomópontok minden fizikai gép tokengyűrűbeli részesedését sok kisebb tartományra osztják. Ez egyenletesebben osztja el az adatokat, és sokkal gyorsabbá teszi a csomópontok hozzáadását vagy cseréjét, mint a manuális tokenek kiosztása.

A mesterséges intelligencia alkalmazhatja az „olvasási és írási sebesség nagyobb, mint a replikációs tényező” szabályt, és javasolhat párosítást, de az egyes lekérdezések elfogadható elavultsági szintjét üzleti döntésnek kell meghatározni, amelyet először meg kell adni.

A mesterséges intelligencia jól olvassa a nodetool kimenetét és metrikáit, így hatékonyan észleli a forró partíciókat, a tombstone-felhalmozódásokat és a tömörítési várakozásokat. Az általa javasolt konfigurációs módosításokat továbbra is tesztelni kell egy staging klaszteren.

Foglald össze ezt a bejegyzést a következőképpen: