Replikasi

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 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 ini di area geografis yang berbeda. 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 yang diurutkan berdasarkan kunci utama. Semua data dalam pemisahan disimpan secara fisik bersama 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 leader menangani penulisan, sedangkan replika baca-tulis atau hanya-baca dapat melayani permintaan baca tanpa berkomunikasi dengan leader. Jika pembacaan yang kuat diminta, pemimpin biasanya akan dikonsultasikan untuk memastikan bahwa replika hanya baca telah menerima semua mutasi terbaru. Untuk memantau tingkat perubahan dan jumlah data yang direplikasi dari replika leader 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 sebagian besar replika voting yang diperlukan untuk meng-commit penulisan.

  • Lokalitas geografis: Dengan kemampuan untuk menempatkan data di berbagai region dan benua menggunakan Spanner, data dapat berada 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 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. Region dan topologi replikasi yang membentuk konfigurasi instance dasar sudah ditetapkan:

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 menyajikan pembacaan 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:

  • Menyimpan salinan lengkap data Anda.
  • Menyajikan pembacaan.
  • 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, bukan 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:

  • Menyimpan salinan lengkap data Anda, yang direplikasi dari replika baca-tulis leader.
  • Tidak berpartisipasi dalam pemungutan suara untuk melakukan commit penulisan. Oleh karena itu, lokasi replika hanya baca tidak pernah berkontribusi pada latensi penulisan.
  • Tidak memenuhi syarat untuk menjadi pemimpin.
  • Menyajikan bacaan.
  • Dapat diskalakan secara asimetris. Untuk mengetahui informasi selengkapnya, lihat Penskalaan otomatis hanya baca asimetris.
  • Tidak berfungsi sebagai solusi disaster recovery (DR) mandiri. Ketersediaan instance ditentukan oleh kuorum replika voting. Jika instance Spanner offline, replika hanya baca juga akan offline segera setelahnya dan tidak dapat melayani pembacaan, termasuk pembacaan yang tidak terbaru.
  • Jika merupakan replika terdekat dengan aplikasi Anda, replika hanya baca biasanya dapat menyajikan pembacaan usang tanpa memerlukan perjalanan dua arah ke region leader, dengan asumsi keusangan setidaknya 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.

    Pembacaan kuat mungkin memerlukan perjalanan pulang pergi ke replika pemimpin. Perjalanan pulang pergi hanya untuk menegosiasikan stempel waktu, bukan mengirimkan data aktual dari leader. Negosiasi stempel waktu adalah operasi yang efisien untuk 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 usang 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 wilayah replika hanya baca opsional baru.

Semua replika hanya baca opsional tunduk pada biaya komputasi, penyimpanan, dan replikasi.

Selain itu, menambahkan replika hanya baca ke konfigurasi instance kustom tidak mengubah SLA Spanner dari konfigurasi instance.

Jika Anda memilih untuk menambahkan replika hanya baca ke benua yang berbeda dengan benua region 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 memadai 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 petunjuk tentang cara menambahkan replika hanya baca opsional, lihat Membuat konfigurasi instance kustom.

Replika saksi

Replika saksi tidak mendukung pembacaan, 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 menyajikan pembacaan.
  • 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 operasi tulis

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 dual-region atau multi-region dan aplikasi klien Anda berada di region non-leader, Spanner menggunakan perutean berbasis leader 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 penulisannya, lalu merespons kembali ke pemimpin dengan memberikan suara apakah penulisan harus di-commit. Penulisan di-commit saat sebagian besar replika yang memberikan suara (atau kuorum penulisan) setuju untuk meng-commit penulisan. Di latar belakang, semua replika yang tersisa (non-saksi) mencatat penulisan ke dalam log. Jika replika baca-tulis atau hanya baca tertinggal dalam mencatat penulisan, replika tersebut dapat meminta data yang hilang dari replika lain untuk mendapatkan salinan data yang lengkap dan terbaru.

Dalam operasi baca

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 disajikan dari replika pemimpin, karena replika pemimpin mempertahankan kunci yang diperlukan untuk menerapkan serialisasi.

  • Metode baca tunggal (pembacaan di luar konteks transaksi) dan pembacaan dalam transaksi hanya baca mungkin memerlukan komunikasi dengan leader, bergantung pada mode serentak pembacaan. Untuk mengetahui informasi selengkapnya tentang mode konkurensi, lihat Jenis pembacaan.

    • Permintaan baca yang kuat dapat ditujukan ke replika baca-tulis atau hanya baca. Jika permintaan dikirim ke replika non-leader, replika tersebut harus berkomunikasi dengan leader untuk menjalankan pembacaan.

    • Permintaan baca yang usang akan dikirim ke replika hanya baca atau baca-tulis terdekat yang tersedia dan telah diperbarui ke 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 tingkat perubahan dan jumlah data yang direplikasi dari replika pemimpin ke replika lintas region dalam konfigurasi instance Anda. Tingkat perubahan dalam byte per detik dan jumlah data dalam byte. Untuk melakukannya, gunakan metrik pemantauan Cross region replicated bytes (instance/cross_region_replicated_bytes_count).

Untuk melihat metrik ini di konsol Google Cloud , ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka Monitoring:

    Buka Monitoring

  2. Di menu navigasi, pilih Metrics Explorer.

  3. Di kolom Metric, klik drop-down Select a metric.

  4. Di kolom Filter by resource or metric name, 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 ini menunjukkan laju perubahan (dalam byte per detik) data yang direplikasi di semua instance Spanner dalam rentang waktu yang ditentukan.

  5. Opsional: Untuk menampilkan jumlah data (dalam byte) yang direplikasi, bukan tingkat perubahan:

    1. Di kolom Aggregation, klik drop-down Sum, lalu pilih Configure aligner.
    2. Di kolom Alignment function, klik drop-down Rate, lalu pilih Delta.
    3. Pilih Tabel atau Keduanya sebagai jenis tabel, bukan Diagram.

      Tabel menampilkan jumlah data (dalam byte) yang direplikasi dalam rentang waktu yang ditentukan.

  6. Opsional: Untuk melihat penggunaan untuk instance atau atribut tertentu:

    1. Gunakan kolom Filter untuk menambahkan filter, seperti ID instance, ID database, region sumber, region tujuan, atau tag.
    2. Klik Tambahkan filter untuk menambahkan beberapa filter.

Untuk melihat daftar lengkap metrik Google Cloud , lihat metrik Google Cloud .

Langkah berikutnya