Criando um cluster Milvus baseado no JuiceFS
Colaborações entre comunidades open-source são algo mágico. Voluntários apaixonados, inteligentes e criativos não apenas mantêm as soluções open-source inovadoras, como também trabalham para integrar diferentes ferramentas de maneiras interessantes e úteis. Milvus, o banco de dados vetorial mais popular do mundo, e JuiceFS, um sistema de arquivos compartilhado projetado para ambientes cloud-native, foram unidos nesse espírito por suas respectivas comunidades open-source. Este artigo explica o que é o JuiceFS, como criar um cluster Milvus baseado no armazenamento de arquivos compartilhado do JuiceFS e o desempenho que os usuários podem esperar ao usar esta solução.
O que é o JuiceFS?
JuiceFS é um sistema de arquivos POSIX distribuído, open-source e de alto desempenho, que pode ser construído sobre Redis e S3. Ele foi projetado para ambientes cloud-native e oferece suporte ao gerenciamento, análise, arquivamento e backup de dados de qualquer tipo. JuiceFS é comumente usado para resolver desafios de big data, criar aplicações de inteligência artificial (IA) e coletar logs. O sistema também oferece suporte ao compartilhamento de dados entre vários clientes e pode ser usado diretamente como armazenamento compartilhado no Milvus.
Depois que os dados e seus metadados correspondentes são persistidos no armazenamento de objetos e no Redis, respectivamente, o JuiceFS atua como um middleware sem estado. O compartilhamento de dados é realizado permitindo que diferentes aplicações se conectem perfeitamente por meio de uma interface padrão de sistema de arquivos. O JuiceFS depende do Redis, um armazenamento de dados em memória open-source, para o armazenamento de metadados. O Redis é usado porque garante atomicidade e fornece operações de metadados de alto desempenho. Todos os dados são armazenados no armazenamento de objetos por meio do cliente JuiceFS. O diagrama da arquitetura é o seguinte:
Arquitetura geral do JuiceFS.
Criar um cluster Milvus baseado no JuiceFS
Um cluster Milvus criado com o JuiceFS (veja o diagrama de arquitetura abaixo) funciona dividindo as solicitações upstream usando o Mishards, um middleware de particionamento de cluster, para encaminhar as solicitações em cascata para seus submódulos. Ao inserir dados, o Mishards aloca solicitações upstream ao nó de escrita do Milvus, que armazena os dados recém-inseridos no JuiceFS. Ao ler dados, o Mishards carrega os dados do JuiceFS por meio de um nó de leitura do Milvus para a memória para processamento; depois, coleta e retorna os resultados dos subserviços para o upstream.
Arquitetura do cluster Milvus criado com JuiceFS.
Etapa 1: Iniciar o serviço MySQL
Inicie o serviço MySQL em qualquer nó do cluster. Para obter detalhes, consulte Gerenciar metadados com MySQL.
Etapa 2: Criar um sistema de arquivos JuiceFS
Para fins de demonstração, o programa binário pré-compilado JuiceFS é usado. Baixe o pacote de instalação correto para o seu sistema e siga o Guia de Início Rápido do JuiceFS para obter instruções detalhadas de instalação. Para criar um sistema de arquivos JuiceFS, primeiro configure um banco de dados Redis para armazenamento de metadados. Recomenda-se que, em implantações em nuvem pública, você hospede o serviço Redis na mesma nuvem que a aplicação. Além disso, configure o armazenamento de objetos para o JuiceFS. Neste exemplo, o Azure Blob Storage é usado; no entanto, o JuiceFS oferece suporte a quase todos os serviços de objetos. Selecione o serviço de armazenamento de objetos que melhor atenda às demandas do seu cenário.
Depois de configurar o serviço Redis e o armazenamento de objetos, formate um novo sistema de arquivos e monte o JuiceFS no diretório 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
Se o servidor Redis não estiver em execução localmente, substitua localhost pelo seguinte endereço:
redis://<user:password>@host:6379/1.
Quando a instalação é bem-sucedida, o JuiceFS retorna a página de armazenamento compartilhado /root/jfs.
Instalação bem-sucedida.
Etapa 3: Iniciar o Milvus
Todos os nós no cluster devem ter o Milvus instalado, e cada nó do Milvus deve ser configurado com permissão de leitura ou gravação. Apenas um nó do Milvus pode ser configurado como nó de gravação, e os demais devem ser nós de leitura. Primeiro, defina os parâmetros das seções cluster e general no arquivo de configuração do sistema Milvus server_config.yaml:
Seção cluster
| Parâmetro | Descrição | Configuração |
|---|---|---|
enable | Se deve habilitar o modo de cluster | true |
role | Função de implantação do Milvus | rw/ro |
Seção 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 a instalação, o caminho de armazenamento compartilhado configurado do JuiceFS é definido 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
Após a conclusão da instalação, inicie o Milvus e confirme que ele foi iniciado corretamente. Por fim, inicie o serviço Mishards em qualquer um dos nós no cluster. A imagem abaixo mostra uma inicialização bem-sucedida do Mishards. Para mais informações, consulte o tutorial no GitHub.
Inicialização bem-sucedida do Mishards.
Benchmarks de desempenho
As soluções de armazenamento compartilhado geralmente são implementadas por sistemas de armazenamento conectado à rede (NAS). Os tipos de sistemas NAS comumente usados incluem Network File System (NFS) e Server Message Block (SMB). As plataformas de nuvem pública geralmente fornecem serviços de armazenamento gerenciado compatíveis com esses protocolos, como o Amazon Elastic File System (EFS).
Ao contrário dos sistemas NAS tradicionais, o JuiceFS é implementado com base no Filesystem in Userspace (FUSE), onde toda a leitura e gravação de dados ocorre diretamente no lado da aplicação, reduzindo ainda mais a latência de acesso. Também há recursos exclusivos do JuiceFS que não podem ser encontrados em outros sistemas NAS, como compressão de dados e cache.
Testes de benchmark revelam que o JuiceFS oferece grandes vantagens sobre o EFS. No benchmark de metadados (Figura 1), o JuiceFS apresenta operações de I/O por segundo (IOPS) até dez vezes maiores que o EFS. Além disso, o benchmark de throughput de I/O (Figura 2) mostra que o JuiceFS supera o EFS em cenários de job único e múltiplos jobs.
Figura 1. Benchmark de metadados.
Figura 2. Benchmark de leitura/gravação sequencial.
Além disso, os testes de benchmark mostram que o tempo de recuperação da primeira consulta, ou o tempo para carregar dados recém-inseridos do disco para a memória, para o cluster Milvus baseado em JuiceFS é de apenas 0,032 segundos em média, indicando que os dados são carregados do disco para a memória quase instantaneamente. Para este teste, o tempo de recuperação da primeira consulta é medido usando um milhão de linhas de dados vetoriais de 128 dimensões inseridos em lotes de 100k em intervalos de 1 a 8 segundos.
JuiceFS é um sistema de armazenamento de arquivos compartilhado estável e confiável, e o cluster Milvus construído sobre o JuiceFS oferece tanto alto desempenho quanto capacidade de armazenamento flexível.
Saiba mais sobre o Milvus
O Milvus é uma ferramenta poderosa capaz de impulsionar uma vasta gama de aplicações de inteligência artificial e busca por similaridade vetorial. Para saber mais sobre o projeto, confira os seguintes recursos:
- Leia nosso blog.
- Interaja com nossa comunidade de código aberto no Slack.
- Use ou contribua para o banco de dados vetorial mais popular do mundo no GitHub.
- Teste e implante rapidamente aplicações de IA com nosso novo bootcamp.
Biografia de Changjian Gao.
Biografia de Jingjing Jia.
Continue lendo

How to Choose the Best Embedding Model for RAG in 2026: 10 Models Benchmarked
We benchmarked 10 embedding models on cross-modal, cross-lingual, long-document, and dimension compression tasks. See which one fits your RAG pipeline.

Zilliz Cloud BYOC Now Available Across AWS, GCP, and Azure
Zilliz Cloud BYOC is now generally available on all three major clouds. Deploy fully managed vector search in your own AWS, GCP, or Azure account — your data never leaves your VPC.
Milvus/Zilliz + Surveillance: How Vector Databases Transform Multi-Camera Tracking
See how Milvus vector database enhances multi-camera tracking with similarity-based matching for better surveillance in retail, warehouses and transport hubs.



