Topik ini menjelaskan cara menguji dan menganalisis dampak replikasi berantai terhadap kinerja instance dengan menghubungkan Elastic Compute Service (ECS) ke instance set replika ApsaraDB for MongoDB.
Replikasi berantai
Konsep
ApsaraDB for MongoDB mendukung replikasi berantai. Ketika node sekunder dalam instance set replika menyinkronkan data dari node sekunder lainnya, terjadinya replikasi berantai dapat mengurangi beban pada node utama dalam instance. Namun, latensi primer/sekunder yang lebih lama dapat terjadi di berbagai topologi jaringan. Untuk informasi lebih lanjut, lihat Self-Managed Chained Replication.
Dalam replikasi berantai, semua node tidak perlu membentuk rantai tunggal. Sebaliknya, node sekunder dapat memilih node lain selain node utama sebagai sumber sinkronisasi berdasarkan informasi seperti waktu bolak-balik (RTT). Gambar berikut menunjukkan beberapa topologi set replika lima-node yang termasuk dalam replikasi berantai.
Konfigurasikan replikasi berantai
Anda dapat menyesuaikan parameter settings.chainingAllowed di halaman Parameters di konsol ApsaraDB for MongoDB untuk mengaktifkan atau menonaktifkan replikasi berantai. Untuk informasi lebih lanjut tentang cara memodifikasi parameter yang diperlukan, lihat Instance Standalone dan Set Replika.
Dalam beberapa kasus, replikasi berantai dapat menyebabkan latensi sinkronisasi antara node utama dan sekunder. Oleh karena itu, Anda dapat menonaktifkan replikasi berantai untuk mengoptimalkan kinerja sinkronisasi.
Untuk alasan keamanan, Anda tidak memiliki izin untuk menjalankan perintah replSetReconfig pada instance Anda. Anda harus memodifikasi parameter yang diperlukan di konsol ApsaraDB for MongoDB.
Pengujian dampak kinerja instance
Lingkungan pengujian
Buat instance ECS dan instance ApsaraDB for MongoDB. Untuk informasi lebih lanjut, lihat Buat Instance Set Replika dan Buat dan Kelola Instance ECS di Konsol (Versi Ekspres).
Arsitektur instance ApsaraDB for MongoDB: Topologi set replika standar yang terdiri dari node utama, node sekunder, dan node tersembunyi. Anda dapat menambahkan node sekunder dan baca-saja untuk meningkatkan jumlah node dalam instance.
RTT antara instance ECS dan instance ApsaraDB for MongoDB: Rata-rata RTT adalah 0,103 ms ketika kedua instance berada di wilayah dan zona yang sama.
Tabel berikut menjelaskan konfigurasi instance ECS dan instance ApsaraDB for MongoDB yang digunakan dalam pengujian.
Item konfigurasi | ECS Instance | Instance ApsaraDB for MongoDB yang menggunakan disk cloud |
Wilayah dan zona | Beijing Zone H | Beijing Zone H |
Jenis jaringan | Virtual Private Cloud (VPC) | VPC |
Kategori instance | Compute-optimized c6 | spesifikasi khusus |
Tipe instance | ecs.c6.xlarge(4c8g) | ecs.c7.xlarge(4c8g) |
Jenis penyimpanan | ESSD PL0 | ESSD PL1 |
Gambar atau versi mesin | Alibaba Cloud Linux 3.2104 LTS 64-bit | 4.19.91-26.al7.x86_64 |
Versi kernel | N/A | Versi utama: MongoDB 5.0 Versi minor: MongoDB 5.0.30 |
Alat pengujian
Alat Yahoo Cloud Serving Benchmark (YCSB) open-source versi 0.17.0 digunakan dalam pengujian.
YCSB adalah alat Java yang dapat digunakan untuk mengukur kinerja berbagai jenis database. Untuk informasi lebih lanjut tentang cara menginstal dan menggunakan YCSB, lihat YCSB.
Prosedur
Tambahkan daftar putih ke instance ApsaraDB for MongoDB. Masuk ke Konsol ECS. Kemudian, lihat alamat IP privat utama instance ECS di bagian informasi jaringan halaman detail instance dan tambahkan alamat IP tersebut ke daftar putih instance ApsaraDB for MongoDB.
Gunakan alat YCSB untuk memuat data untuk pengujian.
./bin/ycsb.sh load mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=5000000 -p mongodb.url="mongodb://test:****@dds-bp13e84d11****.mongodb.rds.aliyuncs.com:3717/admin" -p table=test -threads 8Parameter:
recordcount: Jumlah data yang dimuat ke instance ApsaraDB for MongoDB.mongodb.url: Titik akhir instance ApsaraDB for MongoDB. Dalam pengujian, akun database adalah test dan database adalah admin. Anda dapat memperoleh titik akhir di bagian Internal Connections - VPC halaman Database Connections di Konsol ApsaraDB for MongoDB.threads: Jumlah thread konkuren di klien.
Lihat hasil pengujian dan informasi pemantauan instance ApsaraDB for MongoDB yang diuji. Di tab Pemantauan Node halaman Monitoring Data, Anda dapat memilih rentang waktu pengujian untuk melihat pemanfaatan CPU, QPS, dan waktu respons rata-rata (RT) untuk node utama. Untuk informasi lebih lanjut, lihat Pemantauan Node (Sebelumnya Pemantauan Dasar).
Hasil pengujian
Parameter
Write Concern: Tingkat jaminan persistensi data, yang menentukan kondisi apa yang harus dipenuhi sebelum operasi tulis dianggap berhasil. Nilai valid:
{w:"majority"}: Nilai default, yang menunjukkan bahwa operasi tulis tidak dianggap berhasil sampai operasi direplikasi ke sebagian besar node dalam instance set replika.{w: 1}: Menunjukkan bahwa operasi tulis hanya dianggap berhasil oleh node utama.
Detail hasil pengujian
Topologi 3-node
Topologi set replika terdiri dari node utama, node sekunder, dan node tersembunyi.
writeConcern = {w:"majority"}
Item | Replikasi berantai diaktifkan | Replikasi berantai dinonaktifkan |
Throughput (OPS) | 5277 | 5241 |
Pemanfaatan CPU | 65% | 65% |
QPS |
|
|
RT rata-rata (ms) |
|
|
writeConcern = {w:1}
Item | Replikasi berantai diaktifkan | Replikasi berantai dinonaktifkan |
Throughput (OPS) | 15075 | 14785 |
Pemanfaatan CPU | 93% | 93% |
QPS |
|
|
RT rata-rata (ms) |
|
|
Topologi 7-node
Topologi set replika terdiri dari node utama, lima node sekunder, dan node tersembunyi.
writeConcern = {w:"majority"}
Item | Replikasi berantai diaktifkan | Replikasi berantai dinonaktifkan |
Throughput (OPS) | 3005 | 4312 |
Pemanfaatan CPU | 56% | 85% |
QPS |
|
|
RT rata-rata (ms) |
|
|
writeConcern = {w:1}
Item | Replikasi berantai diaktifkan | Replikasi berantai dinonaktifkan |
Throughput (OPS) | 14414 | 11492 |
Pemanfaatan CPU | 91% | 93% |
QPS |
|
|
RT rata-rata (ms) |
|
|
Topologi 15-node
Topologi set replika terdiri dari node utama, lima node sekunder, node tersembunyi, dan delapan node baca-saja.
Tujuh node dapat berpartisipasi dalam pemilihan node utama dan delapan node tidak berpartisipasi. Delapan node tersebut adalah node baca-saja.
writeConcern = {w:"majority"}
Item | Replikasi berantai diaktifkan | Replikasi berantai dinonaktifkan |
Throughput (OPS) | 2932 | 3123 |
Pemanfaatan CPU | 58% | 91% |
QPS |
|
|
RT rata-rata (ms) |
|
|
writeConcern = {w:1}
Item | Replikasi berantai diaktifkan | Replikasi berantai dinonaktifkan |
Throughput (OPS) | 14093 | 7500 |
Pemanfaatan CPU | 90% | 94% |
QPS |
|
|
RT rata-rata (ms) |
|
|
Perbandingan performa dan ringkasan
Pengaturan writeConcern menentukan apakah performa penulisan akan menurun jika replikasi berantai dinonaktifkan dan jumlah node tetap.
writeConcern =
{w:1}Untuk instance 3-node, penurunan performa akibat menonaktifkan replikasi berantai dapat diabaikan.
Untuk instance 7-node, penurunan performa akibat menonaktifkan replikasi berantai sekitar 20,3%.
Untuk instance 15-node, penurunan performa akibat menonaktifkan replikasi berantai mencapai 46,8%. Selain itu, pemanfaatan CPU pada node utama meningkat secara signifikan setelah replikasi berantai dinonaktifkan.
writeConcern =
{w:"majority"}Untuk instance 3-node, penurunan performa akibat menonaktifkan replikasi berantai dapat diabaikan.
Untuk instance 7-node dan 15-node, performa meningkat sekitar 6,5% hingga 43,5% setelah replikasi berantai dinonaktifkan.
Penyebab peningkatan performa: Setelah replikasi berantai dinonaktifkan, tautan sinkronisasi keseluruhan dari semua node dipersingkat dalam instance set replika. Dengan cara ini, kondisi mayoritas lebih mudah tercapai dan latensi penulisan tunggal berkurang.
Dampak dari jumlah node non-voting: Seiring bertambahnya jumlah node non-voting (terbatas hingga 7 node), peningkatan performa akibat menonaktifkan replikasi berantai secara bertahap tidak sesuai harapan, yang disebabkan oleh beban sinkronisasi utama/sekunder yang tinggi pada node utama.
Performa penulisan menurun seiring bertambahnya jumlah node dengan pengaturan chainingAllowed dan writeConcern yang sama. Performa menunjukkan tren penurunan yang lebih signifikan setelah replikasi berantai diterapkan.
Secara default, chainingAllowed diatur ke true dan writeConcern diatur ke
{w:"majority"}. Jika Anda menggunakan pengaturan default, performa penulisan tidak mengalami penurunan signifikan ketika Anda mengubah jumlah node dari 7 menjadi 15. Hal ini disebabkan oleh fakta bahwa instance set replika dapat berisi hingga tujuh node voting, dan kondisi mayoritas tetap tidak berubah.Tidak peduli apakah replikasi berantai dinonaktifkan atau tidak, performa dengan writeConcern diatur ke
{w:1}jauh lebih baik daripada dengan writeConcern diatur ke{w:"majority"}dan sesuai dengan desain writeConcern.Ketika pengaturan writeConcern tetap, seiring bertambahnya jumlah node, pemanfaatan CPU pada node utama mengalami peningkatan yang lebih signifikan selama menonaktifkan replikasi berantai dibandingkan saat mengaktifkannya.
Praktik terbaik
Ketika jumlah node sedikit, Anda dapat mengaktifkan atau menonaktifkan replikasi berantai berdasarkan kebutuhan bisnis Anda. Kinerja keseluruhan instance tidak terpengaruh, dan pemanfaatan CPU tidak berubah secara signifikan.
Ketika jumlah node sangat banyak:
Jika writeConcern diatur ke
{w:1}, kami sarankan Anda mengaktifkan replikasi berantai.Jika writeConcern diatur ke
{w: "majority" }, seimbangkan beban node utama (seperti pemanfaatan CPU) dan kinerja instance. Jika replikasi berantai dinonaktifkan, kinerja penulisan akan meningkat. Namun, beban pada node utama meningkat secara signifikan.























