Woodpecker
In Milvus 2.6, Woodpecker sostituisce Kafka e Pulsar con un sistema di log write-ahead (WAL) appositamente costruito per il cloud. Progettato per l'archiviazione di oggetti, Woodpecker semplifica le operazioni, massimizza il throughput e scala senza sforzo.
Obiettivi di progettazione di Woodpecker:
Massimo throughput in ambienti cloud
Registrazione durevole e di sola appendice per un ripristino affidabile
Minimo overhead operativo senza dischi locali o broker esterni
Architettura a zero dischi
L'innovazione principale di Woodpecker è la sua architettura a zero dischi:
- Tutti i dati di log sono memorizzati in uno storage a oggetti nel cloud (come Amazon S3, Google Cloud Storage o Alibaba OS).
- I metadati sono gestiti attraverso archivi distribuiti di valori-chiave come etcd.
- Nessuna dipendenza dal disco locale per le operazioni principali
strati di woodpecker
Componenti dell'architettura
Una distribuzione standard di Woodpecker comprende i seguenti componenti:
- Client: Livello di interfaccia per l'emissione di richieste di lettura e scrittura
- LogStore: Gestisce il buffering delle scritture ad alta velocità, il caricamento asincrono sullo storage e la compattazione dei registri
- Backend di archiviazione: Supporta servizi di archiviazione scalabili e a basso costo come S3, GCS e file system come EFS
- Etcd: Memorizza i metadati e coordina lo stato dei log tra i nodi distribuiti.
Modalità di distribuzione
Woodpecker offre due modalità di distribuzione per soddisfare le vostre esigenze specifiche:
MemoryBuffer - Leggero e senza manutenzione
La modalità MemoryBuffer offre un'opzione di distribuzione semplice e leggera in cui il client incorporato di Woodpecker bufferizza temporaneamente le scritture in arrivo nella memoria e le invia periodicamente a un servizio di archiviazione di oggetti nel cloud. In questa modalità, il buffer di memoria è incorporato direttamente nel client, consentendo un batching efficiente prima del flushing su S3. I metadati sono gestiti tramite etcd per garantire coerenza e coordinamento. Questa modalità è più adatta per i carichi di lavoro pesanti in batch in distribuzioni su scala ridotta o in ambienti di produzione che privilegiano la semplicità rispetto alle prestazioni, soprattutto quando la bassa latenza di scrittura non è fondamentale. La latenza di scrittura in questa modalità è generalmente compresa tra 200 e 500 ms.
distribuzione della modalità di memoria woodpecker
QuorumBuffer - Ottimizzata per bassa latenza e alta durata
La modalità QuorumBuffer è progettata per carichi di lavoro di lettura/scrittura sensibili alla latenza e ad alta frequenza, che richiedono una reattività in tempo reale e una forte tolleranza agli errori. In questa modalità, il client di Woodpecker interagisce con un sistema quorum a tre repliche per fornire un buffering di scrittura ad alta velocità, garantendo una forte coerenza e un'alta disponibilità attraverso il consenso distribuito.
Una scrittura è considerata riuscita quando il client replica con successo i dati su almeno due dei tre nodi del quorum, in genere completando il tutto entro una cifra di millisecondi, dopodiché i dati vengono scaricati in modo asincrono sullo storage di oggetti del cloud per una durata a lungo termine. Questa architettura riduce al minimo lo stato sui nodi, elimina la necessità di grandi volumi di dischi locali ed evita le complesse riparazioni anti-entropia spesso necessarie nei sistemi tradizionali basati sul quorum.
Il risultato è un livello WAL snello e robusto, ideale per gli ambienti di produzione mission-critical in cui coerenza, disponibilità e ripristino rapido sono essenziali.
implementazione della modalità quorum di woodpecker
Parametri di riferimento delle prestazioni
Abbiamo eseguito benchmark completi per valutare le prestazioni di Woodpecker in una configurazione a singolo nodo, singolo client e singolo log-stream. I risultati sono stati impressionanti se confrontati con Kafka e Pulsar:
| Sistema | Kafka | Pulsar | WP Minio | WP Locale | WP S3 |
|---|---|---|---|---|---|
| Velocità di trasmissione | 129,96MB/s | 107MB/s | 71MB/s | 450MB/s | 750MB/s |
| latenza | 58 ms | 35 ms | 184 ms | 1,8 ms | 166 ms |
Per contestualizzare, abbiamo misurato i limiti teorici di throughput di diversi backend di storage sulla nostra macchina di prova:
- MinIO: ~110 MB/s
- File system locale: 600-750 MB/s
- Amazon S3 (singola istanza EC2): fino a 1,1 GB/s
Notevolmente, Woodpecker ha raggiunto costantemente il 60-80% del throughput massimo possibile per ogni backend, un livello di efficienza eccezionale per un middleware.
Principali informazioni sulle prestazioni
- Modalità file system locale: Woodpecker ha raggiunto 450 MB/s - 3,5 volte più veloce di Kafka e 4,2 volte più veloce di Pulsar - con una latenza bassissima di soli 1,8 ms, che lo rende ideale per le implementazioni a nodo singolo ad alte prestazioni.
- Modalità di archiviazione cloud (S3): Scrivendo direttamente su S3, Woodpecker ha raggiunto 750 MB/s (circa il 68% del limite teorico di S3), 5,8 volte superiore a Kafka e 7 volte superiore a Pulsar. Sebbene la latenza sia più elevata (166 ms), questa configurazione offre un throughput eccezionale per i carichi di lavoro orientati ai batch.
- Modalità di archiviazione degli oggetti (MinIO): Anche con MinIO, Woodpecker ha raggiunto 71 MB/s, circa il 65% della capacità di MinIO. Queste prestazioni sono paragonabili a quelle di Kafka e Pulsar, ma con requisiti di risorse significativamente inferiori.
Woodpecker è particolarmente ottimizzato per le scritture concomitanti ad alto volume, dove il mantenimento dell'ordine è fondamentale. Questi risultati riflettono solo le prime fasi di sviluppo: le ottimizzazioni in corso per quanto riguarda l'unione dell'I/O, il buffering intelligente e il prefetching dovrebbero portare le prestazioni ancora più vicino ai limiti teorici.
Vantaggi operativi
L'architettura cloud-native di Woodpecker offre notevoli vantaggi operativi:
- Zero gestione dello storage locale: Elimina la gestione dei volumi dei dischi, la configurazione RAID e i guasti hardware.
- Scalabilità automatica: Lo storage si adatta allo storage a oggetti del cloud senza dover pianificare la capacità.
- Efficienza dei costi: Storage pay-as-you-go con tiering e compressione automatici
- Alta disponibilità: Sfrutta la durata di 11 nove anni dei provider cloud con un ripristino rapido.
- Distribuzione semplificata: Due modalità di distribuzione (MemoryBuffer/QuorumBuffer) per soddisfare le diverse esigenze operative
- Facilità di sviluppo: Configurazione dell'ambiente più rapida e architettura coerente in tutti gli ambienti
Questi vantaggi rendono Woodpecker particolarmente prezioso per RAG mission-critical, agenti AI e carichi di lavoro di ricerca a bassa latenza, dove la semplicità operativa è importante quanto le prestazioni.