从 Milvus 2.2 到 2.2.6,我们是如何持续稳定升级的
最近,Milvus 发布了 2.2.6 版本,在修复了一些 bug 后,Milvus 变得越发稳定。
事实上,自 Milvus 升级至 2.X 版本以来,我们一直在努力改进及优化,推出了诸如从文件中批量导入数据、基于磁盘的近似最近邻(ANN)索引算法、不停机滚动升级、Coordinator HA 高可用、资源组等新功能,也提高了诸如元数据存储、批量导入等性能。
本文通过复盘从 Milvus 2.2 到 Milvus 2.2.6 版本的变化、升级,带你深入了解一个更加稳定、流畅、易用的 Milvus。
01.Milvus 2.2:提升向量搜索的稳定性、搜索速度和灵活的扩缩容能力
Milvus 2.2 是一个重大版本更新,不仅推出了 New Feature,还做出了许多突破性的改进:
从文件中批量导入数据:Milvus 提供了一系列新的 API,用于支持从文件中更有效率地批量导入数据。能够将存放于 Minio 或 S3 上的任意 JSON 文件中的数据直接导入 Milvus,数据导入省时省力。
搜索结果分页:为了避免单个 RPC 会话返回过多的搜索结果,Milvus 现已支持通过设置偏移量(offset)和关键词的方式减少返回的搜索结果数量。
基于角色的访问控制(RBAC):Milvus 现已支持 RBAC。用户可以通过管理用户、角色和权限实现对 Milvus 数据库的访问控制。
配额和限制:配额是 Milvus 用来保护系统在流量突发时免受内存溢出(OOM)和崩溃困扰的新机制。通过该机制,您可以控制数据插入、搜索速率和内存使用。
集合生存时间(TTL):在之前的版本中,Milvus 仅支持设置集群层级的 TTL。Milvus 现已支持在创建或修改集合时设置该集合的 TTL。在设置了 TTL 的集合中的数据会在 TTL 结束后到期。通过这一特性,用户可以更精确地管理数据。
基于磁盘的近似近邻搜索索引(Beta):Milvus 现已支持 DiskANN,用于实现基于磁盘的大规模数据集索引能力。DiskANN 是一种基于 Vamana 图像对常驻固态磁盘的数据集进行近似近邻搜索的索引算法。使用该算法可节省大约 10 倍的内存使用量。
数据备份工具(Beta):Milvus 2.2 提供全新的数据备份工具,并支持使用命令行和调用 API 的方式实现数据库备份和恢复。
除了上述新特性外,Milvus 2.2 修复了部分 bug,并进行了诸多改进以增强 Milvus 的稳定性、可观察性和性能。
Milvus 2.2 Release Notes : https://milvus.io/docs/release_notes.md#v220
点击可阅读文章《Milvus 2.2 版本发布!》
02.Milvus 2.2.1 和 2.2.2:小版本发布,主打修复问题
Milvus 2.2.1 和 2.2.2 都是小版本发布,修复了旧版本中的关键问题,并新增部分特性。
Milvus 2.2.1:
-
支持 Pulsar 租户和身份验证
-
在 etcd 配置中支持传输层安全性协议(TLS)
-
搜索性能提高 30% 以上
-
优化调度器(scheduler)并提升任务合并概率
-
修复了多个漏洞,包括:在索引标量字段上过滤失败、创建索引失败时引发的 Index Node 崩溃
Milvus 2.2.2:
-
修复 Proxy 未更新 Shard leader 缓存的问题
-
修复被释放的collection/partition中加载数据未被清理的问题
-
修复加载计数未被及时清理的问题
Milvus 2.2.1 Release Notes:https://milvus.io/docs/release_notes.md#v221
Milvus 2.2.2 Release Notes:https://milvus.io/docs/release_notes.md#v222
03.Milvus 2.2.3:安全、稳定、升级友好
Milvus 2.2.3 主要增强了系统的安全性、稳定性和可用性,并推出了两个重要的特性。
-
不停机滚动升级:Milvus v2.2.3 版本上线了滚动升级能力。这意味着在升级过程中,用户的查询、搜索请求不会中断。
-
Coordinator 高可用(HA):Milvus coordinator 能够以主备节点的模式工作,降低单点故障的风险。Coordinator 高可用可以大幅缩短系统恢复时间。如果意外发生灾难,系统只需最多30秒便可恢复。
除此以外,Milvus 2.2.3 版本还进行了改进和修复多个漏洞,包括:批量导入(bulk insert)性能大幅提升、Metrics 信息优化、查询性能提升、内存(memory)占用降低、元数据存储性能提升等。
Milvus 2.2.3 Release Notes:https://milvus.io/docs/release_notes.md#v223
点击可阅读文章《Milvus 新版本来啦!首席工程师带你划重点:安全、稳定、升级友好》
04.Milvus 2.2.4:资源隔离、多云、高效
Milvus 2.2.4 是 Milvus 2.2 的一次小版本升级。Milvus 2.2.4 推出了四个新特性,并提升了性能、可靠性和效率,降低资源消耗。
-
资源组:Milvus 支持将多个 Query Node 分到其他资源组中,从而完全隔离对不同资源组中物理资源的访问。
-
重命名集合(collection):新增集合重命名 API,可用于更改集合名称,使得集合管理变得更灵活。
-
支持 Google Cloud Storage:Milvus 现在支持 Google Cloud Storage 作为对象存储,使用 Google Cloud 的用户可以无缝对接 GCP 的对象存储。
-
搜索(Search) 和查询(Query) API 的新选项:我们在查询参数中新增了跳过 Growing 数据的选项,启用此选项将跳过对所有 Growing 数据的搜索,在搜索插入场景下提供更好的搜索性能。
Milvus 2.2.4 Release Notes:https://milvus.io/docs/release_notes.md#v224
点击可阅读文章《又见版本升级!一句话概括 Milvus 2.2.4:资源隔离、多云、高效》
05.Milvus v2.2.6:稳定性升级
Milvus 2.2.6 版本修复了众多关于稳定性问题。
性能强化
当延迟不少于 5 秒时,为查询/搜索添加了慢日志性能。Milvus 默认日志级别是 info,查询链路并发大、性能敏感,所以查询链路的日志都是debug级别,在生产环境无法看到查询链路的日志。如果用户要统计慢查询就无从下手,MySQL的慢查询日志就是个很好的范例,所以 Milvus 也在日志中加入了慢查询记录。
解决的关键问题
-
修复了DataCoord GC失败的问题
-
修复了在创建 collection 时传递的索引参数将覆盖后续 create_index 操作中传递的参数的问题
-
解决了 RootCoord 中出现消息积压导致整个系统延迟增加的问题
-
修正了指标 RootCoord InsertChannelTimeTick 的准确性
-
解决 Proxy 报告时间戳可能在某些情况下停止工作的问题
-
修复 Coordinator 角色在重启过程中可能会 panic 的问题
-
修复由于 etcd 重新启动而导致垃圾回收 goroutine 异常退出,留下检查点等问题
Milvus 2.2.6 Release Notes:https://milvus.io/docs/release_notes.md#v226
从 Milvus 2.2 到 2.2.6 的最新版本,每一次的版本升级背后都离不开用户的支持与建议,我们始终坚持为用户提供最前沿的解决方案,为各个领域的应用提供支持。提前预告一下,Milvus 2.2.7 已在紧锣密鼓地准备中,即将发版,敬请期待!
本文由 mdnice 多平台发布
相关文章:
从 Milvus 2.2 到 2.2.6,我们是如何持续稳定升级的
最近,Milvus 发布了 2.2.6 版本,在修复了一些 bug 后,Milvus 变得越发稳定。 事实上,自 Milvus 升级至 2.X 版本以来,我们一直在努力改进及优化,推出了诸如从文件中批量导入数据、基于磁盘的近似最近邻&…...
自学python有推荐的么
大学生自学那必然是首推B站大学哇能称之为大学不是没有道理的,看看各个领域的学习分享都是非常多的,关键是看着弹幕就感觉像是在和一帮志同道合的小伙伴一起学习,自学的道路也不再孤单了,遇见不会的没准还能在弹幕和评论区找到答案…...
设计模式 --- 行为型模式
一、概述 行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分…...
防御式编程
防御式编程是提高软件质量技术的有益辅助手段。就是一开始不要在代码里引入错误。使用迭代式设计、编码前写伪代码,写测试用例,助于防止引入错误。 断言 断言是用来检查永远不应该发生的非正常情况,处理这些错误的代码 错误处理技术ÿ…...
导出pdf Puppeteer 和 wkhtmltopdf区别
您可以使用第三方的 PDF 生成库来将动态页面导出为 PDF 文件。目前比较常见的是使用 Headless Chrome 或 Puppeteer 这类工具将页面转换为 PDF 文件,具体步骤如下: 安装 Headless Chrome 或 Puppeteer。 使用框架调用后端接口获取数据,渲染出…...
sequelize + Nodejs + MySQL 的简单用法
How to Use Sequelize ORM in NodeJS - Tutorial 1 Sequlize 简介 Sequelize 是最流行的可以与 Nodejs 一起使用的一种关系数据库 ORM (Object-relational mapping 对象关系映射),Mongoose 是 MongoDB 的 ORM. Sequelize 的作用,简单地说,就…...
Android Jetpack - Navigation 组件:进行应用程序导航
一. Navigation 组件的介绍 1.1 什么是 Navigation 组件 Navigation 组件是一种 Android Jetpack 库,它可以帮助开发者轻松地实现应用程序中的导航功能。导航组件包含多个类和组件,包括导航图、目的地、导航控制器等,可以帮助我们管理应用程…...
MySQL的binlog原理和它的几种使用方法
MySQL中的二进制日志(binlog)是一种用于记录数据库操作的日志文件,它可以记录MySQL服务器接收到的所有修改数据库的语句,例如INSERT、UPDATE和DELETE等语句。二进制日志对于备份和恢复数据库、复制数据库和进行数据分析等操作非常…...
40岁以上的程序员还容易找到工作吗?聊聊我自己的亲身经历
今天我们来讨论一个比较热门的话题,那就是程序员。如果到了40岁以上还容易找到工作吗?这个问题呢,其实是一个非常现实的问题,也是我们程序员非常关心的一个问题。因为我们每一个程序员,他都会有到40岁的那一天。 首先…...
Class类
package com.hspedu.reflection.class_;import com.hspedu.Cat;import java.util.ArrayList;/*** author 韩顺平* version 1.0* 对Class类特点的梳理*/ public class Class01 {public static void main(String[] args) throws ClassNotFoundException {//看看Class类图//1. Cla…...
Python小姿势 - 可选知识点:
可选知识点: 列表推导式 列表和字典推导式 字典推导式 生成器表达式 带条件的生成器表达式 解析XML 解析JSON 使用Requests和BeautifulSoup爬虫 Python并发编程 Python多线程编程 Python多进程编程 Python异步编程 Python装饰器 Python闭包 Python模块化 Python类和…...
Javaee Spring的AOP简介
一.Spring的AOP简介 1.1 什么是AOP AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代 理实现程序功能的统一维护的一种技术。AOP 是 OOP 的延续,是软件开发中的一个热点,也是…...
基于ansible初始化linux服务器基础环境。
大家好,今天我要和大家分享一个关于搭建centos环境的新方法。 以前我们经常会看到一些文章介绍如何搭建centos环境,但很多时候都会出现一些问题。不过现在有了一种新的方法,就是使用ansible脚本来实现。 虽然这种方法仅适用于centos7&#…...
leetcode-数据库题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 175. 组合两个表176. 第二高的薪水177. 第N高的薪水178. 分数排名181. 超过经理收入的员工182. 查找重复的电子邮箱183. 从不订购的客户 175. 组合两个表 select p…...
[元来学NVMe协议] NVMe IO 指令集(NVM 指令集)| Flush 命令
声明 主页:元存储的博客_CSDN博客 依公开知识及经验整理,如有误请留言。 个人辛苦整理,付费内容,禁止转载。 内容摘要 前言 NVMe2.0 定义的三类命令集: 管理命令集、IO命令集、Fabrics命令集 Admin Command Set (管理命令集):用于控制器的管理,如创建/销毁IO提交队列…...
信息的相关性和冗余度:信息在整个文明中的作用
文章目录 I 古埃及的象形文字1.1 罗塞塔石碑1.2 古埃及文字音节和希腊字母的对应表1.3 破解古埃及文字 I 古埃及的象形文字 1.1 罗塞塔石碑 这个石碑是在公元前196年埃及国王托勒密五世加冕一周年的诏书。 在此前大约一百年,埃及已经被来自希腊北方城邦的亚历山大…...
python数据结构与算法-动态规划(最长公共子序列)
一、最长公共子序列问题 1、问题概念 一个序列的子序列是在该序列中删去若干元素后得 到的序列。 例如:"ABCD”和“BDF”都是“ABCDEFG”的子序列。 最长公共子序列(LCS) 问题: 给定两个序列X和Y,求X和Y长度最大的公共子字列。 例:X"ABBCBDE”…...
Java版企业电子招投标系统源码 Spring Cloud+Spring Boot 电子招标采购系统功能清单
一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点:对草稿进行编辑&#x…...
【c语言】函数的基本概念 | 函数堆栈调用原理
创作不易,本篇文章如果帮助到了你,还请点赞支持一下♡>𖥦<)!! 主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…...
Vue.prototype 详解及使用
前言: 我们可能会在很多组件里用到数据/实用工具,但是不想污染全局作用域。这种情况下,可以通过在原型上定义它们使其在每个 Vue 的实例中可用。 1. 基本示例 在main.js中添加一个变量到 Vue.prototype Vue.prototype.$appName My App这…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
STM32F1 本教程使用零知标准板(STM32F103RBT6)通过I2C驱动ICM20948九轴传感器,实现姿态解算,并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化,适合嵌入式及物联网开发者。在基础驱动上新增…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
Python环境安装与虚拟环境配置详解
本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南,适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者,都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...
CTF show 数学不及格
拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 用IDA Pro 64 打开这个文件 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 根据题目…...
20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题
20250609在荣品的PRO-RK3566开发板的Android13下解决串口可以执行命令但是脚本执行命令异常的问题 2025/6/9 20:54 缘起,为了跨网段推流,千辛万苦配置好了网络参数。 但是命令iptables -t filter -F tetherctrl_FORWARD可以在调试串口/DEBUG口正确执行。…...
