Woodpecker
Dans Milvus 2.6, Woodpecker remplace Kafka et Pulsar par un système WAL (write-ahead log) spécialement conçu pour le cloud. Conçu pour le stockage d'objets, Woodpecker simplifie les opérations, maximise le débit et évolue sans effort.
Les objectifs de conception de Woodpecker :
Débit maximal dans les environnements en nuage
Journalisation durable, uniquement par appendice, pour une récupération fiable
Frais généraux d'exploitation minimaux sans disques locaux ni courtiers externes
Architecture sans disque
L'innovation principale de Woodpecker est son architecture à disque zéro :
- Toutes les données de journalisation sont stockées dans un système de stockage d'objets dans le nuage (comme Amazon S3, Google Cloud Storage ou Alibaba OS).
- Les métadonnées sont gérées par des magasins de clés-valeurs distribués comme etcd.
- Aucune dépendance à l'égard d'un disque local pour les opérations de base
couches de woodpecker
Composants de l'architecture
Un déploiement standard de Woodpecker comprend les composants suivants :
- Client: Couche d'interface pour l'émission de demandes de lecture et d'écriture
- LogStore: gère la mise en mémoire tampon des écritures à grande vitesse, les téléchargements asynchrones vers le stockage et le compactage des journaux
- Backend de stockage: Prend en charge les services de stockage évolutifs et peu coûteux tels que S3, GCS et les systèmes de fichiers tels que EFS.
- Etcd: Stocke les métadonnées et coordonne l'état des journaux sur les nœuds distribués.
Modes de déploiement
Woodpecker propose deux modes de déploiement pour répondre à vos besoins spécifiques :
MemoryBuffer - Léger et sans maintenance
Le mode MemoryBuffer offre une option de déploiement simple et légère dans laquelle le client intégré de Woodpecker met temporairement en mémoire tampon les écritures entrantes et les évacue périodiquement vers un service de stockage d'objets dans le nuage. Dans ce mode, la mémoire tampon est intégrée directement dans le client, ce qui permet une mise en lot efficace avant le transfert vers S3. Les métadonnées sont gérées à l'aide d'etcd pour assurer la cohérence et la coordination. Ce mode convient mieux aux charges de travail lourdes en lots dans les déploiements à petite échelle ou les environnements de production qui privilégient la simplicité aux performances, en particulier lorsqu'une faible latence d'écriture n'est pas essentielle. La latence d'écriture dans ce mode est généralement comprise entre 200 et 500 ms.
déploiement du mode mémoire woodpecker
QuorumBuffer - Optimisé pour une faible latence et une grande durabilité
Le mode QuorumBuffer est conçu pour les charges de travail en lecture/écriture sensibles à la latence et à haute fréquence, qui nécessitent à la fois une réactivité en temps réel et une forte tolérance aux pannes. Dans ce mode, le client de Woodpecker interagit avec un système quorum à trois répliques pour fournir une mémoire tampon d'écriture à grande vitesse, garantissant une forte cohérence et une haute disponibilité par le biais d'un consensus distribué.
Une écriture est considérée comme réussie une fois que le client a répliqué avec succès les données sur au moins deux des trois nœuds quorum, ce qui se fait généralement en quelques millisecondes, après quoi les données sont évacuées de manière asynchrone vers le stockage d'objets dans le nuage pour une durabilité à long terme. Cette architecture minimise l'état des nœuds, élimine le besoin de gros volumes de disques locaux et évite les réparations anti-entropie complexes souvent nécessaires dans les systèmes traditionnels basés sur le quorum.
Il en résulte une couche WAL rationalisée et robuste, idéale pour les environnements de production critiques où la cohérence, la disponibilité et la restauration rapide sont essentielles.
déploiement du mode quorum de woodpecker
Tests de performance
Nous avons effectué des tests complets pour évaluer les performances de Woodpecker dans une configuration à un seul nœud, un seul client et un seul flux de logs. Les résultats sont impressionnants par rapport à Kafka et Pulsar :
| Système | Kafka | Pulsar | WP Minio | WP Local | WP S3 |
|---|---|---|---|---|---|
| Débit | 129,96 Mo/s | 107MB/s | 71MB/s | 450MB/s | 750MB/s |
| temps de latence | 58ms | 35ms | 184 ms | 1,8ms | 166 ms |
Pour le contexte, nous avons mesuré les limites de débit théoriques de différents backends de stockage sur notre machine de test :
- MinIO : ~110 Mo/s
- Système de fichiers local : 600-750 Mo/s
- Amazon S3 (instance EC2 unique) : jusqu'à 1,1 Go/s
Fait remarquable, Woodpecker a constamment atteint 60 à 80 % du débit maximal possible pour chaque backend, ce qui représente un niveau d'efficacité exceptionnel pour un intergiciel.
Principales informations sur les performances
- Mode système de fichiers local : Woodpecker a atteint 450 Mo/s, soit 3,5 fois plus vite que Kafka et 4,2 fois plus vite que Pulsar, avec une latence ultra-faible de seulement 1,8 ms, ce qui en fait l'outil idéal pour les déploiements haute performance à un seul nœud.
- Mode de stockage dans le nuage (S3) : En écrivant directement sur S3, Woodpecker a atteint 750 Mo/s (environ 68 % de la limite théorique de S3), soit 5,8 fois plus que Kafka et 7 fois plus que Pulsar. Bien que la latence soit plus élevée (166 ms), cette configuration offre un débit exceptionnel pour les charges de travail par lots.
- Mode de stockage d'objets (MinIO) : Même avec MinIO, Woodpecker a atteint 71 Mo/s, soit environ 65 % de la capacité de MinIO. Ces performances sont comparables à celles de Kafka et de Pulsar, mais avec des besoins en ressources nettement inférieurs.
Woodpecker est particulièrement optimisé pour les écritures simultanées de gros volumes, pour lesquelles le maintien de l'ordre est essentiel. Et ces résultats ne reflètent que les premières étapes du développement - les optimisations en cours dans la fusion des E/S, la mise en mémoire tampon intelligente et la prélecture devraient pousser les performances encore plus près des limites théoriques.
Avantages opérationnels
L'architecture cloud-native de Woodpecker offre des avantages opérationnels significatifs :
- Gestion zéro du stockage local: Élimination de la gestion des volumes de disques, de la configuration RAID et des défaillances matérielles.
- Mise à l'échelle automatique: Le stockage évolue avec le stockage d'objets dans le nuage sans planification de la capacité
- Rentabilité: Stockage à la demande avec hiérarchisation et compression automatiques
- Haute disponibilité: Exploitation de la durabilité 11-9 des fournisseurs de cloud avec récupération rapide
- Déploiement simplifié: Deux modes de déploiement (MemoryBuffer/QuorumBuffer) pour répondre aux différents besoins opérationnels.
- Convivialité pour les développeurs: Configuration plus rapide de l'environnement et architecture cohérente dans tous les environnements
Ces avantages rendent Woodpecker particulièrement précieux pour les charges de travail critiques de RAG, d'agents d'intelligence artificielle et de recherche à faible latence, pour lesquelles la simplicité opérationnelle est aussi importante que la performance.