当前位置: 首页 > news >正文

Milvus 资源调度系统的核心部分:「查询节点」「资源组」「数据库」

Milvus 的资源管理分为三层:查询节点、资源组和 数据库。

查询节点:处理查询任务的组件。它在物理机或容器(如 Kubernetes 中的 pod)上运行。

资源组:查询节点的集合,充当逻辑组件(数据库和 Collections)与物理资源之间的桥梁。您可以将一个或多个数据库或集合分配给一个资源组。

下面我将详细解释这三个概念。

🧱 总体图(打个比方)

你可以把整个 Milvus 系统想象成一个「大型图书馆系统」,里头有:

  • 很多“读者”(查询请求)
  • 很多“图书馆分馆”(数据库)
  • 每个分馆有很多“图书柜”(Collection)
  • 后台有一群“图书管理员”(查询节点)在负责查找图书
  • 管理员是按组编排的,比如“第一组负责科技馆”,“第二组负责历史馆”,这就是“资源组”

🧩 一层一层说清楚:


① 查询节点(QueryNode)

是什么?

  • 查询节点是 Milvus 的底层服务组件,专门负责 处理向量检索、聚类、过滤查询等任务
  • 你可以理解为“一台专门干活的工作机器”。

跑在哪里?

  • 查询节点可以跑在物理服务器上,也可以跑在 Kubernetes 的 Pod 中。
  • 一个 Milvus 系统可以有很多个查询节点(多台机器/多个 Pod)。

干嘛用?

  • 查询节点会接收用户的查询任务,比如“在 Collection A 中找相似的向量”,然后自己去磁盘/内存里找结果。
  • 查询节点是消耗 CPU、内存最多的部分,属于“干活的前线工人”。

② 资源组(Resource Group)

是什么?

  • 资源组是一组 QueryNode 的集合,是一个逻辑上的划分。
  • 它的作用是把查询节点分组,每组负责不同的任务/客户/数据库。

举例理解:

  • 假设你有 100 个 QueryNode,你可以划分成 2 个资源组:

    • rg_high_priority:专门给 VIP 租户用,响应快。
    • rg_low_priority:给普通用户用。

为什么要分资源组?

  • 为了资源隔离,比如:

    • VIP 用户不能因为普通用户太多而被拖慢
    • 某个数据库出了问题不会拖垮所有查询节点
  • 资源组就是一个调度系统:让哪些 QueryNode 服务哪些 Collection 或数据库


③ 数据库(Database)

是什么?

  • Milvus 现在支持多数据库(类似 MySQL 的多个库),每个数据库相当于一个「租户空间」。
  • 每个数据库下可以有多个 Collection,比如 vector_db1 下有 itemsusers 表。

和资源组的关系?

  • 你可以把某个数据库“绑定”到某个资源组,让它的所有 Collection 查询都由那组 QueryNode 来处理。

🧠 整体逻辑关系总结图:

              用户查询请求↓┌─────────┐│ Database│   ← 你定义的数据库,如 db1、db2└─────────┘↓┌─────────────┐│ Collection  │ ← 数据表└─────────────┘↓分配到某个资源组↓┌──────────────────┐│ Resource Group A │ ← 一组 QueryNode│  (高优先级)      │└──────────────────┘↓┌────────────────────┐│ QueryNode A1 ~ A10 │ ← 干活的机器└────────────────────┘

✅ 举个完整的例子

假设你有这样一个场景:

  • 有两个客户:阿里巴巴(VIP)和普通客户(长尾用户)
  • 阿里巴巴的数据存放在数据库 vip_customer_db
  • 普通客户数据在 normal_customer_db
  • 你想确保阿里巴巴的查询速度不受其它人影响

你可以这样做:

  1. 创建两个资源组:rg_viprg_normal
  2. 分配更多 QueryNode 给 rg_vip(比如 10 个节点),只给 rg_normal 分 4 个节点
  3. vip_customer_db 绑定到 rg_vip,把 normal_customer_db 绑定到 rg_normal

这样:

  • 阿里巴巴的查询总是在 rg_vip 中处理
  • 即使普通客户量暴增,也不会影响阿里的响应速度
  • 同时资源利用率也更合理,避免大家抢资源

🧠 再次强调区别:

名称是什么谁组成的管理对象举例
查询节点干活的机器(QueryNode)单个服务实例负责执行查询任务一个 Pod / 容器
资源组一组查询节点的集合多个 QueryNode逻辑分组、调度单位高优、低优资源组
数据库存数据的逻辑库(租户单位)多个 Collection用户管理的数据集用户A的数据库 user_db

✅ 一句话总结

数据库 是租户的数据空间,资源组 是逻辑资源划分,查询节点 是实际执行工作的工人。
它们之间是:数据库 ←→ 资源组 ←→ 查询节点 的映射链。

http://www.xdnf.cn/news/1069561.html

相关文章:

  • 黑马ReactDay02
  • gitlab https链接转为ssh链接
  • Android 开发 获取Debug 跟 Release 包的SHA1值
  • Host ‘db01‘ is not allowed to connect to this MariaDB server 怎么解决?
  • 原子级制造革命:双原子镧催化剂登顶Angew,焦耳超快加热技术深度解析
  • 卷积神经网络(Convolutional Neural Network, CNN)
  • 论文阅读:A Survey on Large Language Models for Code Generation
  • 量学云讲堂王岩江宇龙2025年第58期视频 主课正课系统课+收评
  • 八股文——JAVA基础:说一下C++与java的区别
  • 【笔记】Docker 配置阿里云镜像加速(公共地址即开即用,无需手动创建实例)
  • 使用pyflink编写demo并将任务提交到yarn集群
  • python的智慧养老院管理系统
  • 20250625解决在Ubuntu20.04.6LTS下编译RK3588的Android14出现cfg80211.ko的overriding问题
  • GBDT:梯度提升决策树——集成学习中的预测利器
  • 自动化测试--Appium和ADB及常用指令
  • python学习笔记(深度学习)
  • 深入浅出:RocketMQ与Kafka的双剑合璧,实现高可用与高吞吐
  • Fisco Bcos学习 - 搭建第一个区块链网络
  • 《从0到1:C/C++音视频开发自学完全指南》
  • 达梦数据库安装
  • 没有VISA怎么注册AWS?
  • WinAppDriver 自动化测试:Python篇
  • 【基础篇-消息队列】——如何通过网络传输结构化的数据( 序列化与反序列化)
  • MySQL之存储过程详解
  • 《汇编语言:基于X86处理器》第4章 复习题和练习,编程练习
  • 定位坐标系深度研究报告
  • 【Docker基础】Docker容器管理:docker pause、stop、kill区别
  • Wpf的Binding
  • Linux size命令详解
  • Docker安装Arroyo流处理引擎