Woodpecker
En Milvus 2.6, Woodpecker sustituye a Kafka y Pulsar por un sistema de registro de escritura anticipada (WAL) nativo de la nube y creado específicamente. Diseñado para el almacenamiento de objetos, Woodpecker simplifica las operaciones, maximiza el rendimiento y se escala sin esfuerzo.
Objetivos de diseño de Woodpecker:
Máximo rendimiento en entornos de nube
Registro duradero de sólo apéndices para una recuperación fiable
Mínima sobrecarga operativa sin discos locales ni intermediarios externos
Arquitectura de disco cero
La principal innovación de Woodpecker es su arquitectura de disco cero:
- Todos los datos de registro se almacenan en almacenamiento de objetos en la nube (como Amazon S3, Google Cloud Storage o Alibaba OS).
- Metadatos gestionados a través de almacenes de valores clave distribuidos como etcd
- Sin dependencias del disco local para las operaciones principales
capas de woodpecker
Componentes de la arquitectura
Una implementación estándar de Woodpecker incluye los siguientes componentes:
- Cliente: Capa de interfaz para emitir peticiones de lectura y escritura
- LogStore: Gestiona el almacenamiento en búfer de escritura de alta velocidad, las cargas asíncronas al almacenamiento y la compactación de registros.
- Backend de almacenamiento: Admite servicios de almacenamiento escalables y de bajo coste como S3, GCS y sistemas de archivos como EFS
- Etcd: Almacena metadatos y coordina el estado de los registros en nodos distribuidos
Modos de despliegue
Woodpecker ofrece dos modos de despliegue para adaptarse a sus necesidades específicas:
MemoryBuffer: ligero y sin mantenimiento.
El modo MemoryBuffer ofrece una opción de despliegue sencilla y ligera en la que el cliente integrado de Woodpecker almacena temporalmente en memoria las escrituras entrantes y las descarga periódicamente en un servicio de almacenamiento de objetos en la nube. En este modo, el búfer de memoria está integrado directamente en el cliente, lo que permite un procesamiento por lotes eficiente antes de enviarlos a S3. Los metadatos se gestionan mediante etcd para garantizar la coherencia y la coordinación. Este modo es el más adecuado para cargas de trabajo de lotes pesados en despliegues a pequeña escala o entornos de producción que priorizan la simplicidad sobre el rendimiento, especialmente cuando la baja latencia de escritura no es crítica. La latencia de escritura en este modo suele estar entre 200 y 500 ms.
despliegue del modo de memoria woodpecker
QuorumBuffer - Optimizado para baja latencia y alta durabilidad
El modo QuorumBuffer está diseñado para cargas de trabajo de lectura/escritura sensibles a la latencia y de alta frecuencia que requieren tanto capacidad de respuesta en tiempo real como una fuerte tolerancia a fallos. En este modo, el cliente de Woodpecker interactúa con un sistema de quórum de tres réplicas para proporcionar un almacenamiento en búfer de escritura de alta velocidad, garantizando una fuerte consistencia y alta disponibilidad a través del consenso distribuido.
Se considera que una escritura se ha realizado correctamente cuando el cliente replica los datos en al menos dos de los tres nodos de quórum, lo que normalmente se completa en milisegundos de un solo dígito, tras lo cual los datos se vuelcan de forma asíncrona al almacenamiento de objetos en la nube para una durabilidad a largo plazo. Esta arquitectura minimiza el estado en el nodo, elimina la necesidad de grandes volúmenes de disco locales y evita las complejas reparaciones antientropía que suelen requerir los sistemas tradicionales basados en quórum.
El resultado es una capa WAL racionalizada y robusta, ideal para entornos de producción de misión crítica en los que la consistencia, la disponibilidad y la recuperación rápida son esenciales.
despliegue del modo de quórum de woodpecker
Pruebas de rendimiento
Ejecutamos pruebas comparativas exhaustivas para evaluar el rendimiento de Woodpecker en una configuración de nodo único, cliente único y flujo de registro único. Los resultados fueron impresionantes en comparación con Kafka y Pulsar:
| Sistema | Kafka | Pulsar | WP Minio | WP Local | WP S3 |
|---|---|---|---|---|---|
| Rendimiento | 129,96 MB/s | 107 MB/s | 71 MB/s | 450 MB/s | 750 MB/s |
| latencia | 58 ms | 35 ms | 184 ms | 1,8 ms | 166 ms |
Para contextualizar, hemos medido los límites teóricos de rendimiento de distintos backends de almacenamiento en nuestra máquina de pruebas:
- MinIO: ~110 MB/s
- Sistema de archivos local: 600-750 MB/s
- Amazon S3 (instancia EC2 única): hasta 1,1 GB/s
Sorprendentemente, Woodpecker alcanzó sistemáticamente entre el 60 y el 80% del rendimiento máximo posible para cada backend, un nivel de eficiencia excepcional para el middleware.
Principales datos de rendimiento
- Modo de sistema de archivos local: Woodpecker alcanzó 450 MB/s -3,5 veces más rápido que Kafka y 4,2 veces más rápido que Pulsar- con una latencia ultrabaja de tan solo 1,8 ms, lo que lo hace ideal para implantaciones de un solo nodo de alto rendimiento.
- Modo de almacenamiento en la nube (S3): Al escribir directamente en S3, Woodpecker alcanzó 750 MB/s (alrededor del 68% del límite teórico de S3), 5,8 veces más que Kafka y 7 veces más que Pulsar. Aunque la latencia es mayor (166 ms), esta configuración proporciona un rendimiento excepcional para cargas de trabajo por lotes.
- Modo de almacenamiento de objetos (MinIO): Incluso con MinIO, Woodpecker alcanzó 71 MB/s, alrededor del 65% de la capacidad de MinIO. Este rendimiento es comparable al de Kafka y Pulsar, pero con unos requisitos de recursos significativamente menores.
Woodpecker está especialmente optimizado para escrituras concurrentes de gran volumen en las que es fundamental mantener el orden. Y estos resultados sólo reflejan las primeras fases de desarrollo: se espera que las optimizaciones en curso de la fusión de E/S, el almacenamiento en búfer inteligente y la precarga lleven el rendimiento aún más cerca de los límites teóricos.
Ventajas operativas
La arquitectura nativa de la nube de Woodpecker ofrece importantes ventajas operativas:
- Cero gestión del almacenamiento local: Elimina la gestión de volúmenes de disco, la configuración RAID y los fallos de hardware.
- Escalado automático: El almacenamiento se escala con el almacenamiento de objetos en la nube sin necesidad de planificar la capacidad.
- Rentabilidad: Almacenamiento de pago por uso con niveles y compresión automáticos
- Alta disponibilidad: Aprovecha la durabilidad de 11 nueves de los proveedores de nube con recuperación rápida
- Despliegue simplificado: Dos modos de despliegue (MemoryBuffer/QuorumBuffer) que se adaptan a diferentes necesidades operativas
- Facilidad de desarrollo: Configuración más rápida del entorno y arquitectura coherente en todos los entornos
Estas ventajas hacen que Woodpecker sea especialmente valioso para RAG de misión crítica, agentes de IA y cargas de trabajo de búsqueda de baja latencia en las que la simplicidad operativa es tan importante como el rendimiento.