架构分层
按照数据和控制分离的原则,milvus 的架构分为四层:
- 接入层
- 协调服务
- 工作节点
- 存储层
接入层
接入层负责处理客户端请求,由一组无状态 proxy 组件组成,负责请求分发和结果汇聚、加工处理。
协调服务
协调服务是整个集群的大脑,负责集群拓扑管理、负载均衡、时间戳生成、数据定义和数据管理等。数据处理任务由协调服务分解,并分配给工作节点执行。
- 根协调器(rootcoord),处理数据定义DDL和数据控制DCL,例如表创建删除、分区、索引等。
- 数据协调器(datacoord),管理数据节点和索引节点的拓扑结构,维护元数据、触发刷新、压缩和索引构建等。
- 查询协调器(querycoord),管理查询节点的拓扑结构和负载均衡。
工作节点
工作节点根据协调服务指令,执行来自代理的数据操作DML请求。由于存储和计算是分离的,因此工作节点是无状态的。
- 查询节点(querynode)
- 数据节点(datanode)
- 索引节点(indexnode)
存储层
- 元存储,采用 etcd 存储集群元数据快照,例如表定义、分区、索引等。
- 对象存储,采用 Minio/S3 存储数据文件、索引文件、以及中间查询结果。
- 消息队列,采用 Kafka/Pulsar 负责数据流数据持久化和事件通知。遵循“日志即数据”的设计理念,milvus 通过日志持久化和快照日志来保证数据的可靠性。
订阅更新,获取更多学习资料,请关注我们的公众号: