Création d’un cluster Milvus basé sur JuiceFS
Les collaborations entre les communautés open source sont quelque chose de magique. Non seulement des bénévoles passionnés, intelligents et créatifs maintiennent les solutions open source innovantes, mais ils œuvrent également à réunir différents outils de manières intéressantes et utiles. Milvus, la base de données vectorielle la plus populaire au monde, et JuiceFS, un système de fichiers partagé conçu pour les environnements cloud-native, ont été réunis dans cet esprit par leurs communautés open source respectives. Cet article explique ce qu’est JuiceFS, comment créer un cluster Milvus basé sur le stockage de fichiers partagé JuiceFS, et les performances auxquelles les utilisateurs peuvent s’attendre en utilisant cette solution.
Qu’est-ce que JuiceFS ?
JuiceFS est un système de fichiers POSIX distribué open source et haute performance, qui peut être construit par-dessus Redis et S3. Il a été conçu pour les environnements cloud-native et prend en charge la gestion, l’analyse, l’archivage et la sauvegarde de données de tout type. JuiceFS est couramment utilisé pour résoudre des défis liés au big data, créer des applications d’intelligence artificielle (IA) et collecter des journaux. Le système prend également en charge le partage de données entre plusieurs clients et peut être utilisé directement comme stockage partagé dans Milvus.
Une fois les données, ainsi que leurs métadonnées correspondantes, persistées respectivement dans le stockage d’objets et Redis, JuiceFS sert de middleware sans état. Le partage de données est réalisé en permettant à différentes applications de s’interconnecter de manière transparente via une interface de système de fichiers standard. JuiceFS s’appuie sur Redis, un magasin de données en mémoire open source, pour le stockage des métadonnées. Redis est utilisé car il garantit l’atomicité et fournit des opérations de métadonnées haute performance. Toutes les données sont stockées dans le stockage d’objets via le client JuiceFS. Le schéma d’architecture est le suivant :
Architecture globale de JuiceFS.
Créer un cluster Milvus basé sur JuiceFS
Un cluster Milvus construit avec JuiceFS (voir le schéma d’architecture ci-dessous) fonctionne en répartissant les requêtes en amont à l’aide de Mishards, un middleware de partitionnement de cluster, afin de transmettre les requêtes en cascade à ses sous-modules. Lors de l’insertion de données, Mishards attribue les requêtes en amont au nœud d’écriture Milvus, qui stocke les données nouvellement insérées dans JuiceFS. Lors de la lecture de données, Mishards charge les données depuis JuiceFS via un nœud de lecture Milvus en mémoire pour traitement, puis collecte et renvoie les résultats des sous-services en amont.
Architecture du cluster Milvus construit avec JuiceFS.
Étape 1 : Lancer le service MySQL
Lancez le service MySQL sur n’importe quel nœud du cluster. Pour plus de détails, consultez Gérer les métadonnées avec MySQL.
Étape 2 : Créer un système de fichiers JuiceFS
À des fins de démonstration, le programme binaire JuiceFS précompilé est utilisé. Téléchargez le package d’installation correct pour votre système et suivez le Guide de démarrage rapide de JuiceFS pour obtenir des instructions d’installation détaillées. Pour créer un système de fichiers JuiceFS, configurez d’abord une base de données Redis pour le stockage des métadonnées. Il est recommandé, pour les déploiements sur cloud public, d’héberger le service Redis sur le même cloud que l’application. Configurez en outre le stockage d’objets pour JuiceFS. Dans cet exemple, Azure Blob Storage est utilisé ; cependant, JuiceFS prend en charge presque tous les services d’objets. Sélectionnez le service de stockage d’objets qui correspond le mieux aux exigences de votre scénario.
Après avoir configuré le service Redis et le stockage d’objets, formatez un nouveau système de fichiers et montez JuiceFS dans le répertoire local :
1 $ export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX;EndpointSuffix=core.windows.net"
2 $ ./juicefs format \
3 --storage wasb \
4 --bucket https://<container> \
5 ... \
6 localhost test #format
7 $ ./juicefs mount -d localhost ~/jfs #mount
8
Si le serveur Redis ne s’exécute pas localement, remplacez localhost par l’adresse suivante :
redis://<user:password>@host:6379/1.
Lorsque l’installation réussit, JuiceFS renvoie la page de stockage partagé /root/jfs.
Installation réussie.
Étape 3 : Démarrer Milvus
Tous les nœuds du cluster doivent avoir Milvus installé, et chaque nœud Milvus doit être configuré avec une autorisation de lecture ou d’écriture. Un seul nœud Milvus peut être configuré comme nœud d’écriture, et les autres doivent être des nœuds de lecture. Tout d’abord, définissez les paramètres des sections cluster et general dans le fichier de configuration système Milvus server_config.yaml :
Section cluster
| Paramètre | Description | Configuration |
|---|---|---|
enable | Activer ou non le mode cluster | true |
role | Rôle de déploiement Milvus | rw/ro |
Section general
# meta_uri is the URI for metadata storage, using MySQL (for Milvus Cluster). Format: mysql://<username:password>@host:port/database
general:
timezone: UTC+8
meta_uri: mysql://root:milvusroot@host:3306/milvus
Pendant l’installation, le chemin de stockage partagé JuiceFS configuré est défini sur /root/jfs/milvus/db.
1 sudo docker run -d --name milvus_gpu_1.0.0 --gpus all \
2 -p 19530:19530 \
3 -p 19121:19121 \
4 -v /root/jfs/milvus/db:/var/lib/milvus/db \ #/root/jfs/milvus/db is the shared storage path
5 -v /home/$USER/milvus/conf:/var/lib/milvus/conf \
6 -v /home/$USER/milvus/logs:/var/lib/milvus/logs \
7 -v /home/$USER/milvus/wal:/var/lib/milvus/wal \
8 milvusdb/milvus:1.0.0-gpu-d030521-1ea92e
9
Une fois l’installation terminée, démarrez Milvus et confirmez qu’il est lancé correctement. Enfin, démarrez le service Mishards sur n’importe lequel des nœuds du cluster. L’image ci-dessous montre un lancement réussi de Mishards. Pour plus d’informations, consultez le tutoriel GitHub.
Lancement réussi de Mishards.
Benchmarks de performance
Les solutions de stockage partagé sont généralement mises en œuvre par des systèmes de stockage en réseau (NAS). Les types de systèmes NAS couramment utilisés incluent Network File System (NFS) et Server Message Block (SMB). Les plateformes de cloud public fournissent généralement des services de stockage gérés compatibles avec ces protocoles, comme Amazon Elastic File System (EFS).
Contrairement aux systèmes NAS traditionnels, JuiceFS est implémenté sur la base de Filesystem in Userspace (FUSE), où toutes les lectures et écritures de données ont lieu directement côté application, réduisant davantage la latence d’accès. JuiceFS possède également des fonctionnalités uniques introuvables dans d’autres systèmes NAS, telles que la compression des données et la mise en cache.
Les tests de benchmark révèlent que JuiceFS offre des avantages majeurs par rapport à EFS. Dans le benchmark des métadonnées (Figure 1), JuiceFS atteint un nombre d’opérations d’E/S par seconde (IOPS) jusqu’à dix fois supérieur à celui d’EFS. De plus, le benchmark de débit d’E/S (Figure 2) montre que JuiceFS surpasse EFS dans les scénarios à tâche unique comme à tâches multiples.
Figure 1. Benchmark des métadonnées.
Figure 2. Benchmark de lecture/écriture séquentielle.
De plus, les tests de benchmark montrent que le temps de récupération de la première requête, ou le temps nécessaire pour charger les données nouvellement insérées du disque vers la mémoire, pour le cluster Milvus basé sur JuiceFS n’est que de 0,032 seconde en moyenne, ce qui indique que les données sont chargées du disque vers la mémoire presque instantanément. Pour ce test, le temps de récupération de la première requête est mesuré à l’aide d’un million de lignes de données vectorielles à 128 dimensions insérées par lots de 100 k à des intervalles de 1 à 8 secondes.
JuiceFS est un système de stockage de fichiers partagé stable et fiable, et le cluster Milvus construit sur JuiceFS offre à la fois de hautes performances et une capacité de stockage flexible.
En savoir plus sur Milvus
Milvus est un outil puissant capable d’alimenter un vaste éventail d’applications d’intelligence artificielle et de recherche de similarité vectorielle. Pour en savoir plus sur le projet, consultez les ressources suivantes :
- Lisez notre blog.
- Interagissez avec notre communauté open source sur Slack.
- Utilisez ou contribuez à la base de données vectorielle la plus populaire au monde sur GitHub.
- Testez et déployez rapidement des applications d’IA avec notre nouveau bootcamp.
Biographie de Changjian Gao.
Biographie de Jingjing Jia.
Continuer à lire

Smarter Autoscaling in Zilliz Cloud: Always Optimized for Every Workload
With the latest upgrade, Zilliz Cloud introduces smarter autoscaling—a fully automated, more streamlined, elastic resource management system.

Our Journey to 35K+ GitHub Stars: The Real Story of Building Milvus from Scratch
Join us in celebrating Milvus, the vector database that hit 35.5K stars on GitHub. Discover our story and how we’re making AI solutions easier for developers.

Building RAG Pipelines for Real-Time Data with Cloudera and Milvus
explore how Cloudera can be integrated with Milvus to effectively implement some of the key functionalities of RAG pipelines.



