从 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这…...

音视频八股文(3)--ffmpeg常见命令(2)
07-ffplay命令播放媒体 播放本地文件 播放本地 MP4 视频文件 test.mp4 的命令,从第 2 秒位置开始播放,播放时长为 10 秒,并且在窗口标题中显示 “test time”: ffplay -window_title "test time" -ss 2 -t 10 -autoe…...

使用bert4keras出现的问题(Process finished with exit code -1073741819 (0xC0000005))
1、环境 python 3.7.12 tensorflow 1.15 keras 2.3.1 bert4keras 0.9.7 protobuf 3.19.0 numpy 1.16.5 2、出现问题 numpy版本不兼容问题所以你就直接按照我的版本就可以了(numpy 1.16.5) Process finished with exit code -1073741819 (0xC0000005) …...

python协程实战
协程简介 协程(Coroutine)又称微线程、纤程,协程不是进程或线程,其执行过程类似于 Python 函数调用,Python 的 asyncio 模块实现的异步IO编程框架中,协程是对使用 async 关键字定义的异步函数的调用; 一个进程包含多个线程,类似…...

【论文笔记】VideoGPT: Video Generation using VQ-VAE and Transformers
论文标题:VideoGPT: Video Generation using VQ-VAE and Transformers 论文代码:https://wilson1yan. github.io/videogpt/index.html. 论文链接:https://arxiv.org/abs/2104.10157 发表时间: 2021年9月 Abstract 作者提出了…...

scala之基础面向对象
scala 既是面向对象 也是函数式编程 从Java 发展而来,依赖JVM环境 一、 scala 在linux中运行 scala 模式中直接编写运行 scala文件,load执行 scala编译程序 编译 运行 scala java 二、scala 数据类型 基础数据类型 val 不可变变量 函数式编程 …...

Qt5.12实战之多线程编程概念
1.为什么要使用多线程? a. 基于线程,同时处理多个任务,软件响应更灵敏 b.充分利用CPU的多核心功能增加应用运行效率 c.多线程在同一进程间使用共享通信更加高效 d.多个线程之间进行切换比多个进程之间进行切换,线程开销更少. 2.操作系统与进程关系 a. MS-DOS系统 属于单进程…...

格式化数据恢复怎么做?超实用的3种方法在这!
案例:格式化数据怎么恢复 【我的电脑前段时间中病毒了,无奈之下我只能将其格式化,但是很多重要的文件和图片之类的也一起被删除了,有什么方法可以恢复这些格式化的数据吗?非常着急!】 格式化数据恢复&…...

【Java|golang】1105. 填充书架---动态规划
给定一个数组 books ,其中 books[i] [thicknessi, heighti] 表示第 i 本书的厚度和高度。你也会得到一个整数 shelfWidth 。 按顺序 将这些书摆放到总宽度为 shelfWidth 的书架上。 先选几本书放在书架上(它们的厚度之和小于等于书架的宽度 shelfWidt…...

linux基础命令
linux基础命令 一、linux命令 熟悉账务linux命令对运维的好处是巨大的,只有熟悉了命令咱们在运维的操作上才能如鱼得水。 系统信息 arch #显示机器的处理器架构(1) uname -m #显示机器的处理器架构(2) uname -r #显示正在使用的内核版本 dmidecode -q …...

【三十天精通Vue 3】 第十八天 Vue 3的国际化详解
✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3 文章目录 引言一、Vue 3 国际化概述1.1 国际化的概念1.2 国际化的作用1.3 V…...