Halaman ini menjelaskan cara data direplikasi di Spanner, berbagai jenis replika Spanner dan perannya dalam pembacaan dan penulisan, serta manfaat replikasi.
Ringkasan
Spanner akan otomatis mereplikasi pada tingkat byte. Seperti yang dijelaskan dalam Aktivitas Bacaan dan Penulisan Spanner, fitur ini memanfaatkan kemampuan ini dalam sistem file yang mendasari di dalamnya. Spanner menulis mutasi database ke file di sistem file ini, dan sistem file akan menangani proses replikasi dan pemulihan file saat terjadi kegagalan mesin atau disk.
Meskipun sistem file terdistribusi yang mendasari yang dibangun Spanner sudah menyediakan replikasi tingkat byte, Spanner juga mereplikasi data untuk memberikan manfaat tambahan terkait ketersediaan data dan lokalitas geografis. Pada dasarnya, semua data di Spanner diatur ke dalam baris. Spanner membuat beberapa salinan, atau "replicas", dari baris ini, lalu menyimpan replika tersebut di berbagai area geografis. Spanner menggunakan skema replikasi sinkron berbasis Paxos, dengan replika suara memberikan suara pada setiap permintaan tulis sebelum operasi tulis di-commit. Properti replikasi sinkron global ini memberi Anda kemampuan untuk membaca data terbaru dari replika baca-tulis atau hanya baca Spanner.
Spanner membuat replika dari setiap pemisahan database. Pemisahan menyimpan rentang baris yang berdekatan, yang barisnya diurutkan berdasarkan kunci utama. Semua data yang dibagi secara fisik disimpan bersama dalam replika, dan Spanner menyalurkan setiap replika dari zona kegagalan independen. Untuk mengetahui informasi selengkapnya, lihat Tentang skema.
Sekumpulan bagian disimpan dan direplikasi menggunakan Paxos. Dalam setiap kumpulan replika Paxos, satu replika dipilih untuk bertindak sebagai posisi teratas. Replika pemimpin bertanggung jawab untuk menangani operasi tulis, sedangkan replika baca-tulis atau hanya baca saja dapat melayani permintaan baca tanpa berkomunikasi dengan pemimpin (meskipun jika pembacaan yang kuat diminta, pemimpin biasanya akan diminta masukannya untuk memastikan bahwa replika hanya baca telah menerima semua mutasi terbaru).
Manfaat replikasi Spanner
Manfaat replikasi Spanner mencakup:
Ketersediaan data: Memiliki lebih banyak salinan data akan membuat data lebih tersedia untuk klien yang ingin membacanya. Selain itu, Spanner masih dapat melayani penulisan meskipun beberapa replika tidak tersedia, karena hanya sebagian besar replika pemungutan suara yang diperlukan untuk meng-commit penulisan.
Lokalitas geografis: Kemampuan untuk menempatkan data di berbagai wilayah dan benua dengan Spanner berarti data dapat lebih dekat secara geografis, sehingga lebih cepat diakses, dengan pengguna dan layanan yang membutuhkannya.
Pengalaman database tunggal: Spanner dapat memberikan pengalaman database tunggal karena replikasi sinkronnya dan konsistensi global yang kuat.
Pengembangan aplikasi yang lebih mudah: Karena Spanner mematuhi ACID dan menawarkan konsistensi yang kuat secara global, developer yang bekerja dengan Spanner tidak perlu menambahkan logika ekstra dalam aplikasi mereka untuk menangani konsistensi tertunda, 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. Topologi region dan replikasi yang membentuk konfigurasi instance dasar telah diperbaiki. Konfigurasi instance regional dasar hanya menggunakan replika baca-tulis, sedangkan konfigurasi instance multi-region dasar menggunakan kombinasi ketiga jenis replika tersebut. 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 memilih | Bisa menjadi pemimpin | Dapat menyalurkan pembacaan | Dapat mengonfigurasi replika secara manual |
---|---|---|---|---|
Baca-tulis | ya | ya | ya | tidak ada |
Hanya baca | tidak ada | tidak ada | ya | ya* |
Saksi | ya | tidak | tidak ada | tidak ada |
* Untuk mengetahui informasi selengkapnya, lihat cara membuat instance dengan konfigurasi instance kustom.
Replika baca-tulis
Replika baca-tulis mendukung baca dan tulis. Replika ini:
- Menyimpan salinan lengkap data Anda.
- Menayangkan pembacaan.
- Dapat memberikan suara apakah akan melakukan operasi tulis.
- Berpartisipasi dalam pemilihan pimpinan.
- Memenuhi syarat untuk menjadi pemimpin.
- Merupakan satu-satunya jenis yang digunakan dalam instance dengan region tunggal.
Replika hanya baca
Replika hanya baca hanya mendukung baca, tetapi tidak mendukung tulis. Replika ini tidak memilih pemimpin atau untuk melakukan operasi tulis, sehingga Anda dapat menskalakan kapasitas baca tanpa meningkatkan ukuran kuorum yang diperlukan untuk penulisan. Replika hanya baca:
- Pertahankan salinan lengkap data Anda, yang direplikasi dari replika baca-tulis.
- Menayangkan pembacaan.
- Jangan berpartisipasi dalam pemungutan suara untuk melakukan penulisan. Oleh karena itu, lokasi replika hanya baca tidak pernah berkontribusi pada latensi tulis.
Jika replika tersebut merupakan replika terdekat dengan aplikasi Anda, replika hanya baca biasanya dapat menayangkan pembacaan yang sudah tidak berlaku tanpa perlu melakukan perjalanan dua arah ke region posisi teratas default, dengan asumsi penghentian setidaknya 15 detik. Anda juga dapat menggunakan operasi baca terarah untuk merutekan transaksi hanya baca dan satu pembacaan ke jenis atau region replika tertentu dalam konfigurasi instance multi-region. Untuk mengetahui informasi selengkapnya, lihat Pembacaan langsung.
Pembacaan andal mungkin memerlukan perjalanan dua arah ke replika pemimpin. Pulang pergi hanya untuk menegosiasikan stempel waktu, bukan mengirimkan data aktual dari pemimpin. Negosiasi stempel waktu adalah operasi CPU yang efisien di posisi teratas, dan biasanya data sudah dalam proses. Komunikasi ini ditangani secara otomatis oleh sistem.
Untuk mengetahui informasi selengkapnya tentang pembacaan yang sudah tidak berlaku dan kuat, lihat bagian Dalam pembacaan.
Tidak memenuhi syarat untuk menjadi pemimpin.
Anda dapat membuat konfigurasi instance regional atau multi-region kustom dan menambahkan replika hanya baca opsional untuk menskalakan pembacaan dan mendukung pembacaan yang tidak berlaku dengan latensi rendah. Anda dapat menambahkan lokasi yang tercantum di bagian Optional Region sebagai replika hanya baca opsional. Jika tidak melihat lokasi replika hanya baca yang dipilih, Anda dapat meminta region replika hanya baca opsional baru. Perhatikan bahwa Anda tidak dapat mengubah topologi replikasi konfigurasi instance dasar yang telah tetap.
Semua replika hanya baca opsional tunduk pada kapasitas komputasi dan biaya penyimpanan. 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 berada di benua yang berbeda dengan region pemimpin, sebaiknya tambahkan minimal dua replika hanya baca. Tindakan ini akan membantu mempertahankan latensi baca yang rendah jika salah satu replika hanya baca menjadi tidak tersedia.
Saat Anda menambahkan replika hanya baca, replika pemimpin akan mengalami lebih banyak pemuatan replikasi, yang dapat memengaruhi performa. Sebagai praktik terbaik, uji workload performa dalam instance non-produksi dalam konfigurasi instance kustom terlebih dahulu. Anda dapat melihat dasbor tolok ukur Latensi dan Throughput Antar-Region untuk melihat 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 kuat yang diharapkan untuk klien di us-east1
adalah sekitar 100 milidetik karena waktu round-trip ke region pemimpin di europe-west4
. Pembacaan yang sudah tidak berlaku dengan tingkat penghentian yang memadai tidak akan terjadi bolak-balik, sehingga akan jauh lebih cepat. Anda juga dapat menggunakan metrik Latensi menurut jenis transaksi guna melihat data latensi untuk transaksi jenis baca-tulis dan hanya baca.
Untuk mengetahui petunjuknya, lihat Membuat konfigurasi instance kustom.
Replika saksi
Replika saksi tidak mendukung pembacaan, tetapi berpartisipasi dalam pemungutan suara untuk melakukan penulisan. Replika ini mempermudah kuorum untuk operasi tulis tanpa resource penyimpanan dan komputasi yang diperlukan oleh replika baca-tulis untuk menyimpan salinan lengkap data dan menyalurkan pembacaan. Replika saksi:
- Hanya digunakan dalam instance multi-region.
- Jangan menyimpan salinan data lengkap.
- Jangan tayangkan operasi baca.
- Pilih apakah akan melakukan commit operasi tulis.
- Berpartisipasi dalam pemilihan pemimpin, tetapi tidak memenuhi syarat untuk menjadi pemimpin.
Peran replika dalam operasi tulis dan baca
Bagian ini menjelaskan peran replika dalam penulisan dan bacaan Spanner, yang berguna dalam memahami alasan Spanner menggunakan replika saksi dalam konfigurasi multi-region.
Dalam penulisan
Permintaan tulis klien selalu diproses di replika pemimpin terlebih dahulu, meskipun ada replika non-pemimpin yang lebih dekat dengan klien, atau jika replika pemimpin secara geografis jauh dari klien. Jika Anda menggunakan konfigurasi instance multi-region dan aplikasi klien terletak di region non-leader, Spanner akan menggunakan pemilihan rute yang peka terhadap pemimpin untuk merutekan transaksi baca-tulis secara dinamis guna mengurangi latensi di database. Untuk informasi selengkapnya, lihat Pemilihan rute yang peka prospek.
Replika pemimpin mencatat penulisan yang masuk ke dalam log, dan meneruskannya, secara paralel, ke replika lain yang memenuhi syarat untuk memberikan suara pada operasi tulis tersebut. Setiap replika yang memenuhi syarat akan menyelesaikan penulisannya, lalu merespons kembali pemimpin dengan pemungutan suara apakah penulisan harus di-commit atau tidak. Penulisan di-commit ketika sebagian besar replika pemungutan suara (atau "tulis kuorum") setuju untuk melakukan penulisan. Di latar belakang, semua replika lainnya (tanpa saksi) mencatat penulisan ke dalam log. Jika replika baca-tulis atau hanya baca tertinggal dari operasi tulis logging, replika tersebut dapat meminta data yang hilang dari replika lain untuk memiliki salinan data yang lengkap dan terbaru.
Dalam pembacaan
Permintaan baca klien dapat dieksekusi pada atau memerlukan komunikasi dengan replika pemimpin, bergantung pada mode serentak permintaan baca.
Operasi baca yang merupakan bagian dari transaksi baca-tulis disajikan dari replika pemimpin, karena replika pemimpin mempertahankan kunci yang diperlukan untuk menerapkan serialisabilitas.
Metode baca tunggal (baca di luar konteks transaksi) dan pembacaan dalam transaksi hanya baca mungkin memerlukan komunikasi dengan pemimpin, bergantung pada mode serentak pembacaan. (Pelajari lebih lanjut mode konkurensi ini di bagian Jenis baca.)
Permintaan baca yang kuat dapat mengarah ke replika baca-tulis atau hanya baca. Jika permintaan ditujukan ke replika non-pemimpin, replika tersebut harus berkomunikasi dengan pemimpin untuk menjalankan pembacaan.
Permintaan baca yang sudah tidak berlaku akan menuju ke replika hanya baca atau baca-tulis terdekat yang tersedia, yang tertangkap hingga stempel waktu permintaan. Ini bisa berupa replika pemimpin jika pemimpin adalah replika terdekat dengan klien yang mengeluarkan permintaan baca.