首页/AI/RAG 与向量库速查/Milvus 架构组成

Milvus 架构组成

Milvus 采用存算分离架构:协调层管理元数据与调度,查询节点执行检索,数据节点负责落盘,消息队列串联写入链路,对象存储保存段文件;部署形态决定各组件的伸缩方式。

RAG 与向量库速查AI更新于 2026-10-13

Milvus 的架构组成

Milvus 采用存算分离架构:协调组件管理元数据与调度,查询节点执行检索,数据节点负责落盘与压缩,消息队列串联写入链路,对象存储保存段文件。理解这套分工有助于判断性能瓶颈落在哪一层——写入慢、检索慢、还是索引构建慢,对应的扩容对象完全不同。

基本信息

协调组件root coord、query coord、data coord、index coord
执行组件query node(检索)、data node(写入)、index node(建索引)
依赖存储etcd 存元数据;MinIO 或 S3 存日志与段;Pulsar 或 Kafka 做日志流
部署形态standalone 单机(开发验证)与 cluster 分布式(生产)

Docker Compose 启动 standalone

Docker Compose 启动 standalone
wget https://github.com/milvus-io/milvus/releases/download/v2.4.0/milvus-standalone-docker-compose.yml -O docker-compose.yml
docker compose up -d
curl http://localhost:9091/healthz    # 健康检查

部署要点

  • 开发验证用单机形态即可,SDK 代码与分布式一致,后续切换不用改应用
  • 生产部署要为对象存储与消息队列单独规划容量,它们常先于计算组件成为瓶颈
  • 索引构建会消耗大量内存与 CPU,尽量与在线查询节点在资源上隔离
  • 数据落盘有延迟,写入后立刻按条件检索可能查不到,要接受最终一致
  • 元数据组件一旦不可用,整个集群无法启动,需要单独做备份

组件与职责

层次组件职责
接入SDK 与代理层接收读写请求并路由
协调各类 coord元数据、调度与均衡
计算query / data / index node检索、写入与索引构建
存储对象存储与消息队列段文件、日志流与元数据
单机与分布式的 SDK 使用方式一致,容量与高可用需求变化时再切换部署形态,应用层代码基本不需要改动。
用默认弱配置的对象存储与消息队列直接上生产,写入高峰期最容易先出问题,建议按写入吞吐预留余量。

容量与扩容判断

  • 检索慢且内存吃紧:优先扩查询节点,或改用更省内存的索引类型
  • 写入积压:检查消息队列与数据节点,落盘与压缩阶段更易堆积
  • 建索引时间长且拖慢查询:把索引节点独立部署,避免共享资源
  • 查询量突增时先看对象存储的读写延迟,段文件读取常是被忽略的一环
  • 上线前按峰值写入与峰值查询分别压测,两类压力对组件的要求并不相同

易错点

  • 单机形态直接上生产承担大数据量,重建索引与数据压缩阶段出现资源争抢
  • 对象存储与消息队列用默认弱配置部署,写入高峰期成为瓶颈
  • 把索引构建与在线查询混跑在同一批节点上,检索延迟随建索引波动
  • 忽略元数据组件的备份,故障后需要重建整个集群

数据来源与参考

  • Milvus 官方文档(Architecture Overview)
  • Milvus 官方文档(Install Milvus Standalone with Docker)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌