Cassandra Architekstura i faktor replikacije
⚡ Pametni sažetak
Cassandra Arhitektura distribuira podatke između peer čvorova bez jedne točke kvara, koristeći gossip za koordinaciju i replikaciju za trajnost. Ova stranica pokriva svaku komponentu, strategije replikacije, razine konzistentnosti i interne putove pisanja i čitanja.

Cassandra je dizajniran za rukovanje Big Podaci. CassandraGlavna značajka je pohranjivanje podataka na više čvorova bez jedne točke kvara.
Razlog za ovu vrstu CassandraArhitektura je takva da se hardverski kvar može dogoditi bilo kada. Svaki čvor može biti neispravan. U slučaju kvara mogu se koristiti podaci pohranjeni u drugom čvoru. Stoga, Cassandra je dizajniran sa svojom distribuiranom arhitekturom.
Cassandra pohranjuje podatke na različitim čvorovima s peer to peer distribuiranom modnom arhitekturom.
Svi čvorovi međusobno razmjenjuju informacije pomoću Protokol ogovaranja. Ogovaranje je protokol u Cassandra pomoću kojih čvorovi mogu međusobno komunicirati.
Komponente Cassandra Architektura
Postoje sljedeće komponente u Cassandra Architekstura:

Gornji dijagram ugnijezdi komponente: čvorovi se nalaze unutar podatkovnog centra, podatkovni centri se nalaze unutar klastera, a zapisnik potvrda, memtable i SSTable se nalaze unutar svakog pojedinog čvora.
Čvor
Čvor je mjesto gdje se pohranjuju podaci. To je osnovna komponenta Cassandra.
Data Center
Skup čvorova naziva se podatkovni centar. Mnogi čvorovi su kategorizirani kao podatkovni centar.
Cluster
Klaster je skup mnogih podatkovnih centara.
Dnevnik predaje
Svaka operacija pisanja zapisuje se u Dnevnik predaje. Dnevnik predaje koristi se za oporavak od pada.
Mem-stol
Nakon upisa podataka u Commit log, podaci se upisuju u Mem-table. Podaci se privremeno upisuju u Mem-table.
SSTable
Kada Mem-table dosegne određeni prag, podaci se spremaju u SSTable datoteku na disku. SSTable su nepromjenjive, pa ažuriranje zapisuje novu verziju umjesto uređivanja stare, a pozadinski proces koji se naziva sažimanje kasnije spaja te verzije i odbacuje zamijenjene retke.
Replikacija podataka u Cassandra
Budući da se problem s hardverom može pojaviti ili veza može biti prekinuta u bilo kojem trenutku tijekom obrade podataka, potrebno je rješenje za pružanje sigurnosne kopije kada se problem pojavi. Dakle, podaci se repliciraju kako bi se osiguralo da nema niti jedne točke kvara.
Cassandra postavlja replike podataka na različite čvorove na temelju ova dva faktora.
- Gdje postaviti sljedeću repliku određuje Strategija replikacije.
- Dok je ukupan broj replika postavljenih na različite čvorove određen Faktor replikacije.
Jedan faktor replikacije znači da postoji samo jedna kopija podataka, dok faktor tri replikacije znači da postoje tri kopije podataka na tri različita čvora.
Kako bi se osiguralo da ne postoji niti jedna točka kvara, faktor replikacije mora biti tri.
Postoje dvije vrste strategija replikacije Cassandra.
SimpleStrategy u Cassandra
SimpleStrategy koristi se kada imate samo jedan podatkovni centar. SimpleStrategy postavlja prvu repliku na čvor koji je odabrao particioner. Nakon toga, preostale replike postavljaju se u smjeru kazaljke na satu u prsten čvora.
Ovdje je slikovni prikaz SimpleStrategy:

NetworkTopologyStrategy in Cassandra
NetworkTopologyStrategy koristi se kada imate više od dva podatkovna centra. U NetworkTopologyStrategy, replike su postavljene za svaki podatkovni centar posebno. NetworkTopologyStrategy postavlja replike u smjeru kazaljke na satu u prstenu dok ne dosegne prvi čvor u drugom stalku. Ova strategija pokušava postaviti replike na različite police u istom podatkovnom centru.
To je zbog razloga što ponekad može doći do kvara ili problema u stalku. Tada replike na drugim čvorovima mogu pružiti podatke.
Ovdje je slikovni prikaz strategije mrežne topologije:

Faktor replikacije određuje koliko kopija postoji. Koliko tih kopija mora odgovoriti na zadani zahtjev je zasebna postavka, opisana u nastavku.
Razine konzistentnosti u Cassandra
Razina konzistentnosti postavlja se po upitu, a ne po klasteru, što čini Cassandra podesivo. Navodi koliko replika mora potvrditi pisanje ili odgovoriti na čitanje prije nego što koordinator odgovori klijentu. Niska razina vraća brže; visoka razina vraća podatke koji su sigurnije ažurni.
| Nivo | ponašanje | Tipična upotreba |
|---|---|---|
| ONE | Jedna replika mora odgovoriti. | Zapisivanje visokog protoka gdje je povremeno zastarjelo čitanje prihvatljivo. |
| KVORUM | Većina svih replika mora odgovoriti, izračunato kao (RF / 2) + 1. | Opći izbor za uravnoteženu konzistentnost i dostupnost. |
| LOKALNI_KVORUM | Većina replika unutar lokalnog podatkovnog centra mora odgovoriti. | Klasteri s više podatkovnih centara, jer izbjegavaju latenciju između regija. |
| SVE | Svaka replika mora odgovoriti. | Rijetko. Jedan čvor ne radi kako bi zahtjev u potpunosti propao. |
| BILO (samo piše) | Nagovještena primopredaja računa se kao uspjeh čak i ako nijedna replika nije dostupna. | Maksimalna dostupnost pisanja gdje se trajnost može smanjiti. |
Snažna konzistentnost je zajamčena kada razina čitanja plus razina pisanja premašuje faktor replikacije. S faktorom replikacije od tri, pisanje na QUORUM-u i čitanje na QUORUM-u zadovoljava to pravilo, jer dva plus dva je veće od tri. Pisanje na JEDNOM i čitanje na JEDNOM ne zadovoljava, te stoga čitanje može vratiti stariju vrijednost.
Kada replika nije dostupna, koordinator pohranjuje savjet i ponovno ga reproducira nakon što se čvor vrati, što je način na koji ANY razina i veći dio Cassandrasamoizlječavajuće ponašanje.
Pisati Operacija u Cassandra
Koordinator šalje zahtjev za pisanje replikama. Ako su sve replike podignute, primit će zahtjev za pisanje bez obzira na njihovu razinu dosljednosti.
Razina dosljednosti određuje koliko će čvorova odgovoriti potvrdom uspjeha.
Čvor će odgovoriti potvrdom uspjeha ako su podaci uspješno zapisani u zapisnik predaje i memTable.
Na primjer, u jednom podatkovnom centru s faktorom replikacije jednakim tri, tri će replike primiti zahtjev za pisanje. Ako je razina dosljednosti jedan, samo će jedna replika odgovoriti potvrdom uspjeha, a preostale dvije ostat će u stanju mirovanja.
Pretpostavimo da preostale dvije replike izgube podatke zbog pada čvora ili nekog drugog problema, Cassandra učinit će red konzistentnim pomoću ugrađenog mehanizma za popravak Cassandra.
Ovdje je objašnjeno kako se odvija proces pisanja Cassandra,
- Kada zahtjev za pisanje dođe do čvora, on se prije svega prijavljuje u zapisnik predaje.
- Tada Cassandra zapisuje podatke u mem-tablicu. Podaci zapisani u mem-tablici na svakom zahtjevu za pisanje također se zasebno zapisuju u zapisnik predaje. Mem-tablica je privremeno pohranjen podatak u memoriji dok Commit log bilježi zapise transakcija u svrhu sigurnosnog kopiranja.
- Kada je mem-tablica puna, podaci se ispiru u podatkovnu datoteku SSTable.

Budući da se SSTables nikada ne uređuju na mjestu, brisanje ne uklanja redak odmah. Umjesto toga, marker se naziva nadgrobni spomenik je zapisan, a redak nestaje tek kada se sažimanje pokrene nakon razdoblja odgode. Zbog toga velika opterećenja brisanja usporavaju čitanje dok se sažimanje ne sustigne.
Čitaj Operacija u Cassandra
Postoje tri vrste zahtjeva za čitanje koje koordinator šalje replikama.
- Izravni zahtjev
- Zahtjev za sažetak
- Pročitajte zahtjev za popravak
Koordinator šalje izravni zahtjev jednoj od replika. Nakon toga koordinator šalje sažetak zahtjeva broju replika zadanih razinom dosljednosti i provjerava jesu li vraćeni podaci ažurirani podaci.
Nakon toga koordinator šalje sažetak zahtjeva svim preostalim replikama. Ako bilo koji čvor daje zastarjelu vrijednost, zahtjev za popravkom čitanja u pozadini ažurirat će te podatke. Taj se proces naziva mehanizam popravka čitanja.
Unutar replike koja prima izravni zahtjev, redoslijed pretraživanja je osmišljen tako da se izbjegne dodirivanje diska gdje god je to moguće.
- The tablica memorije se prvo provjerava, budući da najnoviji zapisi još nisu izbrisani.
- The predmemorija redaka, ako je omogućeno, može odgovoriti na cijeli zahtjev bez daljnjeg rada.
- A bloom filter se konzultira za svaku SSTable. Odgovor definitivno nije prisutan ili moguće prisutan, što omogućuje preskakanje većine SSTablea bez čitanja.
- The indeks particije i njegov sažetak locira točan pomak bajta unutar bilo koje SSTable koja preživi provjeru Bloomovog filtera.
- Podudarni fragmenti iz nekoliko SSTables se spajaju, pri čemu najnovija vremenska oznaka pobjeđuje za svaki stupac.
Bloomov filter je korak koji održava brzinu čitanja kako podaci rastu, jer uklanja gotovo svaku SSTable iz razmatranja prije nego što dođe do bilo kakvog pretraživanja diska. Primjena ovih mehanika na nekoliko računala obuhvaćena je u Cassandra grozd udžbenik.
