Service de diffusion en continu

Le service de diffusion en continu est un concept pour le module de système de diffusion en continu interne de Milvus, construit autour du journal en avance sur l'écriture (WAL) pour prendre en charge diverses fonctions liées à la diffusion en continu. Il s'agit notamment de l'ingestion/souscription de données en continu, de la reprise sur panne de l'état de la grappe, de la conversion des données en continu en données historiques et des requêtes de données croissantes. Sur le plan architectural, le service de diffusion en continu se compose de trois éléments principaux :

Streaming Distributed Arc Arc distribué de diffusion en continu

  • Coordinateur de streaming: Un composant logique dans le nœud coordinateur. Il utilise Etcd pour la découverte de services afin de localiser les nœuds de diffusion en continu disponibles et est chargé de lier le WAL aux nœuds de diffusion en continu correspondants. Il enregistre également le service pour exposer la topologie de distribution des WAL, ce qui permet aux clients de streaming de connaître le nœud de streaming approprié pour un WAL donné.

  • Cluster de nœuds de streaming: Il s'agit d'une grappe de nœuds de diffusion en continu responsables de toutes les tâches de traitement de la diffusion en continu, telles que l'ajout de fichiers WAL, la récupération de l'état, l'interrogation de données croissantes.

  • Client de streaming: Un client Milvus développé en interne qui encapsule des fonctionnalités de base telles que la découverte de services et les contrôles de disponibilité. Il est utilisé pour lancer des opérations telles que l'écriture de messages et l'abonnement.

Message

Le service de diffusion en continu est un système de diffusion en continu axé sur les journaux, de sorte que toutes les opérations d'écriture dans Milvus (telles que DML et DDL) sont abstraites en tant que messages.

  • Le service de diffusion en continu attribue à chaque message un champ Timestamp Oracle (TSO), qui indique l'ordre du message dans le WAL. L'ordre des messages détermine l'ordre des opérations d'écriture dans Milvus. Cela permet de reconstruire le dernier état de la grappe à partir des journaux.

  • Chaque message appartient à un VChannel (Virtual Channel) spécifique et conserve certaines propriétés invariantes au sein de ce canal afin de garantir la cohérence des opérations. Par exemple, une opération Insert doit toujours se produire avant une opération DropCollection sur le même canal.

L'ordre des messages dans Milvus peut ressembler à ce qui suit :

Message Order Ordre des messages

Composant WAL

Pour prendre en charge l'évolutivité horizontale à grande échelle, le WAL de Milvus n'est pas un fichier journal unique, mais un composite de plusieurs journaux. Chaque journal peut indépendamment prendre en charge la fonctionnalité de diffusion en continu pour plusieurs canaux virtuels. À tout moment, un composant WAL est autorisé à fonctionner sur un seul nœud de streaming, cette contrainte étant garantie à la fois par un mécanisme de clôture du stockage wal sous-jacent et par le coordinateur de streaming.

Les autres caractéristiques du composant WAL sont les suivantes

  • Gestion du cycle de vie des segments: Basé sur la politique telle que les conditions de mémoire/la taille du segment/le temps d'inactivité du segment, le WAL gère le cycle de vie de chaque segment.

  • Prise en charge des transactions de base: Comme chaque message a une taille limite, le composant WAL prend en charge des transactions simples pour promettre des écritures atomiques au niveau du canal V.

  • Écriture de journaux à distance à haute concordance: Milvus prend en charge les files d'attente de messages distants de tiers en tant que stockage WAL. Pour atténuer la latence aller-retour (RTT) entre le nœud de streaming et le stockage WAL distant afin d'améliorer le débit d'écriture, le service de streaming prend en charge les écritures de journaux simultanées. Il maintient l'ordre des messages par TSO et la synchronisation TSO, et les messages dans WAL sont lus dans l'ordre TSO.

  • Tampon d'avance sur l'écriture: Une fois que les messages sont écrits dans le WAL, ils sont temporairement stockés dans une mémoire tampon d'écriture. Cela permet de lire les journaux sans avoir à récupérer les messages dans le stockage WAL distant.

  • Prise en charge de plusieurs types de stockage WAL: Woodpecker, Pulsar, Kafka. En utilisant Woodpecker avec le mode zéro disque, nous pouvons supprimer la dépendance au stockage WAL distant.

Stockage de récupération

Le composant Recovery Storage s'exécute toujours sur le nœud de streaming où se trouve le composant WAL correspondant.

  • Il est chargé de convertir les données de streaming en données historiques persistantes et de les stocker dans le stockage d'objets.

  • Il gère également la récupération de l'état en mémoire du composant WAL sur le nœud de streaming.

Recovery Storage Stockage de récupération

Délégateur de requêtes

Le délégué aux requêtes s'exécute sur chaque nœud de diffusion en continu et est chargé d'exécuter des requêtes incrémentielles sur un seul bloc de données. Il génère des plans d'interrogation, les transmet aux nœuds d'interrogation concernés et agrège les résultats.

En outre, le délégué aux requêtes est chargé de diffuser les opérations de suppression aux autres nœuds de requêtes.

Le délégué aux requêtes coexiste toujours avec le composant WAL sur le même nœud de diffusion en continu. Mais si la collection est configurée en multiréplique, N-1 délégués seront déployés sur les autres nœuds de diffusion en continu.

Durée de vie du WAL et attente de disponibilité

En séparant les nœuds de calcul du stockage, Milvus peut facilement transférer le WAL d'un nœud de diffusion en continu à un autre, ce qui permet d'obtenir une haute disponibilité du service de diffusion en continu.

wal lifetime Durée de vie du WAL

Attente de disponibilité

Lorsque le WAL est transféré vers un nouveau nœud de diffusion en continu, le client constate que l'ancien nœud de diffusion en continu rejette certaines demandes. Pendant ce temps, le WAL sera récupéré au nouveau nœud de diffusion en continu, et le client attendra que le WAL du nouveau nœud de diffusion en continu soit prêt à servir.

wait for ready attendre que le WAL soit prêt

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Cette page a-t - elle été utile ?