Questa pagina descrive l'adattatore Cassandra e spiega come utilizzare e connettere Spanner da questo adattatore.
L'adattatore Cassandra è progettato per essere eseguito sulla stessa macchina dell'applicazione. L'adattatore espone un endpoint su localhost che supporta il protocollo di rete Cassandra Query Language (CQL). Converte il protocollo di rete CQL in gRPC, il protocollo di rete Spanner. Con questo proxy in esecuzione in locale, un client Cassandra può connettersi a un database Spanner.
Puoi avviare l'adattatore Cassandra nei seguenti modi:
- In-process con l'applicazione Go
- In-process con l'applicazione Java
- Come processo autonomo
- In un container Docker
Prima di iniziare
Prima di avviare l'adattatore Cassandra, assicurati di aver eseguito l'autenticazione con un account utente o un account di servizio sulla macchina in cui verrà eseguito l'adattatore Cassandra. Se utilizzi un account di servizio, devi conoscere la posizione del file della chiave JSON (il file delle credenziali).
Imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS per specificare il percorso delle credenziali.
Prima di avviare l'adattatore Cassandra, assicurati di aver eseguito l'autenticazione con un account utente o un account di servizio sulla macchina in cui verrà eseguito l'adattatore Cassandra. Se utilizzi un account di servizio, devi conoscere la posizione del file della chiave JSON (il file delle credenziali).
Imposta la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS per specificare il percorso delle credenziali.
Per ulteriori informazioni, vedi:
Connettere l'adattatore Cassandra all'applicazione
L'adattatore Cassandra richiede le seguenti informazioni:
- Nome progetto
- Nome istanza Spanner
- Database a cui connettersi
Se utilizzi Docker, ti serve il percorso di un file delle credenziali in formato JSON (file della chiave).
Java in-process
Se utilizzi un account di servizio per l'autenticazione, assicurati che la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALSsia impostata sul percorso del file delle credenziali.Per le applicazioni Java, puoi collegare l'adattatore Cassandra direttamente all'applicazione aggiungendo
google-cloud-spanner-cassandracome dipendenza al tuo progetto.
Per Maven, aggiungi la seguente nuova dipendenza nella <dependencies>
sezione:
Per Gradle, aggiungi quanto segue:
- Modifica il codice di creazione di
CqlSession. Anziché utilizzareCqlSessionBuilder, utilizzaSpannerCqlSessionBuildere fornisci il URI del database Spanner:
Go in-process
Per le applicazioni Go, devi apportare una modifica di una riga al file di inizializzazione del cluster per integrare il client Spanner Cassandra Go. A questo punto, puoi collegare l'adattatore Cassandra direttamente all'applicazione.
- Importa il pacchetto
spannerdell'adattatore dal client Spanner Cassandra Go nella tua applicazione Go.
import spanner "github.com/googleapis/go-spanner-cassandra/cassandra/gocql"
- Modifica il codice di creazione del cluster in modo da utilizzare
spanner.NewClusteranzichégocql.NewClustere fornisci l'URI del database Spanner:
Dopo aver eseguito la connessione al database Spanner, puoi configurare il cluster come di consueto.
Autonoma
- Clona il repository:
git clone https://github.com/googleapis/go-spanner-cassandra.git
cd go-spanner-cassandra
- Esegui
cassandra_launcher.gocon il flag-dbobbligatorio:
go run cassandra_launcher.go \
-db "projects/my_project/instances/my_instance/databases/my_database"
- Sostituisci
-dbcon l'URI del database Spanner.
Docker
Avvia l'adattatore Cassandra con il seguente comando.
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json
docker run -d -p 9042:9042 \
-e GOOGLE_APPLICATION_CREDENTIALS \
-v ${GOOGLE_APPLICATION_CREDENTIALS}:${GOOGLE_APPLICATION_CREDENTIALS}:ro \
gcr.io/cloud-spanner-adapter/cassandra-adapter \
-db DATABASE_URI
Il seguente elenco contiene le opzioni di avvio più utilizzate per l'adattatore Spanner Cassandra:
-db <DatabaseUri>
L'URI del database Spanner (obbligatorio). Specifica il database Spanner a cui si connette il client. Ad esempio, projects/YOUR_PROJECT/instances/YOUR_INSTANCE/databases/YOUR_DATABASE.
-tcp <TCPEndpoint>
L'indirizzo del listener del proxy client. Definisce l'endpoint TCP in cui il client ascolta le connessioni client Cassandra in entrata.
Valore predefinito:localhost:9042
-grpc-channels <NumGrpcChannels>
Il numero di canali gRPC da utilizzare per la connessione a Spanner. Valore predefinito: 4
Ad esempio, il seguente comando avvia l'adattatore Cassandra sulla porta 9042 utilizzando le credenziali dell'applicazione e connette l'adattatore al database projects/my_project/instances/my_instance/databases/my_database:
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json
docker run -d -p 9042:9042 \
-e GOOGLE_APPLICATION_CREDENTIALS \
-v ${GOOGLE_APPLICATION_CREDENTIALS}:${GOOGLE_APPLICATION_CREDENTIALS}:ro \
gcr.io/cloud-spanner-adapter/cassandra-adapter \
-db projects/my_project/instances/my_instance/databases/my_database
Consigli
I seguenti consigli ti aiutano a migliorare la tua esperienza con l'adattatore Cassandra. Questi consigli sono incentrati su Java, in particolare sul driver client Cassandra per Java versione 4.
Aumentare il timeout della richiesta
Un timeout della richiesta di cinque secondi o più offre un'esperienza migliore con l'adattatore Cassandra rispetto al valore predefinito di due secondi.
# Sample application.conf: increases request timeout to five seconds
datastax-java-driver {
basic {
request {
timeout = 5 seconds
}
}
}
Ottimizzare il pool di connessioni
Le configurazioni predefinite per il numero massimo di connessioni e il numero massimo di richieste simultanee per connessione o host sono appropriate per gli ambienti di sviluppo, test e produzione o staging a basso volume. Tuttavia, ti consigliamo di aumentare questi valori, poiché l'adattatore Cassandra si maschera come un singolo nodo, a differenza di un pool di nodi all'interno del cluster Cassandra.
L'aumento di questi valori consente un maggior numero di connessioni simultanee tra il client e l'interfaccia Cassandra. In questo modo è possibile evitare l'esaurimento del pool di connessioni in caso di carico elevato.
# Sample application.conf: increases maximum number of requests that can be
# executed concurrently on a connection
advanced.connection {
max-requests-per-connection = 32000
pool {
local.size = 10
}
}
Ottimizzare i canali gRPC
I canali gRPC vengono utilizzati dal client Spanner per la comunicazione. Un canale gRPC è approssimativamente equivalente a una connessione TCP. Un canale gRPC può gestire fino a 100 richieste simultanee. Ciò significa che un'applicazione avrà bisogno di almeno tanti canali gRPC quante sono le richieste simultanee che eseguirà, divise per 100.
Disattivare il routing basato su token
I driver che utilizzano il bilanciamento del carico basato su token potrebbero stampare un avviso o non funzionare quando si utilizza l'adattatore Cassandra. Poiché l'adattatore Cassandra si maschera come un singolo nodo, non sempre funziona bene con i driver basati su token che si aspettano che nel cluster sia presente almeno un numero di nodi pari al fattore di replica. Alcuni driver potrebbero stampare un avviso (che può essere ignorato) e ricorrere a una policy di bilanciamento round robin, mentre altri potrebbero generare un errore. Per i driver che generano un errore, devi disattivare il routing basato su token o configurare la policy di bilanciamento del carico round robin.
# Sample application.conf: disables token-aware routing
metadata {
token-map {
enabled = false
}
}
Bloccare la versione del protocollo alla V4
L'adattatore Cassandra è compatibile con qualsiasi protocollo di rete CQL Binary v4
conforme, driver client Apache Cassandra open source. Assicurati di bloccare PROTOCOL_VERSION su V4, altrimenti potresti visualizzare errori di connessione.
# Sample application.conf: overrides protocol version to V4
datastax-java-driver {
advanced.protocol.version = V4
}
Passaggi successivi
- Scopri di più sull'adattatore Spanner Cassandra per Java nel repository GitHub java-spanner-cassandra.
- Scopri di più sull'adattatore Spanner Cassandra per Go nel repository GitHub go-spanner-cassandra.
- Consulta un confronto tra i concetti e l'architettura di Cassandra e Spanner e architettura.
- Scopri come eseguire la migrazione da Cassandra a Spanner.