Informacje o współczynniku replikacji i spójności Cassandra

Edge for Private Cloud w wersji 4.17.01

Informacje o współczynniku replikacji Cassandra

Cassandra przechowuje kopie danych na wielu węzłach, aby zapewnić niezawodność i odporność na błędy. Strategia replikowania dla każdego klucza przestrzeni Edge określa węzły, na których umieszczane są kopie.

Łączna liczba replik przestrzeni kluczy w klastrze Cassandra jest nazywana czynnikiem replikacji tej przestrzeni. Współczynnik replikacji wynoszący 1 oznacza, że w klastrze Cassandra istnieje tylko 1 kopia każdego wiersza. W przypadku czynnika replikacji 2 mamy 2 kopie każdego wiersza, z których każdy znajduje się na innym węźle. Wszystkie repliki są równie ważne. Nie ma repliki głównej ani głównej.

W systemie produkcyjnym z co najmniej 3 węzłami Cassandra w każdym centrum danych domyślny czynnik replikacji dla przestrzeni kluczy Edge wynosi 3. Zasadniczo czynnik replikacji nie powinien przekraczać liczby węzłów Cassandra w klastrze.

Aby wyświetlić schemat Cassandra, który pokazuje współczynnik replikowania dla każdego klucza przestrzeni Edge:

  1. Zaloguj się w węźle Cassandra.
  2. Uruchom to polecenie:
    > /opt/apigee/apigee-cassandra/bin/cassandra-cli -h $(nazwa hosta -i) <<< "show schema;"

    Gdzie $(nazwa hosta -i) odpowiada adresowi IP węzła Cassandra. Możesz też zastąpić parametr $(hostname -i) adresem IP węzła.

W przypadku każdego klucza zobaczysz dane wyjściowe w postaci:

create keyspace kms
  with placement_strategy = 'NetworkTopologyStrategy'
  and strategy_options = {dc-1 : 3}
  and durable_writes = true;

W przypadku centrum danych 1 (dc-1) domyślny współczynnik replikacji dla przestrzeni kluczy kms wynosi 3 w przypadku instalacji z 3 węzłami Cassandra.

Jeśli dodasz do klastra dodatkowe węzły Cassandra, nie wpłynie to na domyślny współczynnik replikacji.

Jeśli na przykład zwiększysz liczbę węzłów Cassandra do 6, ale pozostawisz współczynnik replikacji na 3, nie zagwarantujesz, że wszystkie węzły Cassandra mają kopie wszystkich danych. Jeśli węzeł przestanie działać, większy współczynnik replikowania oznacza większe prawdopodobieństwo, że dane na tym węźle znajdują się na jednym z pozostałych węzłów. Wadą wyższego współczynnika replikacji jest dłuższy czas oczekiwania na zapis danych.

Poziom spójności Cassandra

Poziom spójności Cassandra to minimalna liczba węzłów Cassandra, które muszą potwierdzić operację odczytu lub zapisu, aby można ją było uznać za udaną. Do różnych przestrzeni kluczy Edge można przypisać różne poziomy spójności.

Podczas łączenia się z Cassandra w celu wykonywania operacji odczytu i zapisu węzły serwera Message Processor i Management zazwyczaj używają wartości LOCAL_QUORUM w Cassandra do określenia poziomu spójności dla przestrzeni kluczy. Niektóre przestrzenie klawiszy są jednak tak zdefiniowane, by korzystały z jednego poziomu spójności.

Obliczenie wartości atrybutu LOCAL_QUORUM dla centrum danych:

LOCAL_QUORUM = (replication_factor/2) + 1 

Jak wspomniano powyżej, domyślny współczynnik replikacji dla środowiska produkcyjnego usługi CDN Edge z 3 węzłami Cassandra wynosi 3. Dlatego domyślna wartość parametru LOCAL_QUORUM = (3/2) +1 = 2 (wartość jest zaokrąglana w dół do liczby całkowitej).

Gdy LOCAL_QUORUM = 2, co najmniej 2 z 3 węzłów Cassandra w centrum danych musi odpowiedzieć na operację odczytu/zapisu, aby operacja się powiodła. W przypadku klastra Cassandra z 3 węzłami klaster może tolerować awarię jednego węzła na centrum danych.

Określając poziom spójności jako LOCAL_QUORUM, Edge eliminuje opóźnienia wymagane do sprawdzania operacji w wielu centrach danych. Jeśli przestrzeń kluczy używa wartości QUORUM jako poziomu spójności, operacje odczytu/zapisu musiałyby być weryfikowane we wszystkich centrach danych.

Aby sprawdzić poziom spójności używany przez węzły przetwarzania wiadomości na serwerach brzegowych lub serwera zarządzania:

  1. Zaloguj się na węźle Message Processor.
  2. Zmień katalog /opt/apigee/edge-message-processor/conf:
    > cd /opt/apigee/edge-message-processor/conf
  3. W przypadku spójności zapisu:
    > grep -ri "write.consistencylevel" *
  4. Aby zapewnić spójność odczytu:
    > grep -ri "read.consistencylevel" *
  5. Zaloguj się na węźle serwera zarządzania.
  6. Przejdź do katalogu /opt/apigee/edge-management-server/conf:
    > cd /opt/apigee/edge-management-server/conf
  7. Powtórz kroki 3 i 4.

Dodanie do klastra dodatkowych węzłów Cassandra nie ma wpływu na poziom spójności.