Bagaimana Milvus Menyeimbangkan Beban Kueri di Seluruh Node?
Gambar Sampul Binlog
Oleh Xi Ge.
Dalam artikel blog sebelumnya, kami telah memperkenalkan fungsi Penghapusan, Bitset, dan Pemadatan di Milvus 2.0 secara berturut-turut. Sebagai penutup dari seri ini, kami ingin berbagi desain di balik Load Balance, sebuah fungsi penting dalam cluster terdistribusi Milvus.
Implementasi
Ketika jumlah dan ukuran segmen yang disangga di node kueri berbeda, kinerja pencarian di seluruh node kueri juga dapat bervariasi. Kasus terburuk dapat terjadi ketika beberapa node kueri kelelahan mencari data dalam jumlah besar, tetapi node kueri yang baru dibuat tetap menganggur karena tidak ada segmen yang didistribusikan kepada mereka, menyebabkan pemborosan sumber daya CPU yang sangat besar dan penurunan besar dalam kinerja pencarian.
Untuk menghindari keadaan seperti itu, koordinator kueri (query coord) diprogram untuk mendistribusikan segmen secara merata ke setiap node kueri sesuai dengan penggunaan RAM node. Oleh karena itu, sumber daya CPU dikonsumsi secara merata di seluruh node, sehingga secara signifikan meningkatkan kinerja pencarian.
Memicu keseimbangan beban otomatis
Menurut nilai default dari konfigurasi queryCoord.balanceIntervalSeconds
, koordinat kueri memeriksa penggunaan RAM (dalam persentase) dari semua node kueri setiap 60 detik. Jika salah satu dari kondisi berikut ini terpenuhi, koordinat kueri mulai menyeimbangkan beban kueri di seluruh node kueri:
- Penggunaan RAM dari node kueri mana pun dalam klaster lebih besar dari
queryCoord.overloadedMemoryThresholdPercentage
(default: 90); - Atau nilai absolut dari perbedaan penggunaan RAM dari dua node kueri lebih besar dari
queryCoord.memoryUsageMaxDifferencePercentage
(default: 30).
Setelah segmen ditransfer dari node kueri sumber ke node kueri tujuan, segmen tersebut juga harus memenuhi kedua kondisi berikut:
- Penggunaan RAM node kueri tujuan tidak lebih besar dari
queryCoord.overloadedMemoryThresholdPercentage
(default: 90); - Nilai absolut dari perbedaan penggunaan RAM node kueri sumber dan tujuan setelah penyeimbangan beban lebih kecil daripada sebelum penyeimbangan beban.
Dengan kondisi di atas terpenuhi, koordinat kueri melanjutkan untuk menyeimbangkan beban kueri di seluruh node.
Keseimbangan beban
Ketika keseimbangan beban dipicu, koordinat kueri pertama-tama memuat segmen target ke node kueri tujuan. Kedua node kueri mengembalikan hasil pencarian dari segmen target pada setiap permintaan pencarian pada saat ini untuk menjamin kelengkapan hasil.
Setelah node kueri tujuan berhasil memuat segmen target, koordinat kueri menerbitkan sealedSegmentChangeInfo
ke Saluran Kueri. Seperti yang ditunjukkan di bawah ini, onlineNodeID
dan onlineSegmentIDs
menunjukkan simpul kueri yang memuat segmen dan segmen yang dimuat masing-masing, dan offlineNodeID
dan offlineSegmentIDs
menunjukkan simpul kueri yang perlu melepaskan segmen dan segmen yang akan dilepaskan masing-masing.
sealedSegmentChangeInfo
Setelah menerima sealedSegmentChangeInfo
, node kueri sumber kemudian melepaskan segmen target.
Alur Kerja Keseimbangan Beban
Seluruh proses berhasil ketika node kueri sumber melepaskan segmen target. Dengan menyelesaikannya, beban kueri diatur seimbang di seluruh node kueri, yang berarti penggunaan RAM semua node kueri tidak lebih besar dari queryCoord.overloadedMemoryThresholdPercentage
, dan nilai absolut dari perbedaan penggunaan RAM node kueri sumber dan tujuan setelah penyeimbangan beban lebih kecil daripada sebelum penyeimbangan beban.
Apa selanjutnya?
Dalam blog seri fitur baru 2.0, kami bertujuan untuk menjelaskan desain fitur-fitur baru. Baca lebih lanjut dalam seri blog ini!
- Bagaimana Milvus Menghapus Data Streaming dalam Cluster Terdistribusi
- Bagaimana Cara Memadatkan Data di Milvus?
- Bagaimana Milvus Menyeimbangkan Beban Kueri di Seluruh Node?
- Bagaimana Bitset Mengaktifkan Keserbagunaan Pencarian Kesamaan Vektor
Ini adalah bagian akhir dari seri blog fitur baru Milvus 2.0. Setelah seri ini, kami merencanakan seri baru Milvus Deep Dive, yang memperkenalkan arsitektur dasar Milvus 2.0. Mohon untuk terus mengikuti perkembangannya.
- Implementasi
- Keseimbangan beban
- Apa selanjutnya?
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