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.

  • 🕸️ Projekt peer-to-peer: Każdy węzeł jest równy i wymienia stany za pomocą protokołu gossip, co oznacza, że ​​nie ma węzła nadrzędnego, który mógłby zawieść.
  • 🧱 Elementy pamięci masowej: Zapis trafia do dziennika zatwierdzania i tabeli pamięci, a następnie jest przenoszony do niezmiennej tabeli SSTable na dysku.
  • 🔁 Strategia replikacji: Rozwiązanie SimpleStrategy jest przeznaczone dla jednego centrum danych, natomiast NetworkTopologyStrategy umieszcza repliki na każde centrum danych i na każdą szafę.
  • 🔢 Współczynnik replikacji: Standardowym ustawieniem pozwalającym na usunięcie pojedynczego punktu awarii są trzy kopie na trzech węzłach.
  • ⚖️. Poziomy spójności: Poziom wybrany dla każdego zapytania decyduje o tym, ile replik musi potwierdzić klient, zanim otrzyma odpowiedź.
  • 🔍 Ścieżka odczytu: Żądania naprawy bezpośredniej, skrótowej i odczytu łączą się, aby zwrócić aktualne dane i dyskretnie poprawić nieaktualne repliki.

Cassandra ArchiReplikacja struktury

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:

Cassandra Architektura
Cassandra ArchiSchemat tecture

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:

Prosta strategia w Cassandra
Prosta strategia w Cassandra

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:

SiećTopologiaStrategia w Cassandra
SiećTopologiaStrategia w Cassandra

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,

  1. Gdy żądanie zapisu przychodzi do węzła, najpierw rejestruje się ono w dzienniku zatwierdzeń.
  2. 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.
  3. Gdy tabela memów jest pełna, dane są opróżniane do pliku danych SSTable.
Pisać Operacja w Cassandra
Pisać Operacja w Cassandra

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.

  1. Bezpośrednia prośba
  2. Żądanie podsumowania
  3. 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.

  1. memtable jest sprawdzany w pierwszej kolejności, ponieważ najnowsze zapisy nie zostały jeszcze usunięte.
  2. pamięć podręczna wierszy, jeśli jest włączona, może odpowiedzieć na całe żądanie bez dalszej pracy.
  3. 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.
  4. indeks partycji a jego podsumowanie określa dokładne przesunięcie bajtu w dowolnej tabeli SSTable, która przejdzie kontrolę filtru Blooma.
  5. 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.

FAQ

Każdy węzeł kontaktuje się z kilkoma węzłami co sekundę i udostępnia informacje o sobie i wszystkich znanych sobie osobach: żywotność, obciążenie, wersję schematu i zakresy tokenów. W ten sposób klaster pozostaje skoordynowany bez węzła głównego.

Kompaktowanie łączy wiele tabel SSTable w jedną,ping najnowszą wersję każdej kolumny i odrzucanie wierszy z grobowcami. Bez tego odczyt wymagałby analizy coraz większej liczby plików.

Węzły wirtualne dzielą udział każdej maszyny fizycznej w sieci Token Ring na wiele małych zakresów. Dzięki temu dane są rozprowadzane bardziej równomiernie, a dodawanie lub wymiana węzła jest znacznie szybsza niż ręczne przypisywanie tokenów.

Sztuczna inteligencja może zastosować regułę „odczyt i zapis większe niż współczynnik replikacji” i zasugerować parowanie, ale akceptowalny poziom nieaktualności dla każdego zapytania jest decyzją biznesową, którą należy najpierw określić.

Sztuczna inteligencja dobrze odczytuje dane wyjściowe i metryki narzędzia nodetool, dzięki czemu skutecznie wykrywa gorące partycje, narastanie pamięci masowej (Tombstone) i zaległości w kompaktowaniu. Każda proponowana przez nią zmiana konfiguracji powinna zostać przetestowana w klastrze przejściowym.

Podsumuj ten post następująco: