Untuk beban kerja yang dominan membaca, Tair (Redis OSS-compatible) memungkinkan Anda mengaktifkan atau menonaktifkan fitur pemisahan baca/tulis secara dinamis. Fitur ini menyediakan solusi berkinerja tinggi dan berkelanjutan untuk akses terpusat ke data panas serta pembacaan dengan konkurensi tinggi. Pada instans pemisahan baca/tulis, komponen proxy yang dikembangkan oleh tim Alibaba Cloud Tair secara otomatis mengidentifikasi dan mengarahkan permintaan baca dan tulis serta menangani failover. Hal ini menyederhanakan integrasi karena Anda tidak perlu memodifikasi kode aplikasi untuk mengelola routing permintaan atau failover.
Pemisahan baca/tulis dalam arsitektur standar
Instans pemisahan baca/tulis yang menggunakan arsitektur standar terdiri dari node master, satu atau beberapa replika baca saja, server proxy, dan sistem ketersediaan tinggi. Gambar berikut menunjukkan arsitektur tersebut.
Gambar 1. Cloud-native
Gambar 2. Classic (tidak lagi tersedia)
Komponen | Cloud-native | Classic (tidak lagi tersedia) |
Node master | Menangani permintaan tulis dan berbagi beban kerja baca dengan replika baca saja. | |
Replika baca saja | Menangani permintaan baca. Replika baca saja memiliki fitur-fitur berikut:
| Menangani permintaan baca. Replika baca saja memiliki fitur-fitur berikut:
|
Node replika | Setiap replika baca saja dapat berfungsi sebagai node replika. Jika node master gagal, sistem ketersediaan tinggi akan mempromosikan replika baca saja dengan data paling lengkap menjadi node master baru. Setelah alih bencana, replika baca saja baru segera ditambahkan ke instans. Karena tidak diperlukan node replika khusus, instans pemisahan baca/tulis cloud-native menawarkan kinerja yang sama dengan biaya lebih rendah. | Node standby dingin untuk cadangan data. Node ini tidak melayani traffic. Jika node master gagal, permintaan dialihkan ke node ini melalui failover. |
Server proxy | Saat klien terhubung, server proxy secara otomatis mengidentifikasi jenis permintaan dan mendistribusikan traffic ke node data yang berbeda berdasarkan bobot. Semua node memiliki bobot yang sama, dan bobot tersebut tidak dapat disesuaikan. Misalnya, permintaan tulis dialihkan ke node master, sedangkan permintaan baca dialihkan ke node master dan replika baca saja. Catatan
| |
Sistem ketersediaan tinggi |
| |
Fitur
Dinamis dan mudah digunakan
Anda dapat mengaktifkan pemisahan baca/tulis untuk instans yang menggunakan arsitektur standar. Server proxy secara cerdas mengidentifikasi dan meneruskan permintaan baca dan tulis dari klien. Setelah mengaktifkan fitur ini, Anda dapat menggunakan klien yang kompatibel dengan Redis untuk terhubung ke instans pemisahan baca/tulis guna meningkatkan kinerja baca tanpa memodifikasi aplikasi Anda. Instans dengan pemisahan baca/tulis yang diaktifkan kompatibel dengan perintah protokol Redis, tetapi beberapa batasan perintah berlaku karena adanya proxy. Untuk informasi selengkapnya, lihat Batasan perintah untuk instans pemisahan baca/tulis.
Ketersediaan tinggi
Sistem ketersediaan tinggi eksklusif dari Alibaba Cloud secara otomatis memantau kesehatan semua node data untuk memastikan ketersediaan instans. Jika node master tidak tersedia, sistem secara otomatis memilih node master baru dan membangun kembali topologi replikasi. Jika replika baca saja gagal, sistem ketersediaan tinggi secara otomatis mendeteksi kegagalan tersebut, meluncurkan node baru untuk menyelesaikan sinkronisasi data, dan mengambil node yang gagal offline.
Server proxy memantau status layanan setiap replika baca saja secara real time. Jika replika baca saja tidak tersedia, proxy secara otomatis mengurangi bobot layanannya. Jika replika baca saja gagal lebih dari jumlah tertentu secara berturut-turut, proxy menangguhkan layanan ke node yang tidak tersedia tersebut. Proxy terus memantau node tersebut dan melanjutkan layanannya setelah node pulih.
Kinerja tinggi
Anda dapat menambah jumlah replika baca saja untuk meningkatkan kinerja keseluruhan instans pemisahan baca/tulis secara linear. Optimasi tingkat kode sumber pada proses replikasi Redis memaksimalkan stabilitas sistem selama replikasi linear dan memanfaatkan sepenuhnya sumber daya fisik setiap replika baca saja.
Kasus penggunaan
Fitur ini ideal untuk skenario dengan permintaan baca per detik (QPS) yang tinggi. Jika aplikasi Anda dominan membaca, instans yang menggunakan arsitektur standar mungkin tidak memenuhi kebutuhan QPS Anda. Dalam hal ini, Anda dapat menerapkan beberapa replika baca saja untuk mengatasi bottleneck kinerja pada node tunggal. Setelah Anda mengaktifkan pemisahan baca/tulis, QPS baca instans dapat meningkat hingga sembilan kali lipat.
Karena mekanisme replikasi asinkron Redis, latensi replikasi data dapat terjadi selama periode volume tulis yang tinggi. Jika Anda menggunakan arsitektur ini, aplikasi Anda harus mampu mentolerir tingkat ketidakmutakhiran data tertentu.
Pemisahan baca/tulis dalam 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 tersebut.
Deskripsi komponen
Komponen | Deskripsi |
Server proxy | Setelah klien terhubung ke server proxy, proxy secara otomatis mengidentifikasi permintaan klien dan meneruskannya ke shard data yang sesuai beserta node baca/tulisnya. Misalnya, permintaan tulis dialihkan ke node master, sedangkan permintaan baca diseimbangkan beban kerjanya di antara node master dan replika baca saja. |
Shard data | Setiap shard data terdiri dari satu node master dan hingga empat replika baca saja.
|
Layanan ketersediaan tinggi |
|
Jika instans diterapkan di satu zona ketersediaan, semua node berada di zona primary, dan instans hanya menyediakan satu titik akhir untuk zona primary.
Jika instans diterapkan dalam konfigurasi dua zona, titik akhir terpisah disediakan untuk zona primary dan secondary. Kedua titik akhir mendukung operasi baca dan tulis. Permintaan baca dari zona primary diarahkan ke node master atau replika baca saja dalam zona tersebut. Permintaan baca dari zona secondary hanya diarahkan ke replika baca saja dalam zona tersebut untuk memastikan akses berbasis kedekatan lokasi. Semua permintaan tulis diarahkan ke node master di zona primary. Jika semua replika baca saja di zona secondary tidak tersedia, sistem mengarahkan permintaan baca dari zona tersebut ke node master untuk memastikan kelangsungan bisnis.
Rekomendasi dan catatan penggunaan
Jika replika baca saja gagal, permintaan diteruskan ke node lain. Jika semua replika baca saja tidak tersedia, semua permintaan baca diteruskan ke node master. Jika replika baca saja gagal, beban pada node master meningkat, yang dapat memperpanjang waktu responsnya. Oleh karena itu, kami merekomendasikan agar Anda menggunakan beberapa replika baca saja untuk beban kerja yang dominan membaca.
Jika replika baca saja gagal, sistem ketersediaan tinggi menangguhkan layanan ke node yang gagal dan meluncurkan replika baca saja baru. Proses ini melibatkan alokasi sumber daya, pembuatan instans, sinkronisasi data, dan pemuatan layanan. Waktu yang dibutuhkan bergantung pada beban kerja dan volume data. Tair (Redis OSS-compatible) tidak menjamin objektif waktu pemulihan untuk replika baca saja.
Penerapan pemisahan baca/tulis dua zona mengharuskan zona primary memiliki setidaknya satu node master dan satu replika baca saja. Sebelum Anda mengaktifkan pemisahan baca/tulis untuk instans arsitektur standar dua zona yang memiliki satu node master di zona primary dan satu node replika di zona secondary, Anda harus menambahkan node replika ke zona primary agar berisi dua node. Setelah itu, Anda dapat mengaktifkan pemisahan baca/tulis.
Beberapa skenario, seperti failover ketersediaan tinggi pada node master, memicu sinkronisasi data penuh pada replika baca saja. Selama sinkronisasi penuh, replika baca saja tidak tersedia dan mengembalikan pesan
-LOADING Redis is loading the dataset in memory\r\n.Beberapa perintah baca memiliki aturan pengalihan khusus dalam arsitektur pemisahan baca/tulis. Misalnya, perintah
SCANdialihkan ke node master untuk dieksekusi, sedangkan proxy mendistribusikan perintahHSCAN,SSCAN, danZSCANsecara merata di antara node master dan replika baca saja berdasarkan perhitungan modulo saluran. Untuk daftar lengkap aturan pengalihan, lihat Aturan routing proxy.
Prasyarat
Sebelum memulai, pastikan bahwa:
Instans diterapkan dalam mode cloud-native
Instans merupakan Redis Edisi Open-Source atau Tair (Edisi Perusahaan) instans yang dioptimalkan untuk DRAM atau instans yang dioptimalkan untuk memori persisten
Instans memiliki memori minimal 1 GB
Instans merupakan instans ketersediaan tinggi
Prosedur
Jika Anda belum membuat instans, Anda dapat mengaktifkan pemisahan baca/tulis saat membuat instans.
Jika Anda memiliki instans cloud-native yang sudah ada, Anda dapat langsung mengaktifkan pemisahan baca/tulis.
FAQ
T: Apakah mengaktifkan pemisahan baca/tulis untuk instans arsitektur standar meningkatkan bandwidth keseluruhan?
J: Ya. Setelah Anda mengaktifkan pemisahan baca/tulis, bandwidth total teoretis instans adalah bandwidth spesifikasi instans dikalikan dengan jumlah total node (misalnya, 96 MB/s × 3 node = 288 MB/s). Node proxy tambahan meneruskan sebagian besar permintaan baca ke replika baca saja, yang mengurangi tekanan bandwidth pada node master. Namun, bandwidth aktual dipengaruhi oleh faktor-faktor seperti permintaan bisnis dan klien. Bandwidth aktual mengacu pada hasil pengujian stres.
T: Setelah saya mengaktifkan pemisahan baca/tulis untuk instans arsitektur standar, apakah saya dapat mengubah arsitekturnya menjadi arsitektur kluster?
J: Ya. Anda harus terlebih dahulu menonaktifkan pemisahan baca/tulis lalu mengubah arsitektur instans.
T: Bagaimana cara memeriksa apakah pemisahan baca/tulis telah diaktifkan?
J: Anda dapat membuka halaman Node Management instans untuk memeriksa apakah opsi read/write splitting telah diaktifkan.
T: Mengapa permintaan baca tidak diarahkan ke replika baca saja saya?
J: Dalam arsitektur pemisahan baca/tulis dua zona, zona primary dan secondary memiliki titik akhir yang terpisah. Permintaan baca hanya diarahkan ke node master atau replika baca saja dalam zona yang sama. Jika Anda hanya menggunakan titik akhir untuk zona primary, tidak ada permintaan baca yang diarahkan ke replika baca saja di zona secondary. Untuk mengaktifkan akses berbasis kedekatan lokasi dan penyeimbangan beban, Anda harus secara eksplisit membedakan titik akhir untuk zona primary dan secondary dalam kode aplikasi Anda serta mengarahkan permintaan untuk zona secondary ke titik akhir khususnya.