Halaman ini menjelaskan pembacaan terarah Spanner dan cara menggunakannya.
Pembacaan terarah di Spanner memberikan fleksibilitas untuk merutekan transaksi hanya baca dan pembacaan tunggal ke jenis replika atau region tertentu dalam konfigurasi instance dual-region atau multi-region atau konfigurasi regional kustom dengan region hanya baca opsional.
Manfaat
Pembacaan terarah memberikan manfaat berikut:
- Memberikan kontrol yang lebih besar atas beban kerja load balancing di beberapa region untuk mencapai pemanfaatan CPU yang lebih seragam dan menghindari penyediaan berlebih instance Spanner.
- Aktifkan isolasi workload. Anda dapat mengarahkan workload analisis dan pembacaan aliran perubahan ke replika Spanner tertentu untuk meminimalkan dampak pada workload transaksional yang berjalan di database Spanner yang sama.
Operasi kueri yang didukung
Operasi kueri | Apakah pembacaan terarah didukung? |
---|---|
Pembacaan yang sudah tidak berlaku | Ya |
Pembacaan yang kuat | Ya |
Transaksi baca-tulis | Tidak |
Pembacaan terarah tidak didukung untuk jenis update massal transaksi baca-tulis dan DML berpartisi. Hal ini karena transaksi baca-tulis harus diproses di region pemimpin. Jika
pembacaan terarah digunakan dalam transaksi baca-tulis, transaksi akan gagal dengan
error BAD_REQUEST
.
Batasan
Pembacaan terarah Spanner memiliki batasan berikut:
- Anda hanya dapat menggunakan pembacaan terarah di instance Spanner yang berada dalam konfigurasi instance dual-region atau konfigurasi instance multi-region atau konfigurasi regional kustom dengan region hanya baca opsional.
- Anda tidak dapat menggunakan pembacaan terarah dengan permintaan baca-tulis karena permintaan tulis selalu ditayangkan oleh wilayah pemimpin.
- Anda tidak dapat menggunakan pembacaan terarah di konsol Google Cloud atau Google Cloud CLI. Fitur ini tersedia menggunakan API REST dan RPC serta library klien Spanner.
- Anda dapat menentukan maksimum 10 replika dalam satu bacaan terarah.
Sebelum memulai
Pertimbangkan hal berikut sebelum Anda menggunakan pembacaan terarah:
- Aplikasi mungkin mengalami latensi tambahan jika Anda merutekan operasi baca ke replika atau region selain yang paling dekat dengan aplikasi.
- Anda dapat merutekan traffic berdasarkan:
- Nama wilayah (Misalnya:
us-central1
). - Jenis replika (Nilai yang mungkin:
READ_ONLY
danREAD_WRITE
).
- Nama wilayah (Misalnya:
- Opsi failover otomatis dalam pembacaan terarah diaktifkan secara default. Jika opsi failover otomatis diaktifkan dan semua replika yang ditentukan tidak tersedia atau tidak sehat, Spanner akan merutekan permintaan ke replika di luar daftar
includeReplicas
. Jika Anda menonaktifkan opsi failover otomatis dan semua replika yang ditentukan tidak tersedia atau tidak sehat, permintaan baca terarah akan gagal.
Parameter pembacaan terarah
Jika Anda menggunakan REST atau RPC API untuk melakukan pembacaan terarah, Anda harus menentukan
kolom ini dalam parameter directedReadOptions
. Anda hanya dapat menyertakan salah satu dari
includeReplicas
atau excludeReplicas
, bukan keduanya.
includeReplicas
: Berisi kumpulanreplicaSelections
yang berulang. Daftar ini menunjukkan urutan pembacaan terarah ke region atau jenis replika tertentu yang harus dipertimbangkan. Anda dapat menentukan maksimum 10includeReplicas
.replicaSelections
: Terdiri darilocation
atau replikatype
yang melayani permintaan baca terarah. Jika Anda menggunakanincludeReplicas
, Anda harus memberikan setidaknya salah satu kolom berikut:location
: Lokasi yang melayani permintaan baca terarah. Lokasi harus berupa salah satu region dalam konfigurasi dual-region atau multi-region database Anda. Jika lokasi bukan salah satu region dalam konfigurasi dual-region atau multi-region database Anda, permintaan tidak akan dirutekan seperti yang diharapkan. Sebaliknya, permintaan tersebut ditayangkan oleh region terdekat. Misalnya, Anda dapat mengarahkan pembacaan ke lokasius-central1
pada database dalam konfigurasi instance multi-regionnam6
.Anda juga dapat menentukan parameter
location
dengan literal stringleader
ataunon-leader
. Jika Anda memasukkan nilaileader
, Spanner mengarahkan permintaan Anda ke replika utama database. Sebaliknya, jika Anda memasukkan nilainon-leader
, Spanner akan memenuhi permintaan di replika non-pemimpin terdekat.type
: Jenis replika yang melayani permintaan baca terarah. Kemungkinan jenisnya mencakupREAD_WRITE
danREAD_ONLY
.
autoFailoverDisabled
: Secara default, nilai ini ditetapkan keFalse
, yang berarti failover otomatis diaktifkan. Jika opsi failover otomatis diaktifkan, dan semua replika yang ditentukan tidak tersedia atau tidak berfungsi dengan baik, Spanner akan merutekan permintaan ke replika di luar daftarincludeReplicas
. Jika Anda menonaktifkan opsi failover otomatis dan semua replika yang ditentukan tidak tersedia atau tidak berfungsi, permintaan pembacaan terarah akan gagal. Nilai yang mungkin mencakupTRUE
untuk dinonaktifkan danFALSE
untuk diaktifkan.
excludeReplicas
: Berisi kumpulanreplicaSelections
berulang yang dikecualikan dari permintaan penayangan. Spanner tidak merutekan permintaan ke replika dalam daftar ini.replicaSelections
: Lokasi atau jenis replika yang dikecualikan dari penayangan permintaan baca terarah. Jika Anda menggunakanexcludeReplicas
, Anda harus memberikan setidaknya salah satu kolom berikut:location
: Lokasi yang dikecualikan dari penayangan permintaan baca terarah.type
: Jenis replika yang dikecualikan dari melayani permintaan baca terarah. Kemungkinan jenisnya mencakupREAD_WRITE
danREAD_ONLY
.
Untuk melihat contoh tampilan isi permintaan REST, klik tab REST di bagian Gunakan pembacaan terarah.
Menggunakan pembacaan terarah
Anda dapat menggunakan library klien Spanner serta REST API dan RPC API untuk melakukan pembacaan terarah.
Library klien
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
REST
Anda dapat menggunakan REST API berikut untuk melakukan pembacaan terarah:
Misalnya, untuk melakukan pembacaan terarah di us-central1
menggunakan executeSQL
:
Untuk session, masukkan:
projects/<VAR>PROJECT-ID</VAR>/instances/<VAR>INSTANCE-ID</VAR>/databases/<VAR>DATABASE-ID</VAR>/sessions/<VAR>SESSION-ID</VAR>
Ganti kode berikut:
- PROJECT-ID: project ID.
- INSTANCE-ID: ID instance.
- DATABASE-ID: ID database.
- SESSION-ID: ID sesi.
Anda menerima nilai
SESSION-ID
saat membuat sesi.
Untuk Isi permintaan, gunakan yang berikut:
{ "directedReadOptions": { "includeReplicas": { "replicaSelections": [ { "location": "us-central1", } ] } }, "sql": "SELECT SingerId, AlbumId, AlbumTitle FROM Albums" }
Klik Jalankan. Respons akan menampilkan hasil kueri.
RPC
Anda dapat menggunakan RPC API berikut untuk melakukan pembacaan terarah:
Pemantauan
Spanner menyediakan metrik latensi untuk membantu Anda memantau aktivitas baca terarah di instance Anda. Metrik ini tersedia di Cloud Monitoring.
spanner.googleapis.com/api/read_request_latencies_by_serving_location
Anda dapat memfilter metrik ini menggunakan kolom /serving_location
atau /is_directed_read
. Kolom /serving location
menunjukkan lokasi
server Spanner tempat permintaan disalurkan. Kolom
/is_directed_read
menunjukkan apakah opsi bacaan terarah diaktifkan.
Untuk mengetahui daftar lengkap metrik yang tersedia, lihat daftar metrik untuk Spanner.
Langkah berikutnya
- Pelajari cara melakukan Pembacaan di luar transaksi.