Untuk mengatasi bottleneck performa write pada arsitektur satu-write-multi-read, PolarDB for MySQL meluncurkan Multi-master Cluster (Limitless). Kluster ini meningkatkan arsitektur dari satu write dan multi-read menjadi multi-write dan multi-read melalui beberapa node primary. Solusi ini terutama dirancang untuk skenario aplikasi dengan konkurensi read/write tinggi seperti SaaS multi-tenancy, gaming, dan e-commerce.
Product architecture

Semua file data kluster disimpan dalam shared storage (PolarStore). Setiap node read/write (RW) berbagi file data di penyimpanan dasar (PolarStore) melalui sistem file terdistribusi (PolarFileSystem). Anda dapat mengakses seluruh kluster melalui cluster endpoint, dan database proxy secara otomatis meneruskan pernyataan SQL ke node RW yang tepat.
Keunggulan dan kemampuan inti
Horizontal write scaling in seconds
Database atau tabel yang berbeda dapat melakukan write secara konkuren pada node komputasi yang berbeda, dan hingga 63 node dapat menulis data secara bersamaan. Database yang berbeda dapat dijadwalkan secara dinamis ke node komputasi berbeda dalam hitungan detik, sehingga kemampuan konkurensi read/write secara keseluruhan meningkat signifikan.
Backup timbal balik multi-master (tidak memerlukan node standby)
Jika node primary mengalami kegagalan, beban kerja dapat dialihkan ke node primary lain dengan traffic rendah dalam hitungan detik. Selain itu, karena tidak ada sumber daya idle tambahan yang dicadangkan untuk hot standby, biaya berkurang hingga separuhnya.
Global Read-Only Node
Anda dapat membaca data dari semua node write pada global read-only node, sehingga memudahkan menjalankan kueri agregasi. Untuk informasi lebih lanjut, lihat Global read-only nodes.
Skenario
Multi-master Cluster (Limitless) Edition terutama dirancang untuk skenario aplikasi dengan konkurensi read/write tinggi seperti SaaS multi-tenancy, gaming, dan e-commerce.
Skenario SaaS multi-tenancy: memenuhi persyaratan performa konkurensi tinggi dan mencapai load balancing antar tenant
Karakteristik skenario: Jumlah database tenant berubah dengan cepat dan beban kerja berfluktuasi secara signifikan. Sumber daya database perlu sering dialokasikan ulang antar instans berbeda untuk memberikan pengalaman pengguna terbaik.
Solusi: Multi-master Cluster (Limitless) Edition dapat memindahkan database tenant antar node RW berbeda dalam hitungan detik, atau menambahkan node RW baru dalam hitungan detik untuk menangani lonjakan traffic, sehingga mencapai load balancing.
Skenario gaming world-server dan e-commerce: scaling in/out dalam hitungan menit untuk menyesuaikan permintaan bisnis yang tumbuh pesat
Karakteristik skenario: Skenario gaming world-server dan e-commerce umumnya menggunakan solusi sharding database dan tabel berbasis middleware atau bisnis. Selama pembaruan versi dan acara penjualan besar, kapasitas kluster sering kali perlu diperluas beberapa kali lipat dengan cepat, lalu dikurangi kembali setelah acara selesai. Namun, scaling in/out kluster tradisional memerlukan migrasi data, yang sangat kompleks.
Solusi: Dengan fitur scale-out horizontal dalam hitungan detik dan routing transparan dari Multi-master Cluster (Limitless) Edition, dikombinasikan dengan sharding database dan tabel berbasis middleware atau bisnis, scale-out transparan dalam hitungan detik dapat dicapai, mempersingkat waktu scale-out dari hitungan hari menjadi menit.
Skenario gaming server-split: performa dan skalabilitas lebih baik, scaling in/out fleksibel
Karakteristik skenario: Selama masa pertumbuhan game, beban database berat dan terus meningkat. Biasanya, database terus ditambahkan selama periode pertumbuhan, yang juga meningkatkan beban pada node RW. Selama masa penurunan, beban database berangsur-angsur berkurang dan database terus digabung, sehingga beban pada node RW juga menunjukkan tren penurunan.
Solusi: Selama masa pertumbuhan game, beberapa database dapat dengan cepat dipindahkan ke node RW baru untuk mencapai load balancing. Selama masa penurunan, database dapat dengan cepat dikonsolidasikan ke sejumlah kecil node RW untuk mengurangi biaya operasional secara cepat.
Lingkup penerapan
Engine database adalah MySQL 8.0.
Konversi langsung dari Cluster Edition ke Multi-master Cluster (Limitless) saat ini tidak didukung. Untuk upgrade seri produk, lihat Major version upgrades.
Perbaikan performa
Hasil pengujian menunjukkan bahwa seiring database dalam kluster dialihkan ke lebih banyak node primary (node RW), kemampuan konkurensi read/write keseluruhan kluster meningkat hampir secara linear. Berikut contoh pengujian:
Latar belakang pengujian: Kluster berisi delapan database dan delapan node RW.
Prosedur pengujian: Awalnya, kedelapan database dimuat pada satu node RW, lalu dilakukan stress test yang sama secara sinkron pada semua database. Selama stress test, kedelapan database secara bertahap dialihkan secara merata ke dua node RW, empat node RW, dan delapan node RW, serta diamati tren perubahan performa keseluruhan kluster.
Tren perubahan performa sebagai berikut, dengan QPS sebagai contoh:

Seperti yang ditunjukkan pada gambar di atas, seiring database dialihkan ke lebih banyak node RW, kemampuan konkurensi read/write keseluruhan kluster meningkat secara signifikan, menunjukkan peningkatan hampir linear.
Spesifikasi node dan harga
Spesifikasi: Didukung Dedicated dan General-purpose. Untuk spesifikasi lengkap, lihat Compute node specifications for Enterprise Edition.
Harga: Untuk informasi lebih lanjut, lihat Compute nodes.
Memulai
Konfigurasikan informasi dasar untuk kluster, seperti membuat akun database, mengonfigurasi daftar putih untuk kluster, dan menyambungkan ke database.
Create a database. Multi-master Cluster (Limitless) membatasi data setiap database atau objek data hanya dapat ditulis oleh satu node. Saat membuat database, Anda dapat menentukan node RW tertentu, atau mengatur nilai parameter
loose_innodb_mm_default_master_idmenjadi 0 agar sistem secara acak memilih node RW untuk membuat database.Kueri data menggunakan pernyataan
SELECT. Saat mengkueri data, Anda tidak perlu menentukan node RW. Database proxy secara otomatis memilih node RW yang tepat untuk mengeksekusi kueri.
Untuk informasi lebih lanjut, lihat Usage.