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, Spanner memanfaatkan kemampuan ini dalam sistem file pokok tempat Spanner dibuat. Spanner menulis mutasi database ke file dalam sistem file ini, dan sistem file menangani replikasi dan pemulihan file saat komputer atau disk gagal.

Meskipun sistem file terdistribusi yang mendasari Spanner dibuat sudah menyediakan replikasi tingkat byte, Spanner juga mereplikasi data untuk memberikan manfaat tambahan berupa ketersediaan data dan lokalitas geografis. Pada tingkat tinggi, semua data di Spanner diatur ke dalam baris. Spanner membuat beberapa salinan, atau replika, dari baris ini, lalu menyimpan replika ini di berbagai area geografis. Spanner menggunakan skema replikasi sinkron berbasis Paxos, dengan replika pemungutan suara yang melakukan pemungutan suara pada setiap permintaan penulisan sebelum penulisan di-commit. Properti replikasi sinkron secara global ini memungkinkan Anda membaca data terbaru dari replika hanya baca atau baca-tulis Spanner.

Spanner membuat replika dari setiap bagian database. Pembagian menyimpan rentang baris yang berdekatan, dengan baris diurutkan berdasarkan kunci utama. Semua data dalam bagian secara fisik disimpan bersama dalam replika, dan Spanner menayangkan setiap replika dari zona kegagalan independen. Untuk mengetahui informasi selengkapnya, lihat Ringkasan skema.

Serangkaian bagian disimpan dan direplikasi menggunakan Paxos. Dalam setiap set replika Paxos, satu replika dipilih untuk bertindak sebagai pemimpin. Replika leader menangani operasi tulis, sedangkan replika baca-tulis atau hanya baca dapat melayani permintaan baca tanpa berkomunikasi dengan leader. Jika operasi baca yang kuat diminta, pemimpin biasanya dikonsultasikan untuk memastikan bahwa replika hanya baca telah menerima semua mutasi terbaru. Untuk memantau rasio perubahan dan jumlah data yang direplikasi dari replika pemimpin ke replika lintas wilayah dalam konfigurasi instance, lihat Memantau replikasi data.

Manfaat replikasi Spanner

Manfaat replikasi Spanner meliputi:

  • Ketersediaan data: Memiliki lebih banyak salinan data akan membuat data lebih tersedia bagi klien yang ingin membacanya. Selain itu, Spanner masih dapat menayangkan operasi tulis meskipun beberapa replika tidak tersedia, karena hanya mayoritas replika voting yang diperlukan untuk melakukan operasi tulis.

  • Lokalitas geografis: Kemampuan untuk menempatkan data di berbagai region dan benua dengan Spanner berarti data dapat lebih dekat secara geografis, sehingga 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 mematuhi ACID dan menawarkan konsistensi kuat global, developer yang bekerja dengan Spanner tidak perlu menambahkan logika tambahan 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 tetap:

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 operasi baca 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 informasi selengkapnya, lihat cara membuat instance dengan konfigurasi instance kustom.

Replika baca-tulis

Replika baca-tulis mendukung operasi baca dan tulis. Replika ini:

  • Simpan salinan lengkap data Anda.
  • Menayangkan pembacaan.
  • Dapat memberikan suara apakah akan melakukan operasi tulis.
  • Berpartisipasi dalam pemilihan kepemimpinan.
  • Memenuhi syarat untuk menjadi pemimpin.
  • Merupakan satu-satunya jenis replika yang digunakan dalam instance regional.

Replika hanya baca

Replika hanya baca hanya mendukung operasi baca, tetapi tidak mendukung operasi tulis. Replika ini tidak memilih pemimpin atau melakukan operasi tulis, sehingga memungkinkan Anda menskalakan kapasitas baca tanpa meningkatkan ukuran kuorum yang diperlukan untuk operasi tulis. Replika hanya baca:

  • Mempertahankan salinan lengkap data Anda, yang direplikasi dari replika baca-tulis leader.
  • Jangan berpartisipasi dalam pemungutan suara untuk melakukan operasi tulis. Oleh karena itu, lokasi replika hanya baca tidak pernah berkontribusi pada latensi operasi tulis.
  • Tidak memenuhi syarat untuk menjadi pemimpin.
  • Menayangkan pembacaan.
  • Jika merupakan replika terdekat ke aplikasi Anda, replika hanya baca biasanya dapat menayangkan pembacaan yang sudah tidak berlaku tanpa memerlukan perjalanan bolak-balik ke region pemimpin, dengan asumsi keusangan setidaknya 15 detik. Anda juga dapat menggunakan pembacaan terarah untuk merutekan transaksi hanya baca dan pembacaan tunggal ke jenis replika atau region tertentu dalam konfigurasi instance multi-region. Untuk informasi selengkapnya, lihat Pembacaan terarah.

    Operasi baca yang kuat mungkin memerlukan perjalanan bolak-balik ke replika pemimpin. Perjalanan bolak-balik hanya untuk menegosiasikan stempel waktu, bukan mengirimkan data sebenarnya dari pemimpin. Negosiasi stempel waktu adalah operasi CPU yang efisien di pemimpin, dan biasanya data sudah dalam perjalanan. Komunikasi ini ditangani secara otomatis oleh sistem.

    Untuk informasi selengkapnya tentang pembacaan lama dan kuat, lihat Bagian 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 latensi rendah. Anda dapat menambahkan lokasi yang tercantum di bagian Wilayah Opsional sebagai replika hanya baca opsional. Jika tidak melihat lokasi replika hanya baca yang dipilih, Anda dapat meminta wilayah 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 akan 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. Hal ini membantu mempertahankan latensi baca yang rendah jika salah satu replika hanya baca tidak tersedia.

Sebagai praktik terbaik, uji beban kerja performa di instance non-produksi dalam konfigurasi instance kustom terlebih dahulu. Anda dapat melihat dasbor benchmark 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 kuat yang diharapkan untuk klien di us-east1 adalah sekitar 100 milidetik karena waktu perjalanan bolak-balik ke region pemimpin di europe-west4. Operasi baca yang sudah tidak berlaku dengan keusangan yang memadai tidak akan menimbulkan perjalanan bolak-balik sehingga 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 operasi baca, tetapi berpartisipasi dalam pemungutan suara untuk melakukan penulisan. Replika ini mempermudah pencapaian kuorum untuk operasi tulis tanpa resource penyimpanan dan komputasi yang diperlukan oleh replika baca-tulis untuk menyimpan salinan lengkap data dan menayangkan operasi baca. Replika saksi:

  • Digunakan di instance region ganda dan multi-region.
  • Jangan menyimpan salinan lengkap data.
  • Jangan tayangkan operasi baca.
  • Memilih apakah akan melakukan operasi tulis.
  • Berpartisipasi dalam pemilihan pemimpin, tetapi tidak memenuhi syarat untuk menjadi replika pemimpin.

Peran replika dalam operasi tulis dan baca

Bagian ini menjelaskan peran replika dalam operasi tulis dan baca Spanner, yang membantu dalam memahami alasan Spanner menggunakan replika saksi dalam konfigurasi dual-region dan multi-region.

Dalam operasi tulis

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 wilayah ganda atau multi-region dan aplikasi klien Anda berada di wilayah non-pemimpin, Spanner menggunakan pemilihan rute yang mempertimbangkan pemimpin untuk merutekan transaksi baca-tulis secara dinamis guna mengurangi latensi di database Anda. Untuk informasi selengkapnya, lihat Pemilihan rute yang mempertimbangkan pemimpin.

Replika pemimpin mencatat log 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 pemimpin dengan memberikan suara tentang apakah penulisan harus di-commit. Penulisan di-commit saat sebagian besar replika voting (atau kuorum penulisan) setuju untuk meng-commit penulisan. Di latar belakang, semua replika (non-saksi) yang tersisa akan mencatat penulisan ke dalam log. Jika replika baca-tulis atau hanya baca tertinggal dalam penulisan logging, replika tersebut dapat meminta data yang hilang dari replika lain untuk memiliki salinan data lengkap dan terbaru.

Dalam operasi baca

Permintaan baca klien mungkin dijalankan di atau memerlukan komunikasi dengan replika leader, bergantung pada mode serentak permintaan baca.

  • Operasi baca 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 pembacaan. Untuk informasi selengkapnya tentang mode konkurensi, lihat Jenis operasi baca.

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

    • Permintaan baca yang sudah tidak berlaku akan dikirim ke replika hanya baca atau baca-tulis terdekat yang tersedia dan telah diperbarui dengan stempel waktu permintaan. Ini dapat berupa replika leader jika leader adalah replika terdekat dengan klien yang mengeluarkan permintaan baca.

Memantau replikasi data

Anda dapat memantau kecepatan perubahan dan jumlah data yang direplikasi dari replika pemimpin ke replika lintas region dalam konfigurasi instance Anda. Rasio 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:

  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 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 wilayah di instance Anda. Jika tidak, metrik akan muncul di bagian Metrik tidak aktif. Secara default, UI memfilter dan hanya menampilkan metrik Aktif. Hapus centang Aktif untuk melihat metrik aktif dan tidak aktif.

    Diagram menunjukkan kecepatan 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 dropdown Rate, lalu pilih Delta.
    3. Pilih Tabel atau Keduanya sebagai jenis tabel, bukan Diagram.

      Tabel menunjukkan 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 selanjutnya