Milvus构建在Faiss、HNSW、DiskANN、SCANN等流行的向量搜索库之上,专为在包含数百万、数十亿甚至数万亿向量的密集向量数据集上进行相似性搜索而设计。
Milvus有两种运行模式:独立运行(单机版)和集群运行(集群版)。这两种模式具有相同的功能。
Milvus单机版
Milvus 单机版包括三个组件:
Milvus集群版
Milvus集群包括七个微服务组件和三个第三方依赖项。所有微服务都可以独立部署在Kubernetes上。
七个微服务组件为:根节点、代理、查询坐标、查询节点、数据节点、索引节点、数据节点。
三个第三方依赖项为:
Milvus官方将Milvus整体架构分成了四个层,在可扩展性和灾难恢复方面相互独立。
它由一组无状态代理组成,是系统的前端层,也是用户的终端。它验证客户端请求并减少返回结果。它使用一系列负载均衡组件提供统一的服务地址,而且Milvus采用的是大规模并行处理(MPP)架构,它还会对查询的中间结果进行聚合和处理,将最终结果返回给客户端。
它将任务分配给工作节点,起到系统大脑的作用。可以承担集群拓扑管理、负载平衡、时间戳生成、数据声明和数据管理。它包括根协调器、数据协调器和查询协调器。
工作节点是哑执行器,它遵从协调器服务的指令,执行来自代理的数据操作语言(DML)命令。由于存储和计算分离,工作节点是无状态的。它包括查询节点、数据节点和索引节点。