Milvus 又又又又出新版本了!
Milvus 2.2.3 版本是 2.2 系列的小版本升级,尽管是小版本的更新,但是依然干货满满:
首先是带来了社区中呼声很高的 coordinator 节点的高可用能力;其次还新增了不停机滚动升级的功能;此外,在稳定性、性能方面都有着持续的提升。
接下来,就让我们一起来看一下具体变化:
不兼容变更
为了提升系统稳定性,collection 支持的最大字段个数从 256 降低到了 64。
新特性
Coordinator HA 高可用
在 Milvus 2.x 的架构中,QueryCoord、DataCoord 等 coordinator 节点承担了元数据管理、系统调度能力。长期以来,coordinator 节点一直是单点状态,一旦这些 coordinator 节点卡住或宕机,写入、查询流程就会卡住,需要运维同学介入才能修复。经过大规模测试后,我们终于在 2.2.3 版本中完成了 Coordinator HA 功能的上线。
例如需要 QueryCoord 高可用,则打开配置项 queryCoord.enableActiveStandby=true
,部署时启动两个 QueryCoord 节点,两者会按照启动先后顺序成为主备节点,当主节点不可用时,备用节点会成为新的 coordinator,这大大增强了系统的可用性。
此外,RootCoord、QueryCoord、DataCoord、IndexCoord 也都可以根据实际情况按需开启主备模式。
不停机滚动升级
随着 Milvus 在用户生产环境中逐渐落地,如何在不影响业务用户的前提下优雅升级、尽快享受新版 Milvus 的特性成为迫切的需求。对此,我们在 2.2.3 版本上线了滚动升级能力。这意味着在升级过程中,用户的查询、搜索请求不会中断。
注意:只有通过 helm 部署的 Milvus 集群支持滚动升级,Operator 部署暂不支持。
稳定性提升
Bulk-insert 性能大幅提升
Bulk-insert 是 2.2 系列新引入的功能,通过 Bulk-insert,用户可以将数据批量导入到 Milvus 中,能大大提升数据准备的效率。而在新版本中,Milvus 团队持续改进 Bulk-insert 的性能,具体内容如下:
流式数据导入和内存占用优化
JSON parser 性能优化
导入过程中进度反馈
流式读取 numpy 数据
Metrics 信息优化
数据库的可观测性对运维至关重要,也是 Milvus 团队持续关注的重点。在新版本中,我们增加了众多新的 metrics 指标,可以在 Prometheus 的监控面板中查看。具体新增 metrics 如下:
元数据指标(meta):kv_size、request_latency、op_count
存储指标 (storage):kv_size、request_latency、op_count
消息指标 (msgstream):request_latency、op_count
查询性能提升
我们通过性能剖析,发现了部分性能优化点,通过这些优化,2.2.3 版本在性能上又有了喜人的进展:
Standalone 模式跳过不必要的 grpc 调用
内核升级 Knowhere 版本,使用线程池控制并发,减少 growing segment 对性能的影响
修复 string 类型字段被填充两次的问题
优化 bitset 使用,提升效率
其他优化
Memory 占用降低
元数据访问性能提升
问题修复
除了性能优化,我们也修复了一些问题(30+),例如:
QueryCoordV2 的基础上又进一步改进了元数据同步方案,稳定性进一步提升,在之前版本中出现的 load 失败、元数据不一致导致的查询失败问题基本绝迹
修复 Proxy 元数据缓存失效问题
修复 Checkpoint 推进失败、Checkpoint 和 GC 冲突的问题
修复 embedded etcd 无法使用的问题
修复多个查询失败导致 QueryNode panic 的问题
点击“阅读原文”了解更多信息!
Zilliz 是向量数据库系统领域的开拓者和全球领先者,研发面向 AI 生产系统的向量数据库系统。Zilliz 以发掘非结构化数据价值为使命,致力于打造面向 AI 应用的新一代数据库技术,帮助企业便捷地开发 AI 应用。Zilliz 的产品能显著降低管理 AI 数据基础设施的成本,帮助 AI 技术赋能更多的企业、组织和个人。