Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Keywords: load balance, handoff, query node, query coord, sealed segment

Released:

Summary

这篇文章主要介绍为什么需要在querynode上handoff和load balance segment,以及提出一种解决方案讨论如何在不中断查询的情况下handoff和load balance segment

Motivation

This article focuses on the importance of handoff and load balance segment features, as well as proposing a scenario for handoff and load balance segments without interrupting queries.

Motivation

The query node of milvus currently has the following issues:

  1. In the load collection/partition process, query nodes not only load the sealed segments, but also watch dmChannels so that they can receive vectors inserted in real time, and if new vectors are continuously inserted after the load collection operation, the query nodes will create a large number of growing segments, which can only service query requests in a near-brutal manner. At the same time, data node may have flushed these vectors into persistent storage and created the corresponding index.
  2. Query nodes may experience unbalanced sealed segments during dynamic expansion. This results in a relatively slow query for high-load query node, which will becomes the final bottleneck for queries

So we want to do the following:

  1. handoff:After datanode flushes segment to persistent storage, query node loads the segment from the persistent storage and replaces the growing segment with sealed segment.
  2. load balance:Automatically balance allsealed segments on query nodes to avoid some of the idle computing and storage resources,and speed up the overall query.
  3. 在load collection/partition过程中,query nodes不仅要加载sealed segments,而且要watch dmChannels然后才能接收到实时插入的向量,如果load collection后持续插入新的向量,query node就会产生大量的growing segments,这些growing segments只能以近乎暴搜的方式服务查询请求。与此同时,datanode可能已经将这些数据flush到持久化存储中并创建好相应索引
  4. query nodes在动态扩缩容的过程中

Public Interfaces


Design Details