Milvus 新版本来啦!首席工程师带你划重点:安全、稳定、升级友好

2023-08-26 08:30:59 浏览数 (1)

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 的问题

0 人点赞