Cassandra Architecture i współczynnik replikacji
⚡ Inteligentne podsumowanie
Cassandra Architektura dystrybuuje dane pomiędzy węzłami równorzędnymi bez pojedynczego punktu awarii, wykorzystując plotki do koordynacji i replikację dla zapewnienia trwałości. Ta strona omawia każdy komponent, strategie replikacji, poziomy spójności oraz wewnętrzne ścieżki zapisu i odczytu.

Cassandra jest przeznaczony do obsługi Big Data. CassandraGłówną cechą jest przechowywanie danych w wielu węzłach bez pojedynczego punktu awarii.
Powód tego rodzaju CassandraArchitektura 's polegała na tym, że awaria sprzętu może wystąpić w dowolnym momencie. Każdy węzeł może być wyłączony. W przypadku awarii można użyć danych przechowywanych w innym węźle. Stąd, Cassandra został zaprojektowany z uwzględnieniem rozproszonej architektury.
Cassandra przechowuje dane na różnych węzłach za pomocą rozproszonej architektury peer-to-peer.
Wszystkie węzły wymieniają między sobą informacje za pomocą Protokół plotek. Plotka jest protokołem Cassandra za pomocą którego węzły mogą się ze sobą komunikować.
Części Cassandra Architektura
W skład zestawu wchodzą następujące komponenty: Cassandra Archistruktura:

Powyższy diagram przedstawia zagnieżdżone komponenty: węzły znajdują się w centrum danych, centra danych znajdują się w klastrze, a dziennik zatwierdzania, tabela pamięci i tabela SSTable znajdują się w każdym pojedynczym węźle.
Node
Węzeł to miejsce, w którym przechowywane są dane. Jest podstawowym składnikiem Cassandra.
Centrum danych
Zbiór węzłów nazywany jest centrum danych. Wiele węzłów zalicza się do centrów danych.
Cluster
Klaster to zbiór wielu centrów danych.
Dziennik zatwierdzeń
Każda operacja zapisu jest zapisywana w Commit Log. Commit log jest używany do odzyskiwania po awarii.
Tabela pamięci
Po zapisaniu danych w dzienniku zatwierdzeń, dane są zapisywane w tabeli Mem. Dane są tymczasowo zapisywane w tablicy Mem.
SSTable
Gdy tabela pamięci osiągnie określony próg, dane są zapisywane do pliku na dysku SSTable. Tabele SSTable są niezmienne, więc aktualizacja zapisuje nową wersję zamiast edytować starą, a proces w tle zwany kompaktowaniem scala te wersje i usuwa zastąpione wiersze.
Replikacja danych w Cassandra
Ponieważ w dowolnym momencie przetwarzania danych może wystąpić problem sprzętowy lub łącze może nie działać, wymagane jest rozwiązanie zapewniające kopię zapasową w przypadku wystąpienia problemu. Dane są więc replikowane, aby wyeliminować pojedynczy punkt awarii.
Cassandra umieszcza repliki danych w różnych węzłach w oparciu o te dwa czynniki.
- O tym, gdzie umieścić kolejną replikę decyduje Strategia replikacji.
- Chociaż całkowita liczba replik umieszczonych w różnych węzłach jest określana przez Współczynnik replikacji.
Jeden współczynnik replikacji oznacza, że istnieje tylko jedna kopia danych, natomiast trzy współczynniki replikacji oznaczają, że istnieją trzy kopie danych w trzech różnych węzłach.
Aby zapewnić brak pojedynczego punktu awarii, współczynnik replikacji musi wynosić trzy.
Istnieją dwa rodzaje strategii replikacji Cassandra.
Prosta strategia w Cassandra
Prosta strategia jest używany, gdy masz tylko jedno centrum danych. SimpleStrategy umieszcza pierwszą replikę na węźle wybranym przez partycjonera. Następnie pozostałe repliki są umieszczane zgodnie z ruchem wskazówek zegara w pierścieniu węzłów.
Oto obrazowe przedstawienie SimpleStrategy:

SiećTopologiaStrategia w Cassandra
SiećTopologiaStrategia jest używany, gdy masz więcej niż dwa centra danych. W NetworkTopologyStrategy repliki są ustawiane dla każdego centrum danych oddzielnie. NetworkTopologyStrategy umieszcza repliki w kierunku zgodnym z ruchem wskazówek zegara w pierścieniu, aż dotrze do pierwszego węzła w innej szafie. Ta strategia próbuje umieścić repliki na różnych szafach w tym samym centrum danych.
Dzieje się tak dlatego, że czasami w szafie może wystąpić awaria lub problem. Następnie repliki w innych węzłach mogą dostarczać dane.
Oto obrazowe przedstawienie strategii topologii sieci:

Współczynnik replikacji decyduje o liczbie istniejących kopii. Liczba tych kopii, które muszą odpowiedzieć na dane żądanie, to osobne ustawienie, opisane poniżej.
Poziomy spójności w Cassandra
Poziom spójności jest ustalany dla każdego zapytania, a nie dla każdego klastra, co sprawia, że Cassandra Regulowany. Określa, ile replik musi potwierdzić zapis lub odpowiedzieć na odczyt, zanim koordynator odpowie klientowi. Niski poziom zwraca dane szybciej; wysoki poziom zwraca dane, które są z pewnością bardziej aktualne.
| Poziom | Zachowanie | Typowe zastosowanie |
|---|---|---|
| ONE | Jedna replika musi odpowiedzieć. | Rejestrowanie o dużej przepustowości, w którym akceptowalne są sporadyczne nieaktualne odczyty. |
| KWORUM | Większość replik musi odpowiedzieć, co oblicza się jako (RF / 2) + 1. | Uniwersalny wybór zapewniający zrównoważoną spójność i dostępność. |
| KWORUM LOKALNE | Większość replik w lokalnym centrum danych musi odpowiedzieć. | Klastry obejmujące wiele centrów danych, ponieważ eliminują opóźnienia międzyregionalne. |
| WSZYSTKO | Każda replika musi odpowiedzieć. | Rzadko. Jeden węzeł nie działa, co powoduje całkowite odrzucenie żądania. |
| JAKIEKOLWIEK (tylko pisze) | Wskazane przekazanie uważa się za udane, nawet jeśli nie można osiągnąć żadnej repliki. | Maksymalna dostępność zapisu, przy której można ograniczyć trwałość. |
Wysoka spójność jest gwarantowana, gdy poziom odczytu plus poziom zapisu przekracza współczynnik replikacji. Przy współczynniku replikacji równym trzy, zapis w KWORUM i odczyt w KWORUM spełniają tę regułę, ponieważ dwa plus dwa jest większe niż trzy. Zapis w JEDEN i odczyt w JEDEN nie spełniają tej reguły, a zatem odczyt może zwrócić starszą wartość.
Gdy replika jest niedostępna, koordynator przechowuje napomknąć i odtwarza go ponownie, gdy węzeł powróci, co jest zgodne z poziomem ANY i większością Cassandrapraca nad samoleczącym zachowaniem.
Pisać Operacja w Cassandra
Koordynator wysyła żądanie zapisu do replik. Jeśli wszystkie repliki zostaną uruchomione, otrzymają żądanie zapisu niezależnie od poziomu spójności.
Poziom spójności określa, ile węzłów odpowie potwierdzeniem powodzenia.
Węzeł odpowie potwierdzeniem powodzenia, jeśli dane zostaną pomyślnie zapisane w dzienniku zatwierdzeń i memTabela.
Na przykład w pojedynczym centrum danych ze współczynnikiem replikacji równym trzy żądanie zapisu otrzymają trzy repliki. Jeśli poziom spójności wynosi jeden, tylko jedna replika odpowie z potwierdzeniem powodzenia, a pozostałe dwie pozostaną uśpione.
Załóżmy, że pozostałe dwie repliki stracą dane z powodu awarii węzłów lub innego problemu: Cassandra sprawi, że wiersz będzie spójny dzięki wbudowanemu mechanizmowi naprawczemu Cassandra.
Tutaj wyjaśniono, w jaki sposób zachodzi proces zapisu Cassandra,
- Gdy żądanie zapisu przychodzi do węzła, najpierw rejestruje się ono w dzienniku zatwierdzeń.
- Następnie Cassandra zapisuje dane w tablicy pamięci. Dane zapisywane w tablicy pamięci przy każdym żądaniu zapisu są również zapisywane oddzielnie w dzienniku zatwierdzeń. Tabela Mem to tymczasowo przechowywane dane w pamięci, podczas gdy dziennik zatwierdzania rejestruje zapisy transakcji w celu utworzenia kopii zapasowej.
- Gdy tabela memów jest pełna, dane są opróżniane do pliku danych SSTable.

Ponieważ tabele SSTable nigdy nie są edytowane w miejscu, usunięcie nie powoduje natychmiastowego usunięcia wiersza. Zamiast tego stosuje się znacznik zwany nagrobek jest zapisywany, a wiersz znika dopiero po zakończeniu kompaktowania po okresie karencji. Dlatego intensywne operacje usuwania spowalniają odczyt, dopóki kompaktowanie nie nadrobi zaległości.
Czytaj Operacja w Cassandra
Istnieją trzy typy żądań odczytu, które koordynator wysyła do replik.
- Bezpośrednia prośba
- Żądanie podsumowania
- Przeczytaj prośbę o naprawę
Koordynator wysyła zapytanie bezpośrednio do jednej z replik. Następnie koordynator wysyła żądanie podsumowania do liczby replik określonej przez poziom spójności i sprawdza, czy zwrócone dane są danymi zaktualizowanymi.
Następnie koordynator wysyła żądanie podsumowania do wszystkich pozostałych replik. Jeśli jakikolwiek węzeł poda nieaktualną wartość, żądanie naprawy odczytu w tle zaktualizuje te dane. Proces ten nazywany jest mechanizmem naprawy odczytu.
W replice odbierającej bezpośrednie żądanie kolejność wyszukiwania jest zaprojektowana tak, aby w miarę możliwości unikać przetwarzania danych na dysku.
- memtable jest sprawdzany w pierwszej kolejności, ponieważ najnowsze zapisy nie zostały jeszcze usunięte.
- pamięć podręczna wierszy, jeśli jest włączona, może odpowiedzieć na całe żądanie bez dalszej pracy.
- A filtr Blooma jest konsultowany dla każdej tabeli SSTable. Odpowiedź brzmi: zdecydowanie nieobecny lub prawdopodobnie obecny, co pozwala na pominięcie większości tabel SSTable bez ich odczytania.
- indeks partycji a jego podsumowanie określa dokładne przesunięcie bajtu w dowolnej tabeli SSTable, która przejdzie kontrolę filtru Blooma.
- Dopasowane fragmenty z kilku tabel SSTable są scalane, przy czym dla każdej kolumny zwycięża najnowszy znacznik czasu.
Filtr Blooma to krok, który zapewnia szybkość odczytu w miarę wzrostu ilości danych, ponieważ usuwa niemal wszystkie tabele SSTable z analizy przed rozpoczęciem jakiegokolwiek wyszukiwania na dysku. Zastosowanie tych mechanizmów na kilku maszynach jest omówione w Cassandra grupa poradnik.
