Untuk skenario dengan rasio baca/tulis yang sangat tinggi, Tair (Redis OSS-compatible) memungkinkan Anda mengaktifkan atau menonaktifkan pemisahan baca/tulis secara dinamis. Fitur ini menyediakan layanan pemisahan baca/tulis berkinerja tinggi, berkelanjutan, dan fleksibel—ideal untuk skenario yang memerlukan data hot spot terpusat dan pembacaan konkuren tinggi. Instans pemisahan baca/tulis menggunakan komponen proxy yang dikembangkan oleh tim Tair Alibaba Cloud. Komponen ini secara otomatis mengidentifikasi dan mengarahkan permintaan baca serta tulis, sekaligus menangani layanan seperti failover. Anda tidak perlu mengelola kode bisnis untuk pemisahan baca/tulis atau menangani failover di lapisan aplikasi, sehingga kompleksitas integrasi berkurang secara signifikan.
Aktifkan pemisahan baca/tulis untuk arsitektur standar
Instans arsitektur standar dengan pemisahan baca/tulis yang diaktifkan terdiri dari node primer, node read-only, node proxy, dan sistem ketersediaan tinggi. Gambar berikut menunjukkan arsitekturnya.
Gambar 1. Edisi cloud-native
Gambar 2. Edisi klasik (Telah dihentikan)
Komponen | Instans pemisahan baca/tulis cloud-native | Instans pemisahan baca/tulis klasik (Telah dihentikan) |
Node primer (Master node) | Menangani permintaan tulis. Node ini juga menangani permintaan baca bersama dengan node read-only. | |
Node read-only (Read replicas) | Menangani permintaan baca. Fitur-fitur:
| Menangani permintaan baca. Fitur-fitur:
|
Node replika | Setiap node read-only dapat berfungsi sebagai node replika. Jika node primer mengalami gangguan, sistem ketersediaan tinggi memilih node read-only dengan data paling lengkap sebagai node primer baru. Setelah failover selesai, sebuah node read-only baru segera ditambahkan. Karena komponen ini tidak diperlukan, instans pemisahan baca/tulis cloud-native lebih hemat biaya untuk tingkat kinerja yang sama. | Node replika dingin yang digunakan untuk cadangan data. Node ini tidak melayani permintaan. Jika node primer mengalami gangguan, permintaan dialihkan ke node ini. |
Server proxy | Setelah klien terhubung ke server proxy, server proxy secara otomatis mengidentifikasi jenis permintaan. Server tersebut mendistribusikan lalu lintas berdasarkan bobot dan meneruskan permintaan ke node data yang berbeda. Semua node memiliki bobot yang sama, dan bobot kustom tidak didukung. Misalnya, permintaan tulis diteruskan ke node primer, sedangkan permintaan baca diteruskan ke node primer dan node read-only. Catatan
| |
Sistem ketersediaan tinggi (HA) |
| |
Fitur
Perpindahan dinamis dan kemudahan penggunaan
Anda dapat langsung mengaktifkan pemisahan baca/tulis untuk instans arsitektur standar. Proxy secara cerdas mengidentifikasi dan meneruskan permintaan baca dan tulis dari klien. Setelah Anda mengaktifkan fitur ini, Anda dapat menggunakan klien apa pun yang kompatibel dengan Redis untuk mengakses instans pemisahan baca/tulis. Hal ini meningkatkan kinerja baca tanpa memerlukan perubahan pada aplikasi Anda. Instans pemisahan baca/tulis kompatibel dengan perintah protokol Redis, tetapi beberapa perintah dibatasi pada node proxy. Untuk informasi selengkapnya, lihat Batasan perintah untuk instans pemisahan baca/tulis.
Ketersediaan tinggi
Sistem ketersediaan tinggi (HA) Alibaba Cloud secara otomatis memantau kesehatan semua node data untuk memastikan ketersediaan seluruh instans. Jika node primer tidak tersedia, node primer baru dipilih secara otomatis dan topologi replikasi dibuat ulang. Jika node read-only gagal, sistem HA secara otomatis mendeteksi masalah tersebut, memulai node baru untuk menyelesaikan sinkronisasi data, dan mengambil offline node yang gagal.
Node proxy memantau status layanan setiap node read-only secara real time. Jika node read-only gagal, node proxy secara otomatis mengurangi bobot layanannya. Jika proxy mendeteksi bahwa node read-only gagal sejumlah kali berturut-turut tertentu, proxy berhenti mengirim permintaan ke node yang gagal tersebut. Proxy terus memantau node tersebut dan melanjutkan pengiriman permintaan setelah node pulih.
Berkinerja tinggi
Anda dapat memperluas node read-only dari instans pemisahan baca/tulis untuk meningkatkan kinerja keseluruhan secara linear. Proses replikasi Redis dioptimalkan pada tingkat kode sumber. Hal ini sangat meningkatkan stabilitas sistem replikasi dan memanfaatkan sepenuhnya sumber daya fisik setiap node read-only.
Skenario
Fitur ini ideal untuk skenario dengan tekanan baca tinggi, diukur dalam permintaan per detik (QPS). Jika aplikasi Anda memiliki rasio baca terhadap tulis yang tinggi, instans arsitektur standar mungkin tidak memenuhi persyaratan QPS tinggi Anda. Dalam kasus ini, Anda dapat men-deploy beberapa node read-only untuk mengatasi bottleneck kinerja node tunggal. Setelah Anda mengaktifkan pemisahan baca/tulis, QPS baca instans dapat ditingkatkan hingga 9 kali lipat.
Karena Redis menggunakan mekanisme sinkronisasi asinkron, latensi data dapat terjadi jika volume tulis besar. Saat menggunakan arsitektur ini, aplikasi Anda harus mampu mentolerir tingkat tertentu data kotor.
Aktifkan pemisahan baca/tulis untuk arsitektur kluster
Dalam arsitektur kluster, Anda hanya dapat mengaktifkan pemisahan baca/tulis untuk instans cloud-native yang berjalan dalam modus proxy. Gambar berikut menunjukkan contoh arsitektur layanan.
Deskripsi komponen
Komponen | Deskripsi |
Server proxy | Setelah klien terhubung ke server proxy, proxy secara otomatis mengidentifikasi permintaan yang dimulai oleh klien. Proxy kemudian meneruskan permintaan tersebut ke shard data dan node baca/tulis yang sesuai. Misalnya, permintaan tulis diteruskan ke node primer, dan permintaan baca diseimbangkan di antara node primer dan node read-only. |
Shard data | Setiap shard data terdiri dari satu node primer (Master) dan hingga empat node read-only (Read Replicas).
|
Layanan ketersediaan tinggi (HA) |
|
Jika instans ditempatkan di zona tunggal, semua node berada di zona primer, dan instans hanya menyediakan titik akhir untuk zona primer.
Jika instans ditempatkan di dua zona, titik akhir terpisah disediakan untuk zona primer dan sekunder. Kedua titik akhir mendukung operasi baca dan tulis. Permintaan baca ke zona primer diarahkan ke node primer atau node read-only di zona primer. Permintaan baca ke zona sekunder hanya diarahkan ke node read-only di zona sekunder. Hal ini memungkinkan akses ke node terdekat. Semua permintaan tulis diarahkan ke node primer di zona primer. Dalam kasus ekstrem di mana semua node read-only di zona sekunder tidak tersedia, permintaan baca ke zona sekunder diarahkan ke node primer. Hal ini memastikan bahwa aplikasi Anda tidak terpengaruh.
Saran dan catatan
Jika node read-only gagal, permintaan diteruskan ke node lain. Jika semua node read-only tidak tersedia, semua permintaan diteruskan ke node primer. Node read-only yang gagal dapat meningkatkan beban pada node primer dan memperpanjang waktu tanggapan. Oleh karena itu, kami merekomendasikan agar Anda menggunakan beberapa node read-only untuk skenario dengan beban baca tinggi.
Jika node read-only gagal, sistem HA menjeda layanan pada node yang gagal dan memasang node read-only yang tersedia. Proses ini melibatkan alokasi sumber daya, pembuatan instans, sinkronisasi data, dan pemuatan layanan. Waktu yang dibutuhkan tergantung pada muatan layanan dan volume data. Tair (Redis OSS-compatible) tidak menyediakan tujuan tingkat layanan (SLO) untuk waktu pemulihan node read-only.
Untuk pemisahan baca/tulis multi-zona, zona primer harus memiliki setidaknya satu node primer dan satu node read-only. Sebelum Anda mengaktifkan pemisahan baca/tulis untuk instans arsitektur standar multi-zona yang memiliki satu node primer di zona primer dan satu node replika di zona sekunder, Anda harus menambahkan node replika ke zona primer. Hal ini memastikan bahwa zona primer memiliki dua node. Kemudian, Anda dapat mengaktifkan pemisahan baca/tulis.
Dalam beberapa skenario, sinkronisasi data penuh dipicu untuk node read-only. Misalnya, hal ini dapat terjadi setelah failover HA dipicu pada node primer. Selama sinkronisasi data penuh, node read-only tidak tersedia dan mengembalikan pesan
-LOADING Redis is loading the dataset in memory\r\n.Untuk informasi selengkapnya tentang aturan routing dan pengalihan, lihat Fitur proxy Tair.
Prasyarat
Instans ditempatkan dalam mode cloud-native.
Instans merupakan instans Edisi Komunitas Redis atau instans Tair (Enterprise Edition) yang dioptimalkan untuk memori atau instans yang dioptimalkan untuk memori persisten.
Kapasitas instans minimal 1 GB.
Instans merupakan instans ketersediaan tinggi (HA).
Panduan pengguna
Jika Anda belum membuat instans, Anda dapat mengaktifkan pemisahan baca/tulis saat membuat instans.
Jika Anda telah membuat instans cloud-native, Anda dapat langsung mengaktifkan pemisahan baca/tulis.
FAQ
T: Apakah mengaktifkan pemisahan baca/tulis untuk instans arsitektur standar dapat meningkatkan bandwidth keseluruhan instans?
J: Ya, bisa. Setelah Anda mengaktifkan pemisahan baca/tulis, bandwidth keseluruhan teoretis instans dapat mencapai Bandwidth tipe instans × Jumlah total node. Misalnya, 96 MB/s × 3 node = 288 MB/s. Node proxy tambahan meneruskan sebagian besar permintaan baca ke node read-only, yang mengurangi tekanan bandwidth pada node primer. Namun, bandwidth aktual dipengaruhi oleh faktor-faktor seperti permintaan layanan dan klien. Bandwidth aktual tergantung pada hasil uji stres.
T: Setelah saya mengaktifkan pemisahan baca/tulis untuk instans arsitektur standar, apakah saya dapat meningkatkan instans tersebut ke arsitektur kluster?
J: Ya, bisa. Pertama, Anda harus menonaktifkan pemisahan baca/tulis dan kemudian meningkatkan/menurunkan spesifikasi arsitektur instans.
T: Bagaimana cara memastikan bahwa pemisahan baca/tulis telah diaktifkan?
J: Anda dapat membuka halaman Node Management instans dan memeriksa apakah opsi Read/Write Splitting telah diaktifkan.
T: Mengapa node read-only tidak menerima permintaan baca?
J: Dalam arsitektur pemisahan baca/tulis dua zona, zona primer dan sekunder memiliki titik akhir independen. Permintaan baca hanya diarahkan ke node primer atau node read-only di zona yang sama. Jika Anda hanya menggunakan titik akhir zona primer, tidak ada permintaan baca yang diarahkan ke node read-only di zona sekunder. Oleh karena itu, Anda harus membedakan antara titik akhir zona primer dan sekunder dalam kode aplikasi Anda. Kemudian, arahkan permintaan untuk zona sekunder ke titik akhir zona sekunder. Hal ini memungkinkan akses ke node terdekat dan penyeimbangan beban.