不懂就问,Milvus 新上线的资源组功能到底怎么样?

news/2024/5/20 14:21:27/文章来源:https://blog.csdn.net/weixin_44839084/article/details/130238310

在近期更新的 Milvus 2.x 版本中,我们上线了在社区中呼声一直很高的【资源组功能】。有了这个功能,用户再也不需要“为每个 collection 部署一套 Milvus 服务”的方案,轻松实现对 Query Node 资源进行分组管理,达到物理资源隔离的效果。

本文将从需求、方案以及实操层面出发,带你详细解读资源组功能。

alt

01.源自用户需求

上线资源组功能的契机来自和用户的一次沟通。

某次,在社区交流活动中,Milvus 的社区用户提出了这样一个问题: 基于 Milvus 部署了多个应用场景,根据数据源和应用场景将数据划分成了多个 Collection。不过,由于向量搜索具备着高度的 CPU 密集型特征,所以在业务的高峰时间段,多个 Collection 的同时查询会争抢 CPU 资源,彼此影响。

为了满足场景需要,用户选择了为每个 Collection 部署一套 Milvus 服务,从数据库的层面来避免查询过程中 Collection 之间的影响。这也是在没有资源组功能时一个比较标准的方案。尽管这套方案完美解决了用户的问题,却也带来了 Milvus 服务运维的开——用户需要同时运维多个 Milvus 集群。因此,在沟通中,用户提出了在一个 Milvus 服务中去实现这个场景的需求。

02.资源隔离方案

Milvus 在提供查询前,需要对 Collection 执行 load 操作,以加速后续查询的速度,实现更好的查询性能。结合 Milvus 用户的使用习惯,我们设计了一套 Milvus 的资源组方案。

Milvus 服务中维护了名为一个 __default_resource_group 的资源组,在 Milvus 启动后,默认所有的 QueryNode 都会加入到这个资源组进行管理,后续的 load 操作也会将 Collection 在这个资源组中进行加载。对于不需要感知物理资源的用户,所有的操作、系统表现没有发生任何变化。

如果用户有物理资源隔离的需求,那么可以创建多个自定义资源组,然后将默认资源组中的节点分配转移到自定义的资源组中,实现对 Milvus 集群中 QueryNode 资源的划分和物理隔离。随后在 load 操作中,可以去指定每一个 Collection 要加载到哪个资源组中。在加载 Collection 的同时,可实现资源的使用限制。

03.实现 Collection 资源隔离

在介绍完 Milvus 资源隔离的背景和方案后,我们可以通过一个例子来讲述实现 Collection 级别资源隔离的完整步骤。

下面的所有操作是基于用户部署了一个 6 个 QueryNode 的 Milvus 服务,所以会有 6 个 QueryNode 参与资源隔离过程中的划分和分配。

  • 创建两个自定义资源组和 rg1rg2,用于承载 QueryNode 资源。
import pymilvus

utility.create_resource_group("rg1", using='default')
utility.create_resource_group("rg2", using='default')

rgs = utility.list_resource_groups(using='default')
print(f"Resource group list: {rgs}")
# Resource group list: ['__default_resource_group', 'rg1', 'rg2']
  • 分别从 __default_resource_group 中向 rg1rg2 转移 3 个节点,实现所有 QueryNode 资源的隔离划分。
utility.transfer_node("__default_resource_group", "rg1", 3, using="default")
utility.transfer_node("__default_resource_group", "rg2", 3, using="default")
  • 假定用户有两个需要加载的 Collection, 分别为 Collection ACollection B, 这里通过将 Collection A 加载到 rg1, 将 Collection B 加载到 rg2, 以此实现 Collection ACollection B 的资源隔离。
# ask Milvus load the collection to the desired resource group.
# make sure that query nodes num should be greater or equal to replica_number
collection = Collection('collectionA')
collection.load(replica_number=3, _resource_group=['rg1']) 

collection = Collection('collectionB')
collection.load(replica_number=3, _resource_group=['rg2']) 

通过上述 3 个步骤,我们实现了 Collection 级别的资源隔离,每个 Collection 使用了 3 个独立的 QueryNode, 后续发生在 Collection 上的查询将会使用各自独立的 QueryNode, 彼此之间物理隔离,互不影响。

Milvus 通过资源组提供对 QueryNode 资源划分的能力,用户可以根据自身的需求灵活安排 Collection 的加载方案,实现各种级别的资源隔离,应对不同的场景和需求。更多关于 Milvus 资源组功能的使用细节,可以点击链接参考 Milvus Doc。

(本文作者刘伟系 Zilliz 高级研发工程师 )

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_290365.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运行时内存数据区之执行引擎(一)

执行引擎概述 执行引擎是Java虚拟机核心的组成部分之一。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软…

「计算机控制系统」6. 直接设计法

特殊类型系统的最小拍无差设计 一般系统的最小拍无差设计 最小拍控制器的工程化改进 Dahlin算法 文章目录 特殊类型系统的最小拍无差设计理论分析典型输入函数的最小拍无差系统 一般系统的最小拍无差设计有波纹最小拍无差设计无波纹最小拍无差设计 最小拍控制器的工程化改进针对…

浅析商场智能导购系统功能与实施效益

商场智能导购系统是一种基于物联网技术和人工智能算法的解决方案,旨在提供商场内部的智能导购服务,为消费者提供个性化的购物导引和推荐,提升用户购物体验,增加商场的客流量和销售额。 商场智能导购系统的方案一般包括以下主要功能…

LeetCode 27.移除元素

文章目录 💡题目分析💡解题思路🚩思路1:暴力求解 --- 遍历🔔接口源码:🚩思路2:空间换时间🔔接口源码:🚩思路3:双指针(快慢指针)🔔接口…

tftp+Filezilla文件双向传输(1)-centos(VMware)-win10(host)

目录 1.下载安装vsftpdtftptftp-server 2.配置服务 2.1 配置服务 修改文件 /etc/vsftpd.conf 2.2 配置服务 守护进程 /etc/xinetd.d/tftp 2.3 配置服务 tftp服务器 2.4 配置登录用户 2.4.1 修改selinux 2.4.2 匿名用户登录 2.4.3 新建账户,不能登陆系…

Linux时间服务器(ntp)

1.配置ntp时间服务器,确保客户端主机能和服务主机同步时间 2.配置ssh免密登陆,能够通过客户端主机通过redhat用户和服务端主机基于公钥验证方式进行远程连接 一.配置ntp时间服务器,确保客户端主机能和服务主机同步时间 1、软件安装 [rootl…

Liunx下进程间通信

文章目录 前言1.进程间通信相关介绍2.管道1.匿名管道2.管道的原理3.通过代码来演示匿名管道4.命名管道5.命名管道的原理6.命名管道代码演示 3.System V共享内存1.共享内存原理2.相关系统接口的介绍与共享内存的代码演示3.共享内存的一些特性 4.system V消息队列与system V信号量…

TryHackMe-Services(Windows域渗透)

Services 认识团队! 今天thm新出的房间,尝尝鲜 端口扫描 循例nmap 把services.local加入hosts Web枚举 发现员工邮箱以及一些员工姓名 从下边的邮箱中,大致可以猜测其他员工账户名跟这个一致的格式 将其保存起来 立足 - AS-REP Roasting…

Linux基础—日志分析

Linux基础—日志分析 一、日志的功能1.日志消息的级别2.设备字段说明 二、日志文件的分类1.内核及系统日志2.用户日志3.程序日志 三、日志文件1.日志文件查看2.主要日志文件介绍3.日志管理策略 一、日志的功能 用于记录系统、程序运行中发生的各种事件 通过阅读日志&#xff0c…

2023第十四届蓝桥杯 C/C++大学生A组省赛 满分题解

写在前面 以下代码,目前均可通过民间OJ数据(dotcpp & New Online Judge), 两个OJ题目互补,能构成全集,可以到对应链接下搜题提交(感谢OJ对题目的支持) 如果发现任何问题&…

论文各子结构的实现

本文将简明介绍人工智能论文各子结构的实现方法,重点指出了各部分实现时的要点,帮助读者高效地完成论文的写作。 1. 标题 论文标题的确定必须遵循明确而有吸引力的原则。论文的题目需要准确反映自己论文的研究内容和创新点,同时还必须具有吸…

【LeetCode: 1027. 最长等差数列 | 暴力递归=>记忆化搜索=>动态规划】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

(算法基础)完全背包问题

完全背包问题 完全背包问题就是在背包问题大逻辑前提之下,给定的n个物品没有个数的限制。对于完全背包问题的状态表示与01背包问题是一样的,f(i, j),这个二维的集合表示:在前i个物品当中去选择,并且总体积小于等于j&a…

android 布局优化

1.绘制和布局加载原理 本文仅供个人学习记录,详细介绍可查看下面链接 Android布局优化,多套方案全面解析 布局优化的原因:布局嵌套过深,或者其他原因导致布局渲染性能不佳,可能会导致应用卡顿。 android绘制原理&am…

taobao.item.carturl.get( 加购URL获取 )

¥开放平台免费API可选用户授权 获取加购URL,支持添加商品到购物车 公共参数 请求地址: 公共请求参数: 公共响应参数: 点击获取key和secret 请求参数 请求示例 响应示例 异常示例

java版UWB人员定位系统源码,提供位置实时显示、历史轨迹回放、电子围栏、行为分析、智能巡检等功能

运用UWB定位技术开发的人员定位系统源码 文末获取联系! 本套系统运用UWB定位技术,开发的高精度人员定位系统,通过独特的射频处理,配合先进的位置算法,可以有效计算复杂环境下的人员与物品的活动信息。 提供位置实时显…

10分钟了解人工智能(最通俗的语言)

最通俗的语言:15分钟了解人工智能;唯一优点,受众完全听懂 无人驾驶、智能家居、远程医疗……如今,人工智能(AI)技术已被广泛应用于金融、交通、医疗、安防、教育等领域,成为经济增长新动能 一 什么是人工智能 人工智能…

css预处理器:less

1.css常见单位 绝对单位 只需要掌握px,国外in用得更多 相对单位 em em相对于自身的font-size,如果自身未定义,则相对于继承的父元素font-size rem rem可以做移动端的适配,依然很重要,如淘宝m站在使用;但是趋势是rem转vw rem是相对于html的font-size,html默认字体大小为1…

Linux系统之部署Samba服务

Linux系统之部署Samba服务 一、Samba服务介绍1.Samba服务简介2.NFS和CIFS简介3.Smaba服务相关包4.samba监听端口4.samba相关工具及命令 二、环境规划介绍1.环境规划2.本次实践介绍 三、Samba服务端配置1.检查yum仓库2.安装smaba相关软件包3.创建共享目录4.设置共享目录权限5.新…

详解C语言string.h中常见的14个库函数(三)

本篇博客继续讲解C语言string.h头文件中的库函数。本篇博客计划讲解3个函数,分别是:strstr, strtok, strerror。其中strstr函数我会用一种最简单的方式模拟实现。 strstr char * strstr ( const char * str1, const char * str2 );strstr可以在str1中查…