Mengoptimalkan Komunikasi Data: Milvus Merangkul Pesan NATS
Dalam permadani pemrosesan data yang rumit, komunikasi tanpa batas adalah benang merah yang mengikat operasi bersama. Milvus, basis data vektor sumber terbuka yang menjadi pelopor, telah memulai perjalanan transformatif dengan fitur terbarunya: Integrasi pesan NATS. Dalam artikel blog yang komprehensif ini, kami akan mengungkap seluk-beluk integrasi ini, mengeksplorasi fitur-fitur intinya, proses penyiapan, manfaat migrasi, dan bagaimana integrasi ini dibandingkan dengan pendahulunya, RocksMQ.
Memahami peran antrean pesan di Milvus
Dalam arsitektur cloud-native Milvus, antrean pesan, atau Log Broker, memiliki peran yang sangat penting. Ini adalah tulang punggung yang memastikan aliran data yang persisten, sinkronisasi, pemberitahuan peristiwa, dan integritas data selama pemulihan sistem. Secara tradisional, RocksMQ adalah pilihan yang paling mudah dalam mode Milvus Standalone, terutama jika dibandingkan dengan Pulsar dan Kafka, tetapi keterbatasannya menjadi jelas dengan data yang luas dan skenario yang kompleks.
Milvus 2.3 memperkenalkan NATS, sebuah implementasi MQ single-node, yang mendefinisikan ulang cara mengelola aliran data. Tidak seperti pendahulunya, NATS membebaskan pengguna Milvus dari kendala kinerja, memberikan pengalaman yang mulus dalam menangani volume data yang besar.
Apa itu NATS?
NATS adalah teknologi konektivitas sistem terdistribusi yang diimplementasikan di Go. NATS mendukung berbagai mode komunikasi seperti Request-Reply dan Publish-Subscribe di seluruh sistem, menyediakan persistensi data melalui JetStream, dan menawarkan kemampuan terdistribusi melalui RAFT bawaan. Anda dapat merujuk ke situs web resmi NATS untuk pemahaman yang lebih rinci tentang NATS.
Dalam mode Milvus 2.3 Standalone, NATS, JetStream, dan PubSub menyediakan kemampuan MQ yang kuat bagi Milvus.
Mengaktifkan NATS
Milvus 2.3 menawarkan opsi kontrol baru, mq.type
, yang memungkinkan pengguna untuk menentukan jenis MQ yang ingin mereka gunakan. Untuk mengaktifkan NATS, setel mq.type=natsmq
. Jika Anda melihat log yang mirip dengan log di bawah ini setelah Anda memulai instans Milvus, Anda telah berhasil mengaktifkan NATS sebagai antrean pesan.
[INFO] [dependency/factory.go:83] ["try to init mq"] [standalone=true] [mqType=natsmq]
Mengonfigurasi NATS untuk Milvus
Opsi kustomisasi NATS termasuk menentukan port pendengaran, direktori penyimpanan JetStream, ukuran muatan maksimum, dan batas waktu inisialisasi. Menyempurnakan pengaturan ini akan memastikan kinerja dan keandalan yang optimal.
natsmq:
server: # server side configuration for natsmq.
port: 4222 # 4222 by default, Port for nats server listening.
storeDir: /var/lib/milvus/nats # /var/lib/milvus/nats by default, directory to use for JetStream storage of nats.
maxFileStore: 17179869184 # (B) 16GB by default, Maximum size of the 'file' storage.
maxPayload: 8388608 # (B) 8MB by default, Maximum number of bytes in a message payload.
maxPending: 67108864 # (B) 64MB by default, Maximum number of bytes buffered for a connection Applies to client connections.
initializeTimeout: 4000 # (ms) 4s by default, waiting for initialization of natsmq finished.
monitor:
trace: false # false by default, If true enable protocol trace log messages.
debug: false # false by default, If true enable debug log messages.
logTime: true # true by default, If set to false, log without timestamps.
logFile: /tmp/milvus/logs/nats.log # /tmp/milvus/logs/nats.log by default, Log file path relative to .. of milvus binary if use relative path.
logSizeLimit: 536870912 # (B) 512MB by default, Size in bytes after the log file rolls over to a new one.
retention:
maxAge: 4320 # (min) 3 days by default, Maximum age of any message in the P-channel.
maxBytes: # (B) None by default, How many bytes the single P-channel may contain. Removing oldest messages if the P-channel exceeds this size.
maxMsgs: # None by default, How many message the single P-channel may contain. Removing oldest messages if the P-channel exceeds this limit.
Catatan:
Anda harus menentukan
server.port
untuk mendengarkan server NATS. Jika terjadi konflik port, Milvus tidak dapat memulai. Aturserver.port=-1
untuk memilih port secara acak.storeDir
menentukan direktori untuk penyimpanan JetStream. Kami menyarankan untuk menyimpan direktori di solid-state drive (SSD) berkinerja tinggi untuk hasil baca/tulis yang lebih baik dari Milvus.maxFileStore
menetapkan batas atas ukuran penyimpanan JetStream. Melebihi batas ini akan mencegah penulisan data lebih lanjut.maxPayload
membatasi ukuran pesan individual. Anda harus menjaganya tetap di atas 5MB untuk menghindari penolakan penulisan.initializeTimeout
mengontrol batas waktu pengaktifan server NATS.monitor
mengonfigurasi log independen NATS.retention
mengontrol mekanisme penyimpanan pesan NATS.
Untuk informasi lebih lanjut, lihat dokumentasi resmi NATS.
Migrasi dari RocksMQ ke NATS
Migrasi dari RocksMQ ke NATS merupakan proses yang mulus yang melibatkan langkah-langkah seperti menghentikan operasi penulisan, pembilasan data, memodifikasi konfigurasi, dan memverifikasi migrasi melalui log Milvus.
Sebelum memulai migrasi, hentikan semua operasi tulis di Milvus.
Jalankan operasi
FlushALL
pada Milvus dan tunggu hingga selesai. Langkah ini memastikan bahwa semua data yang tertunda telah di-flush dan sistem siap untuk dimatikan.Ubahlah file konfigurasi Milvus dengan mengatur
mq.type=natsmq
dan sesuaikan opsi-opsi yang relevan pada bagiannatsmq
.Jalankan Milvus 2.3.
Cadangkan dan bersihkan data asli yang tersimpan dalam direktori
rocksmq.path
. (Opsional)
NATS vs RocksMQ: Adu Performa
Pengujian Performa Pub/Sub
Platform Pengujian: Chip / Memori M1 Pro: 16GB
Skenario Pengujian: Mengirimkan dan menerbitkan paket data acak ke sebuah topik secara berulang-ulang sampai hasil terakhir yang diterbitkan diterima.
Hasil:
Untuk paket data yang lebih kecil (< 64kb), RocksMQ mengungguli NATS dalam hal memori, CPU, dan kecepatan respons.
Untuk paket data yang lebih besar (> 64kb), NATS mengungguli RocksMQ, menawarkan waktu respons yang jauh lebih cepat.
Jenis Pengujian | MQ | jumlah operasi | biaya per operasi | Biaya memori | Total Waktu CPU | Biaya penyimpanan |
---|---|---|---|---|---|---|
5MB * 100 Pub / Sub | NATS | 50 | 1.650328186 s/op | 4,29 GB | 85.58 | 25G |
5MB * 100 Pub/Sub | RocksMQ | 50 | 2.475595131 s/op | 1,18 GB | 81.42 | 19G |
1MB * 500 Pub/Sub | NATS | 50 | 2.248722593 s/op | 2,60 GB | 96.50 | 25G |
1MB * 500 Pub/Sub | RocksMQ | 50 | 2.554614279 s/op | 614.9 MB | 80.19 | 19G |
64KB*10000 Pub/Sub | NATS | 50 | 2.133345262 s/op | 3,29 GB | 97.59 | 31G |
64KB*10000 Pub/Sub | RocksMQ | 50 | 3.253778195 s/op | 331.2 MB | 134.6 | 24G |
1KB*50000 Pub/Sub | NATS | 50 | 2.629391004 s/op | 635.1 MB | 179.67 | 2.6G |
1KB * 50000 Pub/Sub | RocksMQ | 50 | 0.897638581 s/op | 232.3 MB | 60.42 | 521M |
Tabel 1: Hasil pengujian kinerja Pub/Sub
Pengujian Integrasi Milvus
Ukuran data: 100M
Hasil: Dalam pengujian ekstensif dengan set data 100 juta vektor, NATS menampilkan pencarian vektor dan latensi kueri yang lebih rendah.
Metrik | RocksMQ (ms) | NATS (ms) |
---|---|---|
Latensi pencarian vektor rata-rata | 23.55 | 20.17 |
Permintaan pencarian vektor per detik (RPS) | 2.95 | 3.07 |
Latensi kueri rata-rata | 7.2 | 6.74 |
Permintaan kueri per detik (RPS) | 1.47 | 1.54 |
Tabel 2: Hasil pengujian integrasi Milvus dengan dataset 100 juta
Dataset: <100M
Hasil Untuk dataset yang lebih kecil dari 100 juta, NATS dan RocksMQ menunjukkan performa yang serupa.
Kesimpulan: Memberdayakan Milvus dengan pesan NATS
Integrasi NATS dalam Milvus menandai langkah yang signifikan dalam pemrosesan data. Baik untuk mempelajari analitik waktu nyata, aplikasi pembelajaran mesin, atau usaha intensif data apa pun, NATS memberdayakan proyek Anda dengan efisiensi, keandalan, dan kecepatan. Seiring perkembangan lanskap data, memiliki sistem perpesanan yang kuat seperti NATS dalam Milvus memastikan komunikasi data yang lancar, andal, dan berkinerja tinggi.
- Memahami peran antrean pesan di Milvus
- Apa itu NATS?
- Mengaktifkan NATS
- Mengonfigurasi NATS untuk Milvus
- Migrasi dari RocksMQ ke NATS
- NATS vs RocksMQ: Adu Performa
- Kesimpulan: Memberdayakan Milvus dengan pesan NATS
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word