You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Current state: Under Discussion

ISSUE: https://github.com/milvus-io/milvus/issues/9481

PRs: 

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

Released:

Summary

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 has flushed segment to persistent storage, query node will load the segment's binlogs from the persistent storage and replaces the growing segment with sealed segment.
  2. load balance:Automatically balance all sealed segments on query nodes to avoid idle computing and storage resources,and speed up the overall query.

Public Interfaces

Handoff and load balance are transparent to users.

Design Details

query node在逻辑上分historical和streaming两部分分别管理sealed segments和growing segments,如下图所示,G3表示growing segment 3, S8表示sealed segment 8


基于handoff和load balance的以上流程,可以总结如下:


  • No labels