Wyjaśnienie architektury Cassandra: kompleksowy samouczek

Opublikowany: 2021-03-10

Od momentu powstania na Facebooku Cassandra stała się jednym z najpopularniejszych projektów Apache. Jest to szeroko stosowana, wysokowydajna i rozproszona baza danych typu open source, która ułatwia życie inżynierom oprogramowania, analitykom danych i programistom internetowym.

Użytkownicy tego solidnego rozwiązania bazodanowego to między innymi IBM, Facebook, Reddit, eBay i Twitter.

Jednak, aby zapoznać się z Cassandrą, musisz wiedzieć o jej architekturze, a architektura Apache Cassandra może być trochę trudna do zrozumienia.

Dlatego stworzyliśmy następujący przewodnik wprowadzający do architektury Cassandra. Zapoznasz się ze wszystkimi niezbędnymi koncepcjami architektury Cassandra:

Spis treści

Podstawy architektury Cassandry

Architektura Apache Cassandra nie ma węzłów nadrzędnych ani podrzędnych. Zamiast tego ma architekturę podobną do pierścienia, w której węzły są logicznie rozmieszczone w pierścieniu. Architektura umożliwia automatyczną dystrybucję danych we wszystkich węzłach. Podobnie jak HDFS, dane w Cassandrze są replikowane w węzłach w celu zapewnienia nadmiarowości i są przechowywane w pamięci. Używa wartości skrótu kluczy do dystrybucji danych między węzłami w klastrze.

Architektura Cassandra umożliwia działanie systemu niezależnie od pojedynczego punktu awarii. Oznacza to, że jeśli klaster ma sto węzłów, a jeden z nich ulegnie awarii, klaster nadal będzie działał. Z drugiej strony, w przypadku Hadoop awaria nazwy węzła spowodowałaby awarię całego systemu.

Architektura Cassandra zapewnia wysoką skalowalność, dzięki czemu klaster może mieć nawet tysiące węzłów. Co więcej, możesz dodać nowy węzeł do klastra bez przerywania jego działania.

Oprócz funkcji, które omówiliśmy powyżej, architektura Apache Cassandra obsługuje również wiele centrów danych i umożliwia replikację danych między centrami danych.

Topologia i projektowanie

Architektura Cassandra oparta jest na architekturze systemu rozproszonego. Najprostsza wersja Cassandry może działać na jednej maszynie i dobrze współpracować z podstawowymi testami. Jedna instancja Cassandry nazywana jest węzłem.

Cassandra oferuje skalowalność poziomą, dzięki której można dodać więcej niż jeden węzeł jako komponent klastra. Działa z architekturą peer to peer, w której każdy węzeł jest połączony z każdym innym węzłem. Każdy węzeł Cassandra wykonuje wszystkie operacje na bazie danych i żądania klientów serwerów bez węzła głównego.

Ta rozproszona architektura peer-to-peer gwarantuje, że pojedynczy punkt awarii nie spowoduje awarii całego systemu. Klastry w Cassandrze mogą komunikować się ze sobą dla wielu funkcji. Kluczowe dla takiej komunikacji są następujące koncepcje:

Plotki

Gossip to protokół Cassandra, którego węzły używają do komunikacji peer-to-peer. Informuje węzeł o stanach pozostałych węzłów. Co sekundę jeden węzeł plotkuje z maksymalnie trzema innymi węzłami, a każda wiadomość plotkarska ma określony format i numer wersji, aby komunikacja była wydajna.

Posiew

Każdy węzeł w Cassandrze konfiguruje listę seedów, która jest listą innych węzłów. Węzeł inicjujący nie ma innego celu niż załadowanie węzła, gdy po raz pierwszy dołącza do klastra. Po załadowaniu węzeł nie wymaga materiału siewnego przy ponownym uruchomieniu. Najlepiej jest użyć dwóch lub trzech węzłów seed na centrum danych Cassandra i zachować jednolitą listę seedów.

Struktura bazy danych

W Cassandra dane są przechowywane w tabelach, w których każda tabela jest zorganizowana w rzędy i kolumny. Co więcej, tabele w Cassandra są pogrupowane w przestrzenie kluczy, na przykład tabele danych klientów mogą być zgrupowane w jednym obszarze kluczy, podczas gdy tabele transakcji biznesowych mogą być przechowywane w innym.

Każda tabela ma klucz podstawowy, który jest podzielony na kolumny klastrowe i klucz partycji. Zauważ, że kolumny klastrowe są opcjonalne. Cassandra używa klucza partycji do indeksowania danych. Wszystkie wiersze ze wspólnym kluczem partycji stanowią jedną partycję danych, podstawową jednostkę partycjonowania danych.

Partycjonowanie w Cassandra

W Cassandrze partycjoner konwertuje klucze partycji na tokeny. W Cassandrze dostępnych jest wiele opcji partycjonowania, w których Murmur3Partitioner jest wartością domyślną. Każdemu tokenowi jest przypisana wartość całkowita z przedziału od -2^63 do +2^63-1, a nazwa tego zakresu to zakres tokenów.

Każda Cassandra posiada część tego asortymentu i posiada głównie dane związane z tym asortymentem. Używamy tokena, aby precyzyjnie zlokalizować dane między węzłami.

System własności można zrozumieć za pomocą następującej koncepcji: jeśli klaster ma tylko jeden węzeł, wówczas ten węzeł będzie właścicielem pełnego zakresu tokenów. Po dodaniu większej liczby węzłów własność zakresu tokenów zostanie odpowiednio podzielona.

Węzły wirtualne

Cassandra upraszcza zadania związane z obliczaniem i przypisywaniem tokenów, korzystając z wirtualnych węzłów, znanych również jako Vnodes.

Dzieli klaster na wiele wirtualnych węzłów w celu przypisania tokenów, a każdy fizyczny węzeł otrzymuje równą liczbę Vnodes. Domyślna liczba węzłów wirtualnych należących do węzła to 256. To samo można ustawić za pomocą właściwości num_tokens. Po dodaniu nowego węzła do klastra algorytm alokacji tokenów przydzieli wymagane tokeny przy użyciu Vnodes.

Replikacja

Cassandra replikuje dane znajdujące się w każdej przestrzeni kluczy ze współczynnikiem replikacji. Jedna główna replika danych pozostaje w węźle właściciela tokena, podczas gdy reszta jest umieszczana przez Cassandrę w poszczególnych węzłach za pomocą strategii umieszczania replik. Należy zauważyć, że wszystkie repliki mają jednakowe znaczenie dla większości operacji na bazach danych.

Umieszczenie repliki w Cassandrze mają wpływ na dwa ustawienia, którymi są kapus i strategia replikacji. Snitch określa centrum danych i szafę, do której należy węzeł. Są odpowiedzialni za informowanie Cassandry o topologii w celu utrzymania wydajności.

Strategia replikacji jest ustawiona na poziomie przestrzeni kluczy i są dwie z nich: NetworkTopologyStrategy i prosta strategia. Pierwsza jest świadoma szafy i centrum danych, podczas gdy druga nie.

Twierdzenie CAP

Każdy system rozproszony działa w oparciu o twierdzenie CAP. Zgodnie z tym twierdzeniem, każdy system rozproszony może poprawnie dostarczyć dowolne dwie z trzech właściwości: spójność, dostępność i tolerancja partycji.

W Cassandrze możesz wybierać między dostępnością a spójnością. Oznacza to, że dane mogą być wysoce spójne z niższą dostępnością lub wysoce dostępne przy niskiej spójności.

Koncepcja żądania określonej liczby potwierdzeń nazywana jest dostrajalną spójnością i można ją zastosować na poziomie indywidualnego zapytania.

Proces zapisu

W tym procesie dane są zapisywane w dzienniku komentarzy na dysku, a następnie wysyłane do odpowiedzialnego węzła zgodnie z wartością hash.

Następnie węzły zapisują dane do tabeli w pamięci o nazwie memtable, skąd dane są zapisywane do „sstable” w pamięci. Następnie zostaje zaktualizowany do rzeczywistej tabeli.

Jeśli odpowiedzialny węzeł z jakiegoś powodu nie działa, dane są zapisywane w innym węźle.

Dowiedz się więcej o architekturze Cassandra

Zrozumienie architektury Apache Cassandra pomoże Ci zrozumieć, jak działa to rozwiązanie. Do tej pory wiesz również, dlaczego Cassandra wyróżnia się na tle konkurencji i dlaczego jest tak popularna.

Jeśli chcesz dowiedzieć się więcej o bazach danych, możesz zapoznać się z następującymi zasobami:

SQL dla nauki o danych: dlaczego SQL, lista korzyści i poleceń

20 najczęstszych pytań i odpowiedzi na wywiad dotyczący SQL [Dla nowicjuszy]

Bezpłatny kurs SQL z certyfikatem [2021]

Z drugiej strony, jeśli szukasz spersonalizowanego doświadczenia edukacyjnego, zalecamy wzięcie udziału w kursie nauki o danych. W upGrad oferujemy dyplom PG w dziedzinie Data Science i Master of Science w Data Science . Te kursy nauczą Cię wszystkich umiejętności niezbędnych do zostania profesjonalistą w zakresie nauki danych.

Wniosek

Jeśli chcesz dowiedzieć się więcej o programie Big Data, sprawdź nasz program PG Diploma in Software Development Specialization in Big Data, który jest przeznaczony dla pracujących profesjonalistów i zapewnia 7+ studiów przypadków i projektów, obejmuje 14 języków programowania i narzędzi, praktyczne ręce- na warsztatach, ponad 400 godzin rygorystycznej pomocy w nauce i pośrednictwie pracy w najlepszych firmach.

Sprawdź nasze inne kursy inżynierii oprogramowania w upGrad.

Z najnowocześniejszym programem nauczania w Big Data

NOWOCZESNY PROGRAM NAUCZANIA W BIG DATA Z IIIT-B
Zaawansowany program certyfikacji w Big Data z IIIT Bangalore