最近,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 多平台发布