Pierwsze kroki z adapterem Spanner Cassandra

1. Wprowadzenie

Spanner to w pełni zarządzana, skalowalna w poziomie, rozmieszczona globalnie usługa bazy danych, która doskonale sprawdza się w przypadku obciążeń relacyjnych i nierelacyjnych.

Interfejs Cassandra usługi Spanner umożliwia korzystanie z w pełni zarządzanej, skalowalnej i wysoce dostępnej infrastruktury Spanner za pomocą znanych narzędzi i składni Cassandra.

Czego się nauczysz

  • Jak skonfigurować instancję i bazę danych Spanner.
  • Jak przekonwertować schemat i model danych Cassandra.
  • Jak zbiorczo eksportować dane historyczne z Cassandry do Spannera.
  • Jak skierować aplikację do Spannera zamiast do Cassandry.

Czego potrzebujesz

  • Projekt Google Cloud połączony z kontem rozliczeniowym.
  • Dostęp do maszyny z zainstalowanym i skonfigurowanym interfejsem gcloud CLI lub użyj Google Cloud Shell.
  • przeglądarka, np. Chrome lub Firefox;

2. Konfiguracja i wymagania

Tworzenie projektu GCP

Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail lub Google Workspace, musisz je utworzyć.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Nazwa projektu to wyświetlana nazwa dla uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Zawsze możesz ją zaktualizować.
  • Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się tym przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako PROJECT_ID). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i pozostaje on taki przez cały czas trwania projektu.
  • Warto wiedzieć, że istnieje trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.

Konfiguracja płatności

Następnie postępuj zgodnie z przewodnikiem użytkownika dotyczącym zarządzania rozliczeniami i włącz rozliczenia w Cloud Console. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD. Aby uniknąć naliczania opłat po ukończeniu tego samouczka, możesz zamknąć instancję Spanner na końcu ćwiczenia, wykonując czynności opisane w sekcji „Krok 9. Czyszczenie”.

Uruchamianie Cloud Shell

Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module praktycznym będziesz używać Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.

W konsoli Google Cloud kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

55efc1aaa7a4d3ad.png

Udostępnienie środowiska i połączenie się z nim może zająć tylko kilka chwil. Po zakończeniu powinno wyświetlić się coś takiego:

7ffe5cbb04455448.png

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i uwierzytelniania. Wszystkie zadania w tym laboratorium możesz wykonać w przeglądarce. Nie musisz niczego instalować.

Następny krok

Następnie wdrożysz klaster Cassandra.

3. Wdrażanie klastra Cassandra (źródło)

W tym module skonfigurujemy 1-węzłowy klaster Cassandra w Compute Engine.

1. Tworzenie maszyny wirtualnej GCE na potrzeby Cassandra

Aby utworzyć instancję, użyj polecenia gcloud compute instances create z wcześniej udostępnionego Cloud Shell.

gcloud compute instances create cassandra-origin \
--machine-type=e2-medium \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--tags=cassandra-migration \
--boot-disk-size=20GB \
--zone=us-central1-a

2. Instalowanie systemu Cassandra

Otwórz VM Instances ze strony Navigation menu, postępując zgodnie z instrukcjami poniżej: otwórz instancje maszyn wirtualnych.

Wyszukaj maszynę wirtualną cassandra-origin i połącz się z nią za pomocą SSH, jak pokazano poniżej:

łączenie się z instancją maszyny wirtualnej przez SSH,.

Uruchom te polecenia, aby zainstalować Cassandrę na utworzonej maszynie wirtualnej, do której masz dostęp przez SSH.

Instalowanie Javy (zależność Cassandra)

sudo apt-get update
sudo apt-get install -y openjdk-11-jre-headless

Dodawanie repozytorium Cassandra

echo "deb [signed-by=/etc/apt/keyrings/apache-cassandra.asc] https://debian.cassandra.apache.org 41x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list

sudo curl -o /etc/apt/keyrings/apache-cassandra.asc https://downloads.apache.org/cassandra/KEYS

Instalowanie systemu Cassandra

sudo apt-get update
sudo apt-get install -y cassandra

Ustaw adres nasłuchiwania usługi Cassandra.

Dla większego bezpieczeństwa używamy tutaj wewnętrznego adresu IP maszyny wirtualnej Cassandra.

Zapisz adres IP komputera hosta.

Możesz użyć tego polecenia w Cloud Shell lub pobrać je ze strony VM Instances w konsoli Cloud.

gcloud compute instances describe cassandra-origin --format="get(networkInterfaces[0].networkIP)" --zone=us-central1-a

LUB

łączenie się z instancją maszyny wirtualnej przez SSH,.

Aktualizowanie adresu w pliku konfiguracji

Możesz użyć wybranego edytora, aby zaktualizować plik konfiguracyjny Cassandra.

sudo vim /etc/cassandra/cassandra.yaml

zmień rpc_address: na adres IP maszyny wirtualnej, zapisz i zamknij plik.

Włączanie usługi Cassandra na maszynie wirtualnej

sudo systemctl enable cassandra
sudo systemctl stop cassandra
sudo systemctl start cassandra
sudo systemctl status cassandra

3. Tworzenie przestrzeni kluczy i tabeli {create-keyspace-and-table}

Użyjemy przykładowej tabeli „users” i utworzymy przestrzeń kluczy o nazwie „analytics”.

export CQLSH_HOST=<IP of the VM added as rpc_address>
/usr/bin/cqlsh

W cqlsh:

-- Create keyspace (adjust replication for production)
CREATE KEYSPACE analytics WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};

-- Use the keyspace
USE analytics;

-- Create the users table
CREATE TABLE users (
    id  int PRIMARY KEY,
    active  boolean,
    username  text,
);

-- Insert 5 rows
INSERT INTO users (id, active, username) VALUES (1, true, 'd_knuth');
INSERT INTO users (id, active, username) VALUES (2, true, 'sanjay_ghemawat');
INSERT INTO users (id, active, username) VALUES (3, false, 'gracehopper');
INSERT INTO users (id, active, username) VALUES (4, true, 'brian_kernighan');
INSERT INTO users (id, active, username) VALUES (5, true, 'jeff_dean');
INSERT INTO users (id, active, username) VALUES (6, true, 'jaime_levy');
-- Select all users to verify the inserts.
SELECT * from users;
-- Exit cqlsh
EXIT;

Pozostaw sesję SSH otwartą lub zapisz adres IP tej maszyny wirtualnej (hostname -I).

Następny krok

Następnie skonfigurujesz instancję i bazę danych Cloud Spanner.

4. Tworzenie instancji usługi Spanner (miejsce docelowe)

W Spanner instancja to klaster zasobów obliczeniowych i pamięci masowej, który hostuje co najmniej jedną bazę danych Spanner. Aby przeprowadzić te ćwiczenia, musisz mieć co najmniej 1 instancję do hostowania bazy danych Spanner.

Sprawdzanie wersji pakietu SDK gcloud

Zanim utworzysz instancję, upewnij się, że pakiet gcloud SDK w Google Cloud Shell został zaktualizowany do wymaganej wersji – dowolnej wersji nowszej niż gcloud SDK 531.0.0. Aby sprawdzić wersję pakietu SDK gcloud, wykonaj to polecenie.

$ gcloud version | grep Google

Przykładowe dane wyjściowe:

Google Cloud SDK 489.0.0

Jeśli używana wersja jest starsza niż wymagana wersja 531.0.0 (489.0.0 w poprzednim przykładzie), musisz uaktualnić pakiet Google Cloud SDK, wykonując to polecenie:

sudo apt-get update \
  && sudo apt-get --only-upgrade install google-cloud-cli-anthoscli google-cloud-cli-cloud-run-proxy kubectl google-cloud-cli-skaffold google-cloud-cli-cbt google-cloud-cli-docker-credential-gcr google-cloud-cli-spanner-migration-tool google-cloud-cli-cloud-build-local google-cloud-cli-pubsub-emulator google-cloud-cli-app-engine-python google-cloud-cli-kpt google-cloud-cli-bigtable-emulator google-cloud-cli-datastore-emulator google-cloud-cli-spanner-emulator google-cloud-cli-app-engine-go google-cloud-cli-app-engine-python-extras google-cloud-cli-config-connector google-cloud-cli-package-go-module google-cloud-cli-istioctl google-cloud-cli-anthos-auth google-cloud-cli-gke-gcloud-auth-plugin google-cloud-cli-app-engine-grpc google-cloud-cli-kubectl-oidc google-cloud-cli-terraform-tools google-cloud-cli-nomos google-cloud-cli-local-extract google-cloud-cli-firestore-emulator google-cloud-cli-harbourbridge google-cloud-cli-log-streaming google-cloud-cli-minikube google-cloud-cli-app-engine-java google-cloud-cli-enterprise-certificate-proxy google-cloud-cli

Włączanie interfejsu Spanner API

W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany. Aby znaleźć aktualnie skonfigurowany identyfikator projektu, użyj pierwszego polecenia poniżej. Jeśli wynik jest nieoczekiwany, drugie polecenie poniżej ustawia prawidłowy.

gcloud config get-value project
gcloud config set project [YOUR-DESIRED-PROJECT-ID]

Skonfiguruj domyślny region na us-central1. Możesz zmienić ten region na inny obsługiwany przez konfiguracje regionalne Spanner.

gcloud config set compute/region us-central1

Włącz interfejs Spanner API:

gcloud services enable spanner.googleapis.com

Tworzenie instancji usługi Spanner

W tej sekcji utworzysz bezpłatną instancję próbną lub instancję z zarezerwowanymi zasobami. W tym samouczku używany jest identyfikator instancji adaptera Spanner Cassandra cassandra-adapter-demo, który jest ustawiony jako zmienna SPANNER_INSTANCE_ID za pomocą wiersza poleceń export. Opcjonalnie możesz wybrać własną nazwę identyfikatora instancji.

Tworzenie instancji próbnej Spannera

90-dniowa bezpłatna instancja próbna Spanner jest dostępna dla każdego, kto ma konto Google i włączone płatności za usługi Google Cloud w projekcie. Nie pobierzemy żadnych opłat, dopóki nie przejdziesz z bezpłatnej wersji próbnej na wersję płatną. Adapter Spanner Cassandra jest obsługiwany w instancji bezpłatnej wersji próbnej. Jeśli kwalifikujesz się do skorzystania z bezpłatnej wersji próbnej, utwórz instancję próbną, otwierając Cloud Shell i uruchamiając to polecenie:

export SPANNER_INSTANCE_ID=cassandra-adapter-demo
export SPANNER_REGION=regional-us-central1
gcloud spanner instances create $SPANNER_INSTANCE_ID \
  --config=$SPANNER_REGION \
  --instance-type=free-instance \
  --description="Spanner Cassandra Adapter demo"

Dane wyjściowe polecenia:

gcloud spanner instances create $SPANNER_INSTANCE_ID \
  --config=$SPANNER_REGION \
  --instance-type=free-instance \
  --description="Spanner Cassandra Adapter demo"
Creating instance...done.

5. Migracja schematu i modelu danych Cassandra do Spanner

Początkowy i kluczowy etap przenoszenia danych z bazy danych Cassandra do Spannera obejmuje przekształcenie istniejącego schematu Cassandry w taki sposób, aby był zgodny z wymaganiami Spannera dotyczącymi struktury i typów danych.

Aby uprościć ten złożony proces migracji schematu, użyj jednego z 2 przydatnych narzędzi open source udostępnianych przez Spanner:

  1. Narzędzie do migracji usługi Spanner: to narzędzie pomaga przenieść schemat, łącząc się z istniejącą bazą danych Cassandra i przenosząc schemat do usługi Spanner. To narzędzie jest dostępne w ramach gcloud cli.
  2. Narzędzie do schematu Cassandra w Spannerze: to narzędzie pomaga przekonwertować wyeksportowany język DDL z Cassandry na Spanner. W tym samouczku możesz użyć dowolnego z tych narzędzi. W tym laboratorium użyjemy narzędzia do migracji usługi Spanner, aby przenieść schemat.

Narzędzie do migracji do Spannera

Narzędzie do migracji usługi Spanner pomaga przenosić schematy z różnych źródeł danych, takich jak MySQL, Postgres czy Cassandra.

Na potrzeby tego samouczka użyjemy interfejsu CLI tego narzędzia, ale zdecydowanie zalecamy zapoznanie się z wersją narzędzia opartą na interfejsie użytkownika i korzystanie z niej. Umożliwia ona też wprowadzanie zmian w schemacie Spanner przed jego zastosowaniem.

Pamiętaj, że jeśli spanner-migration-tool jest uruchamiany w Cloud Shell, może nie mieć dostępu do wewnętrznego adresu IP maszyny wirtualnej Cassandra. Dlatego zalecamy uruchomienie go na maszynie wirtualnej, na której zainstalowano Cassandrę.

Wykonaj te czynności na maszynie wirtualnej, na której zainstalowano system Cassandra.

Instalowanie narzędzia Spanner Migration Tool

sudo apt-get update
sudo apt-get install --upgrade google-cloud-sdk-spanner-migration-tool

Jeśli napotkasz problemy z instalacją, zapoznaj się ze szczegółowymi instrukcjami w artykule installing-spanner-migration-tool.

Odświeżanie danych logowania gcloud

gcloud auth login
gcloud auth application-default login

Migracja schematu

export CASSANDRA_HOST=`<ip address of the VM used as rpc_address above>`
export PROJECT=`<PROJECT_ID>`
gcloud alpha spanner migrate schema \
  --source=cassandra \
  --source-profile="host=${CASSANDRA_HOST},user=cassandra,password=cassandra,port=9042,keyspace=analytics,datacenter=datacenter1" \
  --target-profile="project=${PROJECT},instance=cassandra-adapter-demo,dbName=analytics" \
  --project=${PROJECT}

Weryfikowanie języka DDL w usłudze Spanner

gcloud spanner databases ddl describe analytics --instance=cassandra-adapter-demo

Po zakończeniu migracji schematu dane wyjściowe tego polecenia powinny wyglądać tak:

CREATE TABLE users (
  active BOOL OPTIONS (
    cassandra_type = 'boolean'
  ),
  id INT64 NOT NULL OPTIONS (
    cassandra_type = 'int'
  ),
  username STRING(MAX) OPTIONS (
    cassandra_type = 'text'
  ),
) PRIMARY KEY(id);

(Opcjonalnie) Wyświetl przekonwertowany kod DDL

Możesz wyświetlić przekonwertowany język DDL i ponownie zastosować go w usłudze Spanner (jeśli potrzebujesz dodatkowych zmian).

cat `ls -t cassandra_*schema.ddl.txt  | head -n 1`

Wynikiem tego polecenia będzie

CREATE TABLE `users` (
        `active` BOOL OPTIONS (cassandra_type = 'boolean'),
        `id` INT64 NOT NULL  OPTIONS (cassandra_type = 'int'),
        `username` STRING(MAX) OPTIONS (cassandra_type = 'text'),
) PRIMARY KEY (`id`)

(Opcjonalnie) Wyświetlanie raportu o konwersjach

cat `ls -t cassandra_*report.txt  | head -n 1`

Raport o konwersjach zawiera informacje o problemach, o których warto pamiętać. Na przykład jeśli wystąpi niezgodność w maksymalnej precyzji kolumny między źródłem a Spannerem, zostanie ona tutaj wyróżniona.

6. Zbiorcze eksportowanie danych historycznych

Aby przeprowadzić migrację zbiorczą:

  1. Utwórz nowy zasobnik GCS lub użyj istniejącego.
  2. Prześlij plik konfiguracji sterownika Cassandra do zasobnika
  3. Uruchom migrację zbiorczą.

Migrację zbiorczą możesz uruchomić w Cloud Shell lub na nowo utworzonej maszynie wirtualnej, ale w tym ćwiczeniu zalecamy użycie maszyny wirtualnej, ponieważ niektóre czynności, takie jak utworzenie pliku konfiguracyjnego, spowodują zapisanie plików w pamięci lokalnej.

Udostępnij zasobnik GCS.

Po wykonaniu tego kroku powinien być już dostępny zasobnik GCS, a jego ścieżka powinna być wyeksportowana w zmiennej o nazwie CASSANDRA_BUCKET_NAME. Jeśli chcesz ponownie użyć istniejącego zasobnika, możesz po prostu wyeksportować ścieżkę.

if [ -z ${CASSANDRA_BUCKET_NAME} ]; then
  export CASSANDRA_BUCKET_NAME="gs://cassandra-demo-$(date +%Y-%m-%d-%H-%M-%S)-$(head /dev/urandom | tr -dc a-z | head -c 20)"
  gcloud storage buckets create "${CASSANDRA_BUCKET_NAME}"
else
  echo "using existing bucket ${CASSANDRA_BUCKET_NAME}"
fi

Tworzenie i przesyłanie pliku konfiguracji sterownika

Przesyłamy tu bardzo prosty plik konfiguracji sterownika Cassandra. Pełny format pliku znajdziesz tutaj.

# Configuration for the Cassandra instance and GCS bucket
INSTANCE_NAME="cassandra-origin"
ZONE="us-central1-a"
CASSANDRA_PORT="9042"

# Retrieve the internal IP address of the Cassandra instance
CASSANDRA_IP=$(gcloud compute instances describe "${INSTANCE_NAME}" \
    --format="get(networkInterfaces[0].networkIP)" \
    --zone="${ZONE}")

# Check if the IP was successfully retrieved
if [[ -z "${CASSANDRA_IP}" ]]; then
    echo "Error: Could not retrieve Cassandra instance IP."
    exit 1
fi

# Define the full contact point
CONTACT_POINT="${CASSANDRA_IP}:${CASSANDRA_PORT}"

# Create a temporary file with the specified content
TMP_FILE=$(mktemp)
cat <<EOF > "${TMP_FILE}"
# Reference configuration for the DataStax Java driver for Apache Cassandra®.
# This file is in HOCON format, see https://github.com/typesafehub/config/blob/master/HOCON.md.
datastax-java-driver {
  basic.contact-points = ["${CONTACT_POINT}"]
  basic.session-keyspace = analytics
  basic.load-balancing-policy.local-datacenter = datacenter1
  advanced.auth-provider {
    class = PlainTextAuthProvider
    username = cassandra
    password = cassandra
  }
}
EOF

# Upload the temporary file to the specified GCS bucket
if gsutil cp "${TMP_FILE}" "${CASSANDRA_BUCKET_NAME}/cassandra.conf"; then
    echo "Successfully uploaded ${TMP_FILE} to ${CASSANDRA_BUCKET_NAME}/cassandra.conf"

    # Concatenate (cat) the uploaded file from GCS
    echo "Displaying the content of the uploaded file:"
    gsutil cat "${CASSANDRA_BUCKET_NAME}/cassandra.conf"
else
    echo "Error: Failed to upload file to GCS."
fi

# Clean up the temporary file
rm "${TMP_FILE}"

Uruchamianie migracji zbiorczej

To przykładowe polecenie służące do przeprowadzenia migracji zbiorczej danych do usługi Spanner. W przypadku rzeczywistych zastosowań produkcyjnych musisz dostosować typ maszyny i liczbę instancji do żądanej skali i przepustowości. Pełną listę opcji znajdziesz w pliku README_Sourcedb_to_Spanner.md#cassandra-to-spanner-bulk-migration.

gcloud dataflow flex-template run "sourcedb-to-spanner-flex-job" \
  --project "`gcloud config get-value project`" \
  --region "us-central1" \
  --max-workers "2" \
  --num-workers "1" \
  --worker-machine-type "e2-standard-8" \
  --template-file-gcs-location "gs://dataflow-templates-us-central1/latest/flex/Sourcedb_to_Spanner_Flex" \
  --additional-experiments="[\"disable_runner_v2\"]" \
  --parameters "sourceDbDialect=CASSANDRA" \
  --parameters "insertOnlyModeForSpannerMutations=true" \
  --parameters "sourceConfigURL=$CASSANDRA_BUCKET_NAME/cassandra.conf" \
  --parameters "instanceId=cassandra-adapter-demo" \
  --parameters "databaseId=analytics" \
  --parameters "projectId=`gcloud config get-value project`" \
  --parameters "outputDirectory=$CASSANDRA_BUCKET_NAME/output" \
  --parameters "batchSizeForSpannerMutations=1"

Wygeneruje to dane wyjściowe podobne do tych poniżej. Zanotuj wygenerowany identyfikator id i użyj go do sprawdzenia stanu zadania przepływu danych.

job:
  createTime: '2025-08-08T09:41:09.820267Z'
  currentStateTime: '1970-01-01T00:00:00Z'
  id: 2025-08-08_02_41_09-17637291823018196600
  location: us-central1
  name: sourcedb-to-spanner-flex-job
  projectId: span-cloud-ck-testing-external
  startTime: '2025-08-08T09:41:09.820267Z'

Uruchom to polecenie, aby sprawdzić stan zadania, i poczekaj, aż zmieni się na JOB_STATE_DONE.

gcloud dataflow jobs describe --region=us-central1 <dataflow job id> | grep "currentState:"

Początkowo zadanie będzie w stanie oczekiwania, np.

currentState: JOB_STATE_QUEUED

Gdy zadanie jest w kolejce lub jest wykonywane, zdecydowanie zalecamy sprawdzenie strony Dataflow/Jobs w interfejsie Cloud Console, aby monitorować zadanie.

Po zakończeniu stan zadania zmieni się na:

currentState: JOB_STATE_DONE

7. Skierowanie aplikacji na usługę Spanner (przełączenie)

Po dokładnym sprawdzeniu dokładności i integralności danych po zakończeniu fazy migracji kluczowym krokiem jest przeniesienie operacyjnego działania aplikacji z dotychczasowego systemu Cassandra do nowej bazy danych Spanner. Ten krytyczny okres przejściowy jest zwykle nazywany „przełączeniem”.

Faza przełączenia to moment, w którym ruch aplikacji na żywo jest przekierowywany z pierwotnego klastra Cassandra i bezpośrednio łączony z solidną i skalowalną infrastrukturą Spanner. Ta zmiana pokazuje, jak łatwo aplikacje mogą wykorzystywać możliwości Spannera, zwłaszcza gdy korzystają z interfejsu Spanner Cassandra.

Dzięki interfejsowi Spanner Cassandra proces przełączania jest uproszczony. Polega to głównie na skonfigurowaniu aplikacji klienckich tak, aby do wszystkich interakcji z danymi używały natywnego klienta Spanner Cassandra. Zamiast komunikować się z bazą danych Cassandra (źródłową), aplikacje zaczną bezproblemowo odczytywać i zapisywać dane bezpośrednio w Spanner (docelowej). Ta zasadnicza zmiana w zakresie łączności jest zwykle osiągana dzięki użyciu SpannerCqlSessionBuilder, czyli kluczowego komponentu biblioteki klienta Spanner Cassandra, który ułatwia nawiązywanie połączeń z instancją Spanner. Spowoduje to przekierowanie całego ruchu danych aplikacji do Spannera.

W przypadku aplikacji w języku Java, które korzystają już z biblioteki cassandra-java-driver, integracja klienta Spanner Cassandra Java wymaga tylko niewielkich zmian w inicjowaniu CqlSession.

Pobieranie zależności google-cloud-spanner-cassandra

Aby zacząć korzystać z klienta Spanner Cassandra, musisz najpierw uwzględnić jego zależność w projekcie. Artefakty google-cloud-spanner-cassandra są publikowane w Maven Central pod identyfikatorem grupy com.google.cloud. Dodaj tę nową zależność w sekcji <dependencies> w projekcie Java. Oto uproszczony przykład, jak uwzględnić zależność google-cloud-spanner-cassandra:

<!-- native Spanner Cassandra Client -->
<dependencies>
  <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-spanner-cassandra</artifactId>
    <version>0.2.0</version>
  </dependency>
</dependencies>

Zmiana konfiguracji połączenia w celu połączenia z usługą Spanner

Po dodaniu niezbędnej zależności następnym krokiem jest zmiana konfiguracji połączenia w celu połączenia się z bazą danych Spanner.

Typowa aplikacja wchodząca w interakcję z klastrem Cassandra często używa kodu podobnego do poniższego, aby nawiązać połączenie:

CqlSession session = CqlSession.builder()
        .addContactPoint(new InetSocketAddress("127.0.0.1", 9042))
        .withLocalDatacenter("datacenter1")
        .withAuthCredentials("username", "password")
        .build();

Aby przekierować to połączenie do Spannera, musisz zmodyfikować logikę tworzenia CqlSession. Zamiast bezpośrednio używać standardowej funkcji CqlSessionBuildercassandra-java-driver, będziesz korzystać z funkcji SpannerCqlSession.builder() udostępnianej przez klienta Spanner Cassandra. Oto przykład, który obrazuje, jak zmodyfikować kod połączenia:

String databaseUri = "projects/<your-gcp-project>/instances/<your-spanner-instance>/databases/<your-spanner-database>";

CqlSession session = SpannerCqlSession.builder()
        .setDatabaseUri(databaseUri)
        .addContactPoint(new InetSocketAddress("localhost", 9042))
        .withLocalDatacenter("datacenter1")
        .build();

Po utworzeniu instancji CqlSession za pomocą SpannerCqlSession.builder() i podaniu prawidłowego databaseUri aplikacja nawiąże połączenie z docelową bazą danych Spanner za pomocą klienta Cassandra w Spannerze. Ta kluczowa zmiana sprawi, że wszystkie kolejne operacje odczytu i zapisu wykonywane przez aplikację będą kierowane do Spannera i obsługiwane przez tę usługę, co skutecznie zakończy początkowe przełączenie. Na tym etapie aplikacja powinna nadal działać zgodnie z oczekiwaniami, ale teraz będzie korzystać ze skalowalności i niezawodności usługi Spanner.

Dla zaawansowanych: jak działa klient Cassandra usługi Spanner

Klient Spanner Cassandra działa jako lokalny serwer proxy TCP, przechwytując surowe bajty protokołu Cassandra wysyłane przez sterownik lub narzędzie klienta. Następnie opakowuje te bajty wraz z niezbędnymi metadanymi w wiadomości gRPC, aby komunikować się ze Spannerem. Odpowiedzi z usługi Spanner są ponownie tłumaczone na format transmisji Cassandra i wysyłane z powrotem do sterownika lub narzędzia, które wysłało żądanie.

26D34akkBHcMFFe.png

Gdy będziesz mieć pewność, że Spanner obsługuje cały ruch prawidłowo, możesz:

  • Wycofaj pierwotny klaster Cassandra.

8. Czyszczenie (opcjonalnie)

Aby usunąć instancję, otwórz sekcję Spanner w konsoli Cloud i usuń instancję cassandra-adapter-demo utworzoną w ramach tego laboratorium.

76D34akkJRcMFMr.png

Usuń bazę danych Cassandra (jeśli jest zainstalowana lokalnie lub utrwalona).

Jeśli Cassandra została zainstalowana poza maszyną wirtualną Compute Engine utworzoną w tym miejscu, wykonaj odpowiednie czynności, aby usunąć dane lub odinstalować Cassandrę.

9. Gratulacje!

Co dalej?