Halaman ini menjelaskan cara data direplikasi di Spanner, berbagai jenis replika Spanner dan perannya dalam operasi baca dan tulis, serta manfaat replikasi.
Ringkasan
Spanner otomatis mereplikasi di tingkat byte. Seperti yang dijelaskan dalam Proses Operasi Baca dan Tulis Spanner, fitur ini memanfaatkan kemampuan dalam sistem file yang mendasarinya. Spanner menulis mutasi database ke file dalam sistem file ini, dan sistem file menangani replikasi dan pemulihan file saat terjadi kegagalan pada mesin atau disk.
Meskipun sistem file terdistribusi yang mendasari Spanner dibangun sudah menyediakan replikasi tingkat byte, Spanner juga mereplikasi data untuk memberikan manfaat tambahan berupa ketersediaan data dan lokalitas geografis. Secara umum, semua data di Spanner disusun dalam baris. Spanner membuat beberapa salinan, atau replika, dari baris ini, lalu menyimpan replika tersebut di berbagai area geografis. Spanner menggunakan skema replikasi berbasis Paxos yang sinkron, di mana replika pemungutan suara melakukan pemungutan suara pada setiap permintaan penulisan sebelum penulisan di-commit. Properti replikasi sinkron secara global ini memungkinkan Anda membaca data terbaru dari replika baca-tulis atau hanya baca Spanner mana pun.
Spanner membuat replika setiap pembagian database. Split berisi rentang baris yang berdekatan, dengan baris diurutkan berdasarkan kunci utama. Semua data dalam pemisahan disimpan secara fisik bersama-sama dalam replika, dan Spanner menyajikan setiap replika dari zona kegagalan independen. Untuk mengetahui informasi selengkapnya, lihat Ringkasan skema.
Kumpulan pemisahan disimpan dan direplikasi menggunakan Paxos. Dalam setiap set replika Paxos, satu replika dipilih untuk bertindak sebagai pemimpin. Replika pemimpin menangani penulisan, sementara replika baca-tulis atau hanya baca dapat melayani permintaan baca tanpa berkomunikasi dengan pemimpin. Jika operasi baca yang kuat diminta, biasanya pemimpin akan dikonsultasikan untuk memastikan bahwa replika hanya baca telah menerima semua mutasi terbaru. Untuk memantau laju perubahan dan jumlah data yang direplikasi dari replika utama ke replika lintas region dalam konfigurasi instance Anda, lihat Memantau replikasi data.
Manfaat replikasi Spanner
Manfaat replikasi Spanner meliputi:
Ketersediaan data: Memiliki lebih banyak salinan data Anda membuat data lebih tersedia bagi klien yang ingin membacanya. Selain itu, Spanner masih dapat melayani penulisan meskipun beberapa replika tidak tersedia, karena hanya mayoritas replika voting yang diperlukan untuk meng-commit penulisan.
Lokalitas geografis: Dengan kemampuan untuk menempatkan data di berbagai wilayah dan benua dengan Spanner, data dapat lebih dekat secara geografis, dan oleh karena itu lebih cepat diakses, oleh pengguna dan layanan yang membutuhkannya.
Pengalaman database tunggal: Spanner dapat memberikan pengalaman database tunggal karena replikasi sinkron dan konsistensi kuat globalnya.
Pengembangan aplikasi yang lebih mudah: Karena Spanner kompatibel dengan ACID dan menawarkan konsistensi kuat global, developer yang bekerja dengan Spanner tidak perlu menambahkan logika ekstra dalam aplikasi mereka untuk menangani konsistensi akhir, sehingga pengembangan aplikasi dan pemeliharaan berikutnya menjadi lebih cepat dan mudah.
Jenis replika
Spanner memiliki tiga jenis replika: replika baca-tulis, replika hanya baca, dan replika saksi. Region dan topologi replikasi yang membentuk konfigurasi instance dasar sudah ditetapkan:
- Konfigurasi instance region tunggal (regional) dasar hanya menggunakan replika baca-tulis.
- Konfigurasi instance dual-region dasar menggunakan replika baca-tulis dan saksi.
- Konfigurasi instance multi-region dasar menggunakan kombinasi ketiga jenis replika.
Anda dapat membuat konfigurasi instance kustom dan menambahkan replika hanya baca tambahan untuk konfigurasi instance regional dan multi-region.
Tabel berikut meringkas jenis replika Spanner dan propertinya:
Jenis replika | Dapat memberikan suara | Dapat menjadi pemimpin | Dapat menayangkan bacaan | Dapat mengonfigurasi replika secara manual |
---|---|---|---|---|
Baca-tulis | ya | ya | ya | tidak |
Hanya baca | tidak | tidak ada | ya | ya* |
Saksi | ya | tidak | tidak ada | tidak |
* Untuk mengetahui informasi selengkapnya, lihat cara membuat instance dengan konfigurasi instance kustom.
Replika baca-tulis
Replika baca-tulis mendukung operasi baca dan tulis. Replika ini:
- Mempertahankan salinan lengkap data Anda.
- Menyajikan bacaan.
- Dapat memilih apakah akan melakukan commit pada operasi tulis.
- Berpartisipasi dalam pemilihan kepemimpinan.
- Memenuhi syarat untuk menjadi pemimpin.
- Adalah satu-satunya jenis replika yang digunakan dalam instance regional.
Replika hanya baca
Replika hanya baca hanya mendukung pembacaan, tetapi tidak mendukung penulisan. Replika ini tidak memilih pemimpin atau melakukan penulisan, sehingga memungkinkan Anda menskalakan kapasitas baca tanpa meningkatkan ukuran kuorum yang diperlukan untuk penulisan. Replika hanya baca:
- Mempertahankan salinan lengkap data Anda, yang direplikasi dari replika baca-tulis pemimpin.
- Tidak berpartisipasi dalam voting untuk melakukan penulisan. Oleh karena itu, lokasi replika hanya baca tidak pernah berkontribusi terhadap latensi penulisan.
- Tidak memenuhi syarat untuk menjadi pemimpin.
- Menyajikan bacaan.
- Dapat diskalakan secara asimetris. Untuk mengetahui informasi selengkapnya, lihat Penskalaan otomatis hanya baca asimetris.
Jika merupakan replika terdekat dengan aplikasi Anda, replika hanya baca biasanya dapat menyalurkan bacaan yang tidak terbaru tanpa memerlukan perjalanan pulang pergi ke region pemimpin, dengan asumsi ketidakbaruan minimal 15 detik. Anda juga dapat menggunakan pembacaan terarah untuk merutekan transaksi hanya baca dan pembacaan tunggal ke jenis replika tertentu atau region dalam konfigurasi instance multi-region. Untuk mengetahui informasi selengkapnya, lihat Bacaan terarah.
Bacaan yang kuat mungkin memerlukan perjalanan pulang pergi ke replika pemimpin. Perjalanan pulang pergi hanya untuk menegosiasikan stempel waktu, bukan mengirimkan data sebenarnya dari pemimpin. Negosiasi stempel waktu adalah operasi yang efisien CPU di pemimpin, dan biasanya data sudah dalam perjalanan. Komunikasi ini ditangani secara otomatis oleh sistem.
Untuk mengetahui informasi selengkapnya tentang pembacaan basi dan kuat, lihat Bagian dalam pembacaan.
Replika hanya baca opsional
Anda dapat membuat konfigurasi instance regional atau multi-region kustom dan menambahkan replika hanya baca opsional untuk menskalakan pembacaan dan mendukung pembacaan yang tidak sinkron dengan latensi rendah. Replika hanya baca yang ditambahkan harus berada di region yang bukan bagian dari konfigurasi instance dasar yang telah ditentukan sebelumnya. Untuk mengetahui daftar region baca saja opsional yang dapat Anda tambahkan, lihat kolom Region Opsional di bagian Konfigurasi yang tersedia di regional dan Konfigurasi yang tersedia di multi-region. Jika tidak melihat lokasi replika hanya baca yang Anda pilih, Anda dapat meminta region replika hanya baca opsional baru.
Semua replika hanya baca opsional tunduk pada biaya kapasitas komputasi, penyimpanan, dan replikasi.Selain itu, menambahkan replika hanya baca ke konfigurasi instance kustom tidak mengubah SLA Spanner konfigurasi instance.
Jika Anda memilih untuk menambahkan replika hanya baca ke benua yang berbeda dengan benua wilayah pemimpin, sebaiknya tambahkan minimal dua replika hanya baca. Hal ini membantu mempertahankan latensi baca yang rendah jika salah satu replika hanya baca menjadi tidak tersedia.
Sebagai praktik terbaik, uji beban kerja performa di instance non-produksi dalam konfigurasi instance kustom terlebih dahulu. Anda dapat melihat
dasbor tolok ukur Latensi dan Throughput Antar-Region
untuk data latensi antar-region median. Misalnya, jika Anda membuat konfigurasi instance kustom dengan konfigurasi dasar multi-region eur6
dan replika hanya baca opsional di us-east1
, latensi baca yang sangat konsisten yang diharapkan untuk klien di us-east1
adalah sekitar 100 milidetik karena waktu perjalanan pulang pergi ke region leader di europe-west4
. Pembacaan basi dengan kebasian yang cukup tidak
menimbulkan perjalanan pulang pergi dan oleh karena itu jauh lebih cepat. Anda juga dapat menggunakan
insight kunci dan insight transaksi untuk
mengidentifikasi transaksi yang menyebabkan latensi tinggi.
Untuk mengetahui petunjuk tentang cara menambahkan replika hanya baca opsional, lihat Membuat konfigurasi instance kustom.
Replika saksi
Replika saksi tidak mendukung operasi baca, tetapi berpartisipasi dalam pemungutan suara untuk melakukan penulisan. Replika ini mempermudah pencapaian kuorum untuk penulisan tanpa resource penyimpanan dan komputasi yang diperlukan oleh replika baca-tulis untuk menyimpan salinan data lengkap dan melayani pembacaan. Replika saksi:
- Digunakan dalam instance dual-region dan multi-region.
- Jangan menyimpan salinan data lengkap.
- Jangan menayangkan bacaan.
- Memilih apakah akan melakukan penulisan.
- Berpartisipasi dalam pemilihan pemimpin, tetapi tidak memenuhi syarat untuk menjadi replika pemimpin.
Peran replika dalam penulisan dan pembacaan
Bagian ini menjelaskan peran replika dalam penulisan dan pembacaan Spanner, yang berguna untuk memahami alasan Spanner menggunakan replika saksi dalam konfigurasi dual-region dan multi-region.
Dalam penulisan
Permintaan penulisan klien selalu diproses di replika pemimpin terlebih dahulu, meskipun ada replika non-pemimpin yang lebih dekat dengan klien, atau jika replika pemimpin berjarak jauh secara geografis dari klien. Jika Anda menggunakan konfigurasi instance multi-region atau dual-region dan aplikasi klien Anda berada di region non-pemimpin, Spanner menggunakan perutean yang kompatibel dengan pemimpin untuk merutekan transaksi baca-tulis secara dinamis guna mengurangi latensi di database Anda. Untuk mengetahui informasi selengkapnya, lihat Perutean yang mengetahui pemimpin.
Replika pemimpin mencatat operasi tulis yang masuk, dan meneruskannya secara paralel ke replika lain yang memenuhi syarat untuk memberikan suara pada operasi tulis tersebut. Setiap replika yang memenuhi syarat menyelesaikan penulisan, lalu merespons kembali pemimpin dengan memberikan suara tentang apakah penulisan harus di-commit. Penulisan di-commit saat sebagian besar replika pemilih (atau kuorum penulisan) setuju untuk meng-commit penulisan. Di latar belakang, semua replika yang tersisa (non-saksi) mencatat penulisan. Jika replika baca-tulis atau hanya baca tertinggal dalam mencatat penulisan, replika tersebut dapat meminta data yang hilang dari replika lain untuk memiliki salinan data yang lengkap dan terbaru.
Dalam bacaan
Permintaan baca klien dapat dieksekusi di atau memerlukan komunikasi dengan replika pemimpin, bergantung pada mode serentak permintaan baca.
Pembacaan yang merupakan bagian dari transaksi baca-tulis ditayangkan dari replika pemimpin, karena replika pemimpin mempertahankan kunci yang diperlukan untuk menerapkan serialisasi.
Metode baca tunggal (baca di luar konteks transaksi) dan baca dalam transaksi hanya baca mungkin memerlukan komunikasi dengan pemimpin, bergantung pada mode serentak baca. Untuk mengetahui informasi selengkapnya tentang mode serentak, lihat Jenis bacaan.
Permintaan baca yang kuat dapat ditujukan ke replika baca-tulis atau hanya baca. Jika permintaan ditujukan ke replika non-leader, replika tersebut harus berkomunikasi dengan leader untuk menjalankan pembacaan.
Permintaan baca yang tidak valid akan ditujukan ke replika hanya baca atau baca-tulis terdekat yang tersedia dan telah disinkronkan dengan stempel waktu permintaan. Replika ini dapat berupa replika pemimpin jika pemimpin adalah replika terdekat dengan klien yang mengirimkan permintaan baca.
Memantau replikasi data
Anda dapat memantau laju perubahan dan jumlah data yang direplikasi dari replika pemimpin ke replika lintas region dalam konfigurasi instance Anda. Kecepatan perubahan dalam byte per detik dan jumlah data dalam byte. Untuk melakukannya, gunakan metrik pemantauan Byte yang direplikasi lintas region
(instance/cross_region_replicated_bytes_count
).
Untuk melihat metrik ini di konsol Google Cloud , ikuti langkah-langkah berikut:
Di konsol Google Cloud , buka Monitoring:
Di menu navigasi, pilih Metrics Explorer.
Di kolom Metrik, klik drop-down Pilih metrik.
Di kolom Filter menurut nama resource atau metrik, pilih Cloud Spanner Instance > Instance > Cross region replicated bytes, lalu klik Apply.
Metrik ini hanya tersedia di bagian Metrik aktif jika ada aktivitas replikasi lintas region di instance Anda. Jika tidak, metrik tersebut akan muncul di bagian Metrik tidak aktif. Secara default, UI memfilter dan hanya menampilkan metrik Aktif. Hapus tanda centang Aktif untuk melihat metrik aktif dan tidak aktif.
Diagram menampilkan laju perubahan (dalam byte per detik) data yang direplikasi di semua instance Spanner dalam rentang waktu yang ditentukan.
Opsional: Untuk menampilkan jumlah data (dalam byte) yang direplikasi, bukan tingkat perubahan:
- Di kolom Agregasi, klik drop-down Jumlah, lalu pilih Konfigurasi penyelarasan.
- Di kolom Alignment function, klik drop-down Rate, lalu pilih Delta.
Pilih Tabel atau Keduanya sebagai jenis tabel, bukan Diagram.
Tabel menampilkan jumlah data (dalam byte) yang direplikasi dalam rentang waktu yang ditentukan.
Opsional: Untuk melihat penggunaan untuk instance atau atribut tertentu:
- Gunakan kolom Filter untuk menambahkan filter, seperti ID instance, ID database, wilayah sumber, wilayah tujuan, atau tag.
- Klik Tambahkan filter untuk menambahkan beberapa filter.
Untuk melihat daftar lengkap metrik Google Cloud , lihat metrikGoogle Cloud .
Langkah berikutnya
- Pelajari lebih lanjut konfigurasi instance.
- Pelajari cara membuat dan mengelola instance.
- Pelajari cara membuat dan mengelola konfigurasi instance.
- Pelajari lebih lanjut Google Cloud geografi dan wilayah.