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 multi-region atau konfigurasi regional kustom dengan region hanya baca opsional.
Manfaat
Pembacaan terarah menawarkan manfaat berikut:
- Memberikan lebih banyak kontrol atas beban kerja load balancing di beberapa region untuk mencapai penggunaan CPU yang lebih seragam dan menghindari penyediaan berlebih instance Spanner.
- Aktifkan isolasi beban kerja. 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 andal | Ya |
Transaksi baca-tulis | Tidak |
Pembacaan terarah tidak didukung untuk transaksi baca-tulis
dan jenis update massal 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
Operasi baca terarah Spanner memiliki batasan berikut:
- Anda hanya dapat menggunakan pembacaan terarah di instance Spanner yang berada dalam 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 region pemimpin.
- Anda tidak dapat menggunakan pembacaan terarah di konsol Google Cloud atau Google Cloud CLI. API ini tersedia menggunakan REST dan RPC API serta library klien Spanner.
- Anda dapat menentukan maksimal 10 replika dalam satu operasi baca terarah.
Sebelum memulai
Pertimbangkan hal-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 region (Misalnya:
us-central1
). - Jenis replika (Nilai yang mungkin:
READ_ONLY
danREAD_WRITE
).
- Nama region (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 pembacaan terarah akan gagal.
Parameter pembacaan terarah
Jika 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
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 menayangkan permintaan pembacaan terarah. Jika menggunakanincludeReplicas
, Anda harus memberikan setidaknya salah satu kolom berikut:location
: Lokasi yang menayangkan permintaan pembacaan terarah. Lokasi harus merupakan salah satu region dalam konfigurasi multi-region database Anda. Jika lokasi bukan salah satu region dalam konfigurasi multi-region database Anda, permintaan tidak akan dirutekan seperti yang diharapkan. Sebagai gantinya, iklan tersebut ditayangkan oleh wilayah 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 akan mengarahkan permintaan Anda ke replika pemimpin database. Sebaliknya, jika Anda memasukkan nilainon-leader
, Spanner akan memenuhi permintaan di replika non-pemimpin terdekat.type
: Jenis replika yang menayangkan permintaan pembacaan 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, Spanner akan merutekan permintaan ke replika di luar daftarincludeReplicas
. Jika Anda menonaktifkan opsi failover otomatis dan semua replika yang ditentukan tidak tersedia atau tidak sehat, permintaan pembacaan terarah akan gagal. Nilai yang mungkin mencakupTRUE
untuk nonaktif danFALSE
untuk aktif.
excludeReplicas
: Berisi kumpulanreplicaSelections
berulang yang dikecualikan dari permintaan penayangan. Spanner tidak merutekan permintaan ke replika dalam daftar ini.replicaSelections
: Jenis lokasi atau replika yang dikecualikan dari penayangan permintaan pembacaan terarah. Jika menggunakanexcludeReplicas
, Anda harus memberikan setidaknya salah satu kolom berikut:location
: Lokasi yang dikecualikan dari penayangan permintaan pembacaan terarah.type
: Jenis replika yang dikecualikan dari menayangkan permintaan pembacaan 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 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 kode berikut:
{ "directedReadOptions": { "includeReplicas": { "replicaSelections": [ { "location": "us-central1", } ] } }, "sql": "SELECT SingerId, AlbumId, AlbumTitle FROM Albums" }
Klik Jalankan. Responsnya 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 pembacaan terarah di instance. 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 pembacaan terarah
diaktifkan.
Untuk mengetahui daftar lengkap metrik yang tersedia, lihat daftar metrik untuk Spanner.
Langkah selanjutnya
- Pelajari cara melakukan Pembacaan di luar transaksi.