Creación de un clúster de Milvus basado en JuiceFS
Las colaboraciones entre comunidades de código abierto son algo mágico. Los voluntarios apasionados, inteligentes y creativos no solo mantienen innovadoras las soluciones de código abierto, sino que también trabajan para unir diferentes herramientas de formas interesantes y útiles. Milvus, la base de datos vectorial más popular del mundo, y JuiceFS, un sistema de archivos compartido diseñado para entornos nativos de la nube, fueron unidos con este espíritu por sus respectivas comunidades de código abierto. Este artículo explica qué es JuiceFS, cómo crear un clúster de Milvus basado en el almacenamiento de archivos compartido de JuiceFS y el rendimiento que los usuarios pueden esperar al usar esta solución.
¿Qué es JuiceFS?
JuiceFS es un sistema de archivos POSIX distribuido, de alto rendimiento y de código abierto, que puede construirse sobre Redis y S3. Fue diseñado para entornos nativos de la nube y admite la gestión, el análisis, el archivado y la copia de seguridad de datos de cualquier tipo. JuiceFS se utiliza comúnmente para resolver desafíos de big data, crear aplicaciones de inteligencia artificial (IA) y recopilar registros. El sistema también admite el intercambio de datos entre múltiples clientes y puede usarse directamente como almacenamiento compartido en Milvus.
Después de que los datos, y sus metadatos correspondientes, se persisten en el almacenamiento de objetos y Redis respectivamente, JuiceFS actúa como middleware sin estado. El intercambio de datos se realiza permitiendo que diferentes aplicaciones se conecten entre sí sin problemas a través de una interfaz estándar de sistema de archivos. JuiceFS se basa en Redis, un almacén de datos en memoria de código abierto, para el almacenamiento de metadatos. Redis se utiliza porque garantiza la atomicidad y proporciona operaciones de metadatos de alto rendimiento. Todos los datos se almacenan en el almacenamiento de objetos a través del cliente de JuiceFS. El diagrama de arquitectura es el siguiente:
Arquitectura general de JuiceFS.
Crear un clúster de Milvus basado en JuiceFS
Un clúster de Milvus creado con JuiceFS (véase el diagrama de arquitectura a continuación) funciona dividiendo las solicitudes ascendentes mediante Mishards, un middleware de fragmentación de clústeres, para encadenar las solicitudes hacia sus submódulos. Al insertar datos, Mishards asigna las solicitudes ascendentes al nodo de escritura de Milvus, que almacena los datos recién insertados en JuiceFS. Al leer datos, Mishards carga los datos desde JuiceFS a través de un nodo de lectura de Milvus hacia la memoria para su procesamiento, luego recopila y devuelve resultados de los subservicios ascendentes.
Arquitectura del clúster de Milvus creado con JuiceFS.
Paso 1: Iniciar el servicio MySQL
Inicie el servicio MySQL en cualquier nodo del clúster. Para obtener más información, consulte Administrar metadatos con MySQL.
Paso 2: Crear un sistema de archivos JuiceFS
Con fines de demostración, se utiliza el programa binario precompilado JuiceFS. Descargue el paquete de instalación correcto para su sistema y siga la Guía de inicio rápido de JuiceFS para obtener instrucciones detalladas de instalación. Para crear un sistema de archivos JuiceFS, primero configure una base de datos Redis para el almacenamiento de metadatos. Se recomienda que, para implementaciones en la nube pública, aloje el servicio Redis en la misma nube que la aplicación. Además, configure el almacenamiento de objetos para JuiceFS. En este ejemplo, se utiliza Azure Blob Storage; sin embargo, JuiceFS admite casi todos los servicios de objetos. Seleccione el servicio de almacenamiento de objetos que mejor se adapte a las necesidades de su escenario.
Después de configurar el servicio Redis y el almacenamiento de objetos, formatee un nuevo sistema de archivos y monte JuiceFS en el directorio 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 el servidor Redis no se está ejecutando localmente, sustituya localhost por la siguiente dirección:
redis://<user:password>@host:6379/1.
Cuando la instalación se realiza correctamente, JuiceFS devuelve la página de almacenamiento compartido /root/jfs.
Instalación correcta.
Paso 3: Iniciar Milvus
Todos los nodos del clúster deben tener Milvus instalado, y cada nodo de Milvus debe configurarse con permiso de lectura o escritura. Solo un nodo de Milvus puede configurarse como nodo de escritura, y el resto deben ser nodos de lectura. Primero, establezca los parámetros de las secciones cluster y general en el archivo de configuración del sistema de Milvus server_config.yaml:
Sección cluster
| Parámetro | Descripción | Configuración |
|---|---|---|
enable | Si se habilita el modo clúster | true |
role | Rol de despliegue de Milvus | rw/ro |
Sección 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
Durante la instalación, la ruta de almacenamiento compartido de JuiceFS configurada se establece como /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
Una vez completada la instalación, inicie Milvus y confirme que se ha lanzado correctamente. Por último, inicie el servicio Mishards en cualquiera de los nodos del clúster. La imagen siguiente muestra un lanzamiento correcto de Mishards. Para obtener más información, consulte el tutorial de GitHub.
Lanzamiento correcto de Mishards.
Pruebas de rendimiento
Las soluciones de almacenamiento compartido suelen implementarse mediante sistemas de almacenamiento conectado a la red (NAS). Los tipos de sistemas NAS de uso común incluyen Network File System (NFS) y Server Message Block (SMB). Las plataformas de nube pública suelen proporcionar servicios de almacenamiento gestionados compatibles con estos protocolos, como Amazon Elastic File System (EFS).
A diferencia de los sistemas NAS tradicionales, JuiceFS se implementa basado en Filesystem in Userspace (FUSE), donde toda la lectura y escritura de datos tiene lugar directamente en el lado de la aplicación, lo que reduce aún más la latencia de acceso. También hay características exclusivas de JuiceFS que no se encuentran en otros sistemas NAS, como la compresión de datos y el almacenamiento en caché.
Las pruebas de benchmark revelan que JuiceFS ofrece ventajas importantes frente a EFS. En el benchmark de metadatos (Figura 1), JuiceFS alcanza operaciones de E/S por segundo (IOPS) hasta diez veces superiores a las de EFS. Además, el benchmark de rendimiento de E/S (Figura 2) muestra que JuiceFS supera a EFS tanto en escenarios de trabajo único como de múltiples trabajos.
Figura 1. Benchmark de metadatos.
Figura 2. Benchmark de lectura/escritura secuencial.
Además, las pruebas de benchmark muestran que el tiempo de recuperación de la primera consulta, o el tiempo para cargar datos recién insertados desde el disco a la memoria, para el clúster de Milvus basado en JuiceFS es de solo 0,032 segundos de media, lo que indica que los datos se cargan desde el disco a la memoria casi instantáneamente. Para esta prueba, el tiempo de recuperación de la primera consulta se mide utilizando un millón de filas de datos vectoriales de 128 dimensiones insertadas en lotes de 100k a intervalos de 1 a 8 segundos.
JuiceFS es un sistema de almacenamiento de archivos compartido estable y fiable, y el clúster de Milvus construido sobre JuiceFS ofrece tanto alto rendimiento como capacidad de almacenamiento flexible.
Obtén más información sobre Milvus
Milvus es una herramienta potente capaz de impulsar una amplia variedad de aplicaciones de inteligencia artificial y búsqueda de similitud vectorial. Para obtener más información sobre el proyecto, consulta los siguientes recursos:
- Lee nuestro blog.
- Interactúa con nuestra comunidad de código abierto en Slack.
- Usa o contribuye a la base de datos vectorial más popular del mundo en GitHub.
- Prueba y despliega rápidamente aplicaciones de IA con nuestro nuevo bootcamp.
Biografía de Changjian Gao.
Biografía de Jingjing Jia.
Sigue leyendo

3 Easiest Ways to Use Claude Code on Your Mobile Phone
Run Claude Code from your phone with Remote Control, Happy Coder, or SSH + Tailscale. Comparison table, setup steps, and tools for typing, memory, and parallel tasks.

How to Build an Enterprise-Ready RAG Pipeline on AWS with Bedrock, Zilliz Cloud, and LangChain
Build production-ready enterprise RAG with AWS Bedrock, Nova models, Zilliz Cloud, and LangChain. Complete tutorial with deployable code.

Milvus WebUI: A Visual Management Tool for Your Vector Database
Explore Milvus WebUI to monitor, manage, and optimize your vector database with real-time insights, performance tracking, and system health monitoring.



