Współczynnik replikacji Cassandra i poziom spójności

Informacje o współczynniku replikacji Cassandra

Cassandra przechowuje repliki danych w wielu węzłach, aby zapewnić niezawodność i odporność na awarie. Strategia replikacji każdego obszaru kluczy Edge określa węzły, w których umieszczane są repliki.

Łączna liczba replik przestrzeni kluczy w klastrze Cassandra jest określana jako współczynnik replikacji przestrzeni kluczy. Współczynnik replikacji 1 oznacza, że w klastrze Cassandra jest tylko 1 kopia każdego wiersza. Współczynnik replikacji równy 2 oznacza, że istnieją 2 kopie każdego wiersza, z których każda znajduje się w innym węźle. Wszystkie repliki są tak samo ważne; nie ma repliki podstawowej ani głównej.

W systemie produkcyjnym z co najmniej 3 węzłami Cassandra w każdym centrum danych domyślny współczynnik replikacji przestrzeni kluczy brzegowej wynosi 3. Zgodnie z ogólną regułą współczynnik replikacji nie powinien przekraczać liczby węzłów Cassandra w klastrze.

Aby wyświetlić schemat Cassandra, który pokazuje współczynnik replikacji dla każdej krawędzi kluczy, wykonaj poniższe czynności:

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

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

Dane wyjściowe każdej przestrzeni kluczy mają postać:

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

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

Jeśli dodasz do klastra kolejne 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 masz pewności, że wszystkie węzły Cassandra będą miały kopię wszystkich danych. Jeśli węzeł ulegnie awarii, wyższy współczynnik replikacji oznacza większe prawdopodobieństwo, że dane w tym węźle istnieją w jednym z pozostałych węzłów. Wadą wyższego współczynnika replikacji jest dłuższy czas oczekiwania na zapis danych.

Informacje o poziomie spójności Cassandra

Poziom spójności Cassandra jest zdefiniowany jako 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 przypisywać różne poziomy spójności.

Podczas łączenia się z Cassandra w celu operacji odczytu i zapisu węzły przetwarzania wiadomości i serwera zarządzania zwykle używają wartości Cassandra LOCAL_QUORUM do określenia poziomu spójności przestrzeni kluczy. Niektóre przestrzenie kluczy są jednak zdefiniowane tak, aby korzystać z poziomu spójności 1.

Obliczenie wartości LOCAL_QUORUM dla centrum danych wygląda tak:

LOCAL_QUORUM = (replication_factor/2) + 1

Jak opisano powyżej, domyślny współczynnik replikacji w środowisku produkcyjnym brzegowym z 3 węzłami Cassandra wynosi 3. Dlatego domyślna wartość LOCAL_QUORUM = (3/2) +1 = 2 (wartość jest zaokrąglana w dół do liczby całkowitej).

Przy LOCAL_QUORUM = 2 co najmniej 2 z 3 węzłów Cassandra w centrum danych muszą odpowiadać na operację odczytu/zapisu, aby operacja się powiodła. W przypadku klastra Cassandra z 3 węzłami klaster może tolerować niedostępność 1 węzła na centrum danych.

Dzięki określeniu poziomu spójności na poziomie LOCAL_QUORUM Edge pozwala uniknąć opóźnień związanych z weryfikowaniem operacji w wielu centrach danych. Jeśli w przestrzeni kluczy jako poziom spójności używana była wartość QUORUM Cassandra, operacje odczytu i zapisu musiałyby być zweryfikowane we wszystkich centrach danych.

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

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

Jeśli dodasz do klastra kolejne węzły Cassandra, poziom spójności nie ulegnie zmianie.