Cassandra - Architektura
Celem projektu Cassandra jest obsługa obciążeń big data w wielu węzłach bez żadnego pojedynczego punktu awarii. Cassandra ma rozproszony system peer-to-peer w swoich węzłach, a dane są dystrybuowane między wszystkimi węzłami w klastrze.
Wszystkie węzły w klastrze odgrywają tę samą rolę. Każdy węzeł jest niezależny i jednocześnie połączony z innymi węzłami.
Każdy węzeł w klastrze może akceptować żądania odczytu i zapisu, niezależnie od tego, gdzie w rzeczywistości znajdują się dane.
Gdy węzeł ulegnie awarii, żądania odczytu / zapisu mogą być obsługiwane z innych węzłów w sieci.
Replikacja danych w Cassandrze
W Cassandrze jeden lub więcej węzłów w klastrze działa jak repliki dla danego fragmentu danych. Jeśli zostanie wykryte, że niektóre węzły odpowiedziały nieaktualną wartością, Cassandra zwróci klientowi najnowszą wartość. Po zwróceniu ostatniej wartości Cassandra wykonuje aread repair w tle, aby zaktualizować nieaktualne wartości.
Poniższy rysunek przedstawia schematyczny widok, w jaki sposób Cassandra wykorzystuje replikację danych między węzłami w klastrze, aby zapewnić brak pojedynczego punktu awarii.
Note - Cassandra używa Gossip Protocol w tle, aby umożliwić węzłom komunikację ze sobą i wykrycie wszelkich wadliwych węzłów w klastrze.
Składniki Cassandry
Kluczowe elementy Cassandry są następujące -
Node - To miejsce, w którym przechowywane są dane.
Data center - Jest to zbiór powiązanych węzłów.
Cluster - Klaster to komponent zawierający co najmniej jedno centrum danych.
Commit log- Dziennik zatwierdzeń jest mechanizmem odzyskiwania po awarii w Cassandrze. Każda operacja zapisu jest zapisywana w dzienniku zatwierdzeń.
Mem-table- Tablica memów to rezydentna struktura danych. Po dzienniku zatwierdzeń dane zostaną zapisane w tablicy mem. Czasami w przypadku rodziny z jedną kolumną będzie wiele tabel mem.
SSTable - Jest to plik dyskowy, do którego dane są wyrzucane z tablicy mem, gdy jej zawartość osiągnie wartość progową.
Bloom filter- To nic innego jak szybkie, niedeterministyczne algorytmy do testowania, czy element jest członkiem zbioru. Jest to specjalny rodzaj pamięci podręcznej. Filtry Bloom są dostępne po każdym zapytaniu.
Język zapytań Cassandra
Użytkownicy mogą uzyskiwać dostęp do Cassandry za pośrednictwem jej węzłów przy użyciu języka zapytań Cassandra (CQL). CQL traktuje bazę danych(Keyspace)jako pojemnik na stoły. Programiści używającqlsh: monit o pracę z CQL lub oddzielnymi sterownikami języka aplikacji.
Klienci podchodzą do dowolnego węzła w celu wykonania operacji odczytu i zapisu. Ten węzeł (koordynator) pełni rolę proxy między klientem a węzłami przechowującymi dane.
Operacje zapisu
Każda czynność zapisu węzłów jest przechwytywana przez commit logszapisane w węzłach. Później dane zostaną przechwycone i zapisane w plikumem-table. Za każdym razem, gdy tablica mem jest pełna, dane zostaną zapisane w pliku SStableplik danych. Wszystkie zapisy są automatycznie partycjonowane i replikowane w całym klastrze. Cassandra okresowo konsoliduje SSTables, odrzucając niepotrzebne dane.
Przeczytaj Operacje
Podczas operacji odczytu Cassandra pobiera wartości z tablicy mem i sprawdza filtr poświaty, aby znaleźć odpowiednią SSTable, która przechowuje wymagane dane.