鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

开源Milvus参考架构

组件场景

Milvus构建在Faiss、HNSW、DiskANN、SCANN等流行的向量搜索库之上,专为在包含数百万、数十亿甚至数万亿向量的密集向量数据集上进行相似性搜索而设计。

组件原理

Milvus有两种运行模式:独立运行(单机版)和集群运行(集群版)。这两种模式具有相同的功能。

Milvus单机版

Milvus 单机版包括三个组件:

  • Milvus:核心功能组件。
  • 元数据存储:元数据引擎,用于访问和存储Milvus内部组件(包括代理、索引节点等)的元数据。
  • 对象存储:存储引擎,负责Milvus的数据持久化。
图1 Milvus单机版架构

Milvus集群版

Milvus集群包括七个微服务组件和三个第三方依赖项。所有微服务都可以独立部署在Kubernetes上。

七个微服务组件为:根节点、代理、查询坐标、查询节点、数据节点、索引节点、数据节点。

三个第三方依赖项为:

  • 元存储:存储集群中各种组件的元数据,如etcd。
  • 对象存储: 负责集群中索引和二进制日志文件等大型文件的数据持久化,如S3/MinIO。
  • 日志代理:管理最近突变操作的日志,输出流式日志,并提供日志发布-订阅服务,如Kafka/Pulsar。
图2 Milvus集群版架构

架构原理

图3 Milvus架构图

Milvus官方将Milvus整体架构分成了四个层,在可扩展性和灾难恢复方面相互独立。

  • 访问层(Access Layer)

    它由一组无状态代理组成,是系统的前端层,也是用户的终端。它验证客户端请求并减少返回结果。它使用一系列负载均衡组件提供统一的服务地址,而且Milvus采用的是大规模并行处理(MPP)架构,它还会对查询的中间结果进行聚合和处理,将最终结果返回给客户端。

  • 协调服务(Coordinator Services)

    它将任务分配给工作节点,起到系统大脑的作用。可以承担集群拓扑管理、负载平衡、时间戳生成、数据声明和数据管理。它包括根协调器、数据协调器和查询协调器。

  • 工作节点(Worker Nodes)

    工作节点是哑执行器,它遵从协调器服务的指令,执行来自代理的数据操作语言(DML)命令。由于存储和计算分离,工作节点是无状态的。它包括查询节点、数据节点和索引节点。

  • 存储(Object Storage)

    负责数据的持久性。它包括元数据存储、日志代理和对象存储。