Opsi pemilihan rute
Saat mengirim permintaan dari aplikasi ke Bigtable, Anda menggunakan profil aplikasi yang memberi tahu Bigtable cara menangani permintaan. Profil aplikasi menentukan kebijakan pemilihan rute untuk permintaan. Untuk instance yang menggunakan replikasi, kebijakan perutean mengontrol cluster mana yang menerima permintaan dan cara penanganan failover.
Dokumen ini menjelaskan kebijakan pemilihan rute yang tersedia untuk profil aplikasi standar.
Kebijakan pemilihan rute sangat penting untuk kasus penggunaan isolasi beban kerja, saat Anda tidak dapat menggunakan Data Boost (Pratinjau). Anda dapat mengonfigurasinya bersama dengan prioritas permintaan.
Kebijakan pemilihan rute tidak memengaruhi replikasi, tetapi Anda harus memahami cara kerja replikasi Bigtable sebelum membaca halaman ini. Anda juga harus membaca Failover.
Pemilihan rute cluster tunggal
Kebijakan pemilihan rute cluster tunggal merutekan semua permintaan ke satu cluster di instance Anda. Jika cluster tersebut tidak tersedia, Anda harus melakukan failover secara manual ke cluster lain.
Ini adalah satu-satunya kebijakan pemilihan rute yang memungkinkan Anda mengaktifkan transaksi baris tunggal.
Instance yang direplikasi biasanya memberikan konsistensi akhir. Namun, Anda dapat mencapai konsistensi baca-tulis untuk workload dalam instance yang direplikasi jika mengonfigurasi profil aplikasi untuk workload tersebut agar menggunakan perutean cluster tunggal untuk mengirim permintaan baca dan tulis ke cluster yang sama. Anda dapat merutekan traffic untuk workload tambahan di instance replika ke cluster lain dalam instance, bergantung pada persyaratan workload Anda.
Pemilihan rute multi-cluster
Kebijakan pemilihan rute multi-cluster merutekan permintaan yang Anda kirim ke instance ke region terdekat tempat instance memiliki cluster. Jika cluster tidak tersedia, traffic akan otomatis dialihkan ke cluster terdekat yang tersedia.
Konfigurasi ini memberikan konsistensi tertunda. Anda tidak dapat mengaktifkan transaksi baris tunggal dengan perutean multi-cluster, karena transaksi baris tunggal dapat menyebabkan konflik data saat Anda menggunakan perutean multi-cluster. Untuk mengetahui detailnya, lihat Transaksi satu baris.
Gunakan pemilihan rute multi-cluster jika Anda menginginkan ketersediaan tinggi (HA). Untuk konfigurasi instance yang direkomendasikan dan detail selengkapnya, lihat Membuat ketersediaan tinggi (HA).
Dua jenis perutean multi-cluster adalah cluster apa pun dan grup cluster.
Pemilihan rute cluster apa pun
Setiap pemilihan rute cluster membuat setiap cluster dalam instance tersedia untuk menerima permintaan dan untuk failover.
Pemilihan rute grup cluster
Jika ingin mengecualikan satu atau beberapa cluster instance dari kemungkinan failover, Anda dapat menggunakan perutean grup cluster. Bentuk pemilihan rute multi-cluster ini memungkinkan Anda menentukan subset cluster yang dapat menerima traffic dari profil aplikasi. Hal ini dapat berguna jika Anda ingin mencadangkan cluster untuk beban kerja terpisah.
Pemilihan rute afinitas baris
Pemilihan rute afinitas baris secara otomatis merutekan permintaan baca dan tulis satu baris ke cluster tertentu berdasarkan kunci baris permintaan.
Jika Anda ingin perutean multi-cluster mencapai tingkat konsistensi baca-tulis yang lebih tinggi, dan sebagian besar permintaan Anda adalah operasi baris tunggal, Anda dapat menggunakan perutean afinitas baris (rute melekat). Untuk mengaktifkan pemilihan rute afinitas baris, gunakan
profil aplikasi kustom dengan flag --row-affinity
diaktifkan.
Bigtable menggunakan kunci baris permintaan untuk secara otomatis menentukan cluster mana yang akan dirutekan permintaan. Anda tidak dapat menetapkan pemetaan antara kunci baris dan cluster secara manual.
Pemilihan rute afinitas baris hanya dapat digunakan untuk permintaan baca atau tulis satu baris.
Hal ini mencakup permintaan yang memanggil ReadRows
dengan satu kunci yang ditentukan, MutateRow
,
dan MutateRows
dengan satu kunci yang ditentukan, dan BulkMutateRow
dengan satu kunci
yang ditentukan.
Konsistensi read-your-write tidak sepenuhnya tercapai dengan pemilihan rute afinitas baris dalam kasus berikut:
Menambahkan cluster ke instance: Pemilihan rute afinitas baris menentukan cluster mana yang akan dirutekan berdasarkan kunci baris. Jika cluster baru ditambahkan atau dihapus ke instance saat pemilihan rute afinitas baris diaktifkan, penetapan kunci baris dapat berubah. Untuk memastikan urutan failover cluster tetap sama meskipun ada perubahan pada daftar cluster instance, sebaiknya gunakan grup cluster dengan menetapkan tanda
--restrict-to
.Dengan grup cluster, Anda tidak dapat menghapus cluster dalam instance saat digunakan oleh profil aplikasi. Selain itu, cluster baru yang ditambahkan ke instance tidak akan mulai menerima permintaan kecuali jika ditambahkan secara eksplisit ke grup cluster profil aplikasi.
Failover: Jika cluster tidak tersedia atau tidak responsif, permintaan ke cluster yang terpengaruh akan diarahkan ke cluster berikutnya sesuai urutan failover. Pengalihan ini dapat memengaruhi konsistensi.
Untuk mengetahui informasi selengkapnya tentang failover, lihat Failover. Untuk mempelajari cara menyelesaikan failover, lihat Mengelola failover.
Transaksi baris tunggal
Dalam mutasi Bigtable, seperti permintaan baca, tulis, dan hapus, selalu bersifat atomik di tingkat baris. Hal ini mencakup mutasi ke beberapa kolom dalam satu baris, selama mutasi tersebut disertakan dalam operasi mutasi yang sama. Bigtable tidak mendukung transaksi yang secara otomatis memperbarui lebih dari satu baris.
Namun, Bigtable mendukung beberapa operasi tulis yang akan memerlukan transaksi di database lain. Akibatnya, Bigtable menggunakan transaksi baris tunggal untuk menyelesaikan operasi ini. Operasi ini mencakup baca dan tulis, dan semua operasi baca dan tulis dijalankan secara atomik, tetapi operasi tersebut masih bersifat atomik hanya di tingkat baris:
- Operasi baca-ubah-tulis, termasuk penambahan dan penambahan. Operasi baca-ubah-tulis membaca nilai yang ada; menambahkan atau menambahkan ke nilai yang ada; dan menulis nilai yang diperbarui ke tabel.
- Operasi periksa dan mutasi, juga dikenal sebagai mutasi kondisional atau penulisan kondisional. Dalam operasi periksa dan ubah, Bigtable memeriksa baris untuk melihat apakah baris tersebut memenuhi kondisi yang ditentukan. Jika kondisi terpenuhi, Bigtable akan menulis nilai baru ke baris.
Konflik antar-transaksi baris tunggal
Setiap cluster dalam instance Bigtable adalah cluster utama yang menerima operasi baca dan tulis. Akibatnya, operasi yang memerlukan transaksi satu baris dapat menyebabkan masalah pada instance yang direplikasi.
Jika kasus penggunaan Anda mengizinkannya, Anda dapat menghindari konflik ini dengan menggunakan agregat. Saat Anda mengirim permintaan penambahan ke kolom gabungan, nilai baru akan digabungkan dengan nilai yang ada. Agregat memungkinkan Anda menyimpan jumlah atau penghitung yang sedang berjalan. Untuk mengetahui informasi selengkapnya, lihat Menggabungkan nilai pada waktu penulisan.
Untuk mengilustrasikan masalah yang dapat muncul saat Anda tidak menggunakan agregat, misalkan Anda memiliki tabel yang digunakan untuk menyimpan data untuk sistem penjualan tiket. Anda menggunakan penghitung bilangan bulat untuk menyimpan jumlah tiket yang telah terjual. Setiap kali Anda menjual tiket, aplikasi akan mengirim operasi baca-ubah-tulis untuk menambah penghitung sebesar 1.
Jika instance Anda memiliki satu cluster, aplikasi klien dapat menjual tiket secara bersamaan dan menambahkan penghitung tanpa kehilangan data karena permintaan ditangani secara atomik sesuai urutan penerimaan oleh satu cluster tersebut.
Di sisi lain, jika instance Anda memiliki beberapa cluster dan profil aplikasi Anda memungkinkan perutean multi-cluster, permintaan simultan untuk menambahkan penghitung mungkin masing-masing dikirim ke cluster yang berbeda, lalu direplikasi ke cluster lain dalam instance. Jika Anda mengirim dua permintaan penambahan secara bersamaan yang dirutekan ke cluster yang berbeda, setiap permintaan akan menyelesaikan transaksinya tanpa "mengetahui" permintaan lainnya. Penghitung di setiap cluster bertambah satu. Saat data direplikasi ke cluster lain, Bigtable tidak dapat mengetahui bahwa Anda ingin menambahkan 2.
Untuk membantu Anda menghindari hasil yang tidak diinginkan, Bigtable melakukan hal berikut:
- Memerlukan setiap profil aplikasi untuk menentukan apakah profil tersebut mengizinkan transaksi satu baris.
- Mencegah Anda mengaktifkan transaksi baris tunggal di profil aplikasi yang menggunakan perutean multi-cluster, karena tidak ada cara yang aman untuk mengaktifkan kedua fitur ini sekaligus.
- Memberi tahu Anda jika Anda mengaktifkan transaksi baris tunggal di dua atau beberapa profil aplikasi yang berbeda yang menggunakan perutean cluster tunggal dan mengarah ke cluster yang berbeda. Jika memilih untuk membuat jenis konfigurasi ini, Anda harus memastikan bahwa Anda tidak mengirim permintaan read-modify-write atau check-and-mutate yang bertentangan ke cluster yang berbeda.
Langkah selanjutnya
- Tinjau contoh setelan replikasi.
- Pelajari cara mengelola failover.
- Mengubah kebijakan perutean profil aplikasi.