共计 1847 个字符,预计需要花费 5 分钟才能阅读完成。
作者:Zilliz 首席工程师 焦恩伟
Milvus 2.2.4 来啦!
通过几周的开发,Milvus 2.2.4 版本于近期正式上线。Milvus 2.2.4 是 Milvus 2.2.0 的一次小版本升级,版本虽小,却为社区带来了不少实用的新个性,包含基于命名空间的资源分组、汇合级别的物理隔离和汇合重命名等,同时新版本原生反对了 GCP,其余云的原生反对也在紧锣密鼓的进行中。
此外,Milvus 2.2.4 还解决了与滚动降级、故障复原和负载平衡相干的若干问题。这些问题的修复有助于进步零碎的稳定性、可靠性以及缩短故障复原工夫。
总结下来一句话——资源隔离、多云、高效!
新个性
资源组
很多用户把 Milvus 作为向量中台 或 AI 中台的重要组成部分,作为中台来说,必不可少的性能就是多租户和资源隔离、故障隔离。在没有资源组性能之前,很多用户为了保障资源、故障隔离,会为每一位业务用户启动一套 Milvus 集群,这无疑是一种浪费资源的体现,因而资源组和多租户的需要在社区中始终呼声很高。作为 Milvus 的用户必定心愿一步到位,如果 Milvus 能间接把资源组性能做好是最现实的状态,然而资源组是更偏平台、治理的性能,而且需要繁多、众口难调。
Milvus 作为一款数据库产品,通过资源组对外提供资源隔离的能力,平台侧基于资源隔离的能力对业务用户提供多租户的能力,是一种很好的集成形式。对于资源的具体介绍,详见文档 https://milvus.io/docs/resource_group.md
Collection Rename
在生产应用数据库的过程中,表 Schema 变更是个常见的运维操作,Milvus 在 2.2.4 版本中先是反对了 collection rename 操作,后续更细粒度的 Schema 变更,如加减 Column、扭转 Column 的信息等能力正在设计和开发过程中,会在后续版本中继续迭代。Rename Collection 的应用形式见文档 https://milvus.io/docs/rename_collection.md
Search 和 Query API 的新选项
在 Milvus 的数据架构中,数据分为 Growing 数据和 Sealed 数据,顾名思义,Sealed 数据是曾经长久化并且建好索引的数据块,而 Growing 数据则没有索引,在查问时对于 Growing 数据使用暴力搜寻的形式查找 TopK,再和 Sealed 数据中的 TopK 后果进行合并。
不难发现如果 Growing 的数据很多或写入频率过高的话,势必会对查问性能有较大的影响。对于谋求低提早、查问后果稳固的用户来讲,Growing 数据的多少间接影响了零碎的可用性。在不少用户场景中,他们对于实时数据没有那么高的要求。基于以上需要,咱们在查问参数中新增了跳过 Growing 数据的选项,启用此选项将跳过对所有 Growing 数据的搜寻,在搜寻插入场景下提供更好的搜寻性能。
反对 Google Cloud Storage
Milvus 当初反对 Google Cloud Storage 作为对象存储,应用 Google Cloud 的用户能够无缝对接 GCP 的对象存储。
系统优化
性能晋升
通过性能分析,咱们发现了泛滥性能优化点,通过这些优化,Milvus 2.2.4 版本在性能上又有了长足的停顿:
- 在查问阶段跳过计算 count all bitsets
- Collection load 过程中缩小内存拷贝
- 查问过程中跳过为长度为 0 的数据申请内存
- 降级 Knowhere 至 1.3.9,减速 IVF 查问
- 优化查问后果合并策略
- 优化对象存储拜访的 IO,缩小与对象存储间的 rpc 调用
内存优化
在内存优化方面,咱们也进行了相应的晋升:
- 减少了 datanode 内存占用过大时,强制 flush 的策略
- 依照 16MB 切割 index 文件,避免内存占用过大
其余优化
此外,咱们也对新版本做了其余优化: - 调整 RockMQ page 大小至 256 M,缩小 standalone 模式下的磁盘占用
- 调整 etcd 超时工夫至 20 s,缩小故障复原工夫
问题修复
在降级新版本的过程中,Milvus 2.2.4 也致力修复了一些问题,数量超过 40,在此仅 highlight 一些 critical 的问题(感激测试团队能在公布前发现如此多的问题)。
- 修复在 DiskANN 索引下,QueryNode 无奈重启问题
- 修复 DataCoord 在 watch etcd 事件时的一系列超时问题
- 修复因为负载平衡策略导致的 QueryCoord panic 问题
- 修复空 segmen t 状况下,DataCoord 读取 panic 的问题
本文由 mdnice 多平台公布