Halaman ini menjelaskan Cassandra Adapter dan menjelaskan cara menggunakan dan menghubungkan Spanner dari Cassandra Adapter.
Cassandra Adapter dirancang untuk berjalan di mesin yang sama dengan aplikasi Anda. Adaptor mengekspos endpoint di localhost yang mendukung protokol wire Cassandra Query Language (CQL). Layanan ini menerjemahkan protokol wire CQL ke gRPC, yaitu protokol wire Spanner. Dengan proxy ini yang berjalan secara lokal, klien Cassandra dapat terhubung ke database Spanner.
Anda dapat memulai Cassandra Adapter dengan cara berikut:
- Dalam proses dengan aplikasi Go Anda
- Dalam proses dengan aplikasi Java Anda
- Sebagai proses mandiri
- Dalam container Docker
Sebelum memulai
Sebelum memulai Cassandra Adapter, pastikan Anda telah melakukan autentikasi dengan akun pengguna atau akun layanan di mesin tempat Cassandra Adapter akan berjalan. Jika Anda menggunakan akun layanan, Anda harus mengetahui lokasi file kunci JSON (file kredensial).
Anda menetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS
untuk menentukan
jalur kredensial.
Untuk informasi selengkapnya, lihat:
Menghubungkan Cassandra Adapter ke aplikasi Anda
Adaptor Cassandra memerlukan informasi berikut:
- Nama project
- Nama instance Spanner
- Database yang akan dihubungkan
Jika menggunakan Docker, Anda memerlukan jalur untuk file kredensial berformat JSON (file kunci).
Dalam proses Java
Jika Anda menggunakan akun layanan untuk autentikasi, pastikan variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
ditetapkan ke jalur file kredensial.Untuk aplikasi Java, Anda dapat menautkan Cassandra Adapter ke aplikasi secara langsung dengan menambahkan
google-cloud-spanner-cassandra
sebagai dependensi ke project Anda.
Untuk Maven, tambahkan dependensi baru berikut di bagian <dependencies>
:
Untuk Gradle, tambahkan kode berikut:
- Ubah kode pembuatan
CqlSession
. Daripada menggunakanCqlSessionBuilder
, gunakanSpannerCqlSessionBuilder
dan berikan URI database Spanner:
Beralih ke dalam proses
Untuk aplikasi Go, Anda perlu melakukan perubahan satu baris pada file inisialisasi cluster untuk mengintegrasikan klien Go Spanner Cassandra. Kemudian, Anda dapat menautkan Cassandra Adapter ke aplikasi secara langsung.
- Impor paket
spanner
adapter dari klien Go Spanner Cassandra di aplikasi Go Anda.
import spanner "github.com/googleapis/go-spanner-cassandra/cassandra/gocql"
- Ubah kode pembuatan cluster Anda untuk menggunakan
spanner.NewCluster
, bukangocql.NewCluster
, dan berikan URI database Spanner:
Anda dapat mengonfigurasi cluster seperti biasa setelah terhubung ke database Spanner.
Mandiri
- Meng-cloning repository
git clone https://github.com/googleapis/go-spanner-cassandra.git
cd go-spanner-cassandra
- Jalankan
cassandra_launcher.go
dengan flag-db
yang diperlukan:
go run cassandra_launcher.go \
-db "projects/my_project/instances/my_instance/databases/my_database"
- Ganti
-db
dengan URI database Spanner Anda.
Docker
Mulai Cassandra Adapter dengan perintah berikut.
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
Daftar berikut berisi opsi startup yang paling sering digunakan untuk Spanner Cassandra Adapter:
-db <DatabaseUri>
URI database Spanner (wajib). Tindakan ini menentukan
database Spanner yang terhubung ke klien. Misalnya, projects/YOUR_PROJECT/instances/YOUR_INSTANCE/databases/YOUR_DATABASE
.
-tcp <TCPEndpoint>
Alamat pendengar proxy klien. Ini menentukan endpoint TCP tempat
klien memproses koneksi klien Cassandra yang masuk.
Default:localhost:9042
-grpc-channels <NumGrpcChannels>
Jumlah channel gRPC yang akan digunakan saat terhubung ke Spanner. Default: 4
Misalnya, perintah berikut memulai
Cassandra Adapter di port 9042
menggunakan kredensial
aplikasi, dan menghubungkan adapter ke 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
Rekomendasi
Rekomendasi berikut membantu Anda meningkatkan kualitas pengalaman dengan Cassandra Adapter. Rekomendasi ini berfokus pada Java, khususnya driver klien Cassandra untuk Java versi 4.
Meningkatkan waktu tunggu permintaan
Waktu tunggu permintaan lima detik atau lebih memberikan pengalaman yang lebih baik dengan Cassandra Adapter daripada nilai default dua detik.
# Sample application.conf: increases request timeout to five seconds
datastax-java-driver {
basic {
request {
timeout = 5 seconds
}
}
}
Menyesuaikan penggabungan koneksi
Konfigurasi default untuk jumlah koneksi maksimum dan permintaan serentak maksimum per koneksi atau host sesuai untuk lingkungan pengembangan, pengujian, dan produksi atau penyiapan dengan volume rendah. Namun, sebaiknya Anda meningkatkan nilai ini, karena Cassandra Adapter menyamar sebagai node tunggal, tidak seperti kumpulan node dalam cluster Cassandra.
Meningkatkan nilai ini memungkinkan lebih banyak koneksi serentak antara klien dan Cassandra Interface. Hal ini dapat mencegah kehabisan kumpulan koneksi saat beban berat.
# 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
}
}
Menyesuaikan saluran gRPC
Channel gRPC digunakan oleh klien Spanner untuk komunikasi. Satu channel gRPC kira-kira setara dengan koneksi TCP. Satu channel gRPC dapat menangani hingga 100 permintaan serentak. Artinya, aplikasi akan memerlukan setidaknya sebanyak saluran gRPC seperti jumlah permintaan serentak yang akan dijalankan aplikasi, dibagi dengan 100.
Menonaktifkan perutean yang mendukung token
Driver yang menggunakan load balancing yang mendukung token mungkin mencetak peringatan atau mungkin tidak berfungsi saat menggunakan Cassandra Adapter. Karena Cassandra Adapter menyamar sebagai satu node, Cassandra Adapter tidak selalu berfungsi dengan baik dengan driver yang mendukung token yang mengharapkan setidaknya ada sejumlah node faktor replikasi dalam cluster. Beberapa driver mungkin mencetak peringatan (yang dapat diabaikan) dan melakukan penggantian ke sesuatu seperti kebijakan penyeimbangan round-robin, sementara driver lain mungkin gagal dengan error. Untuk driver yang gagal dengan error, Anda harus menonaktifkan fitur sadar token atau mengonfigurasi kebijakan load balancing round-robin.
# Sample application.conf: disables token-aware routing
metadata {
token-map {
enabled = false
}
}
Menyematkan versi protokol ke V4
Cassandra Adapter kompatibel dengan driver klien Apache Cassandra open source yang sesuai dengan protokol wire biner CQL v4. Pastikan untuk menyematkan
PROTOCOL_VERSION
ke V4
, atau Anda mungkin melihat error koneksi.
# Sample application.conf: overrides protocol version to V4
datastax-java-driver {
advanced.protocol.version = V4
}
Langkah berikutnya
- Pelajari lebih lanjut Spanner Cassandra Adapter untuk Java di repositori java-spanner-cassandra GitHub.
- Pelajari lebih lanjut Spanner Cassandra Adapter untuk Go di repositori go-spanner-cassandra GitHub.
- Lihat perbandingan antara konsep dan arsitektur Cassandra dan Spanner.
- Pelajari cara Bermigrasi dari Cassandra ke Spanner.