La sfida che ci hanno raccontato Alessandro Leoni e Riccardo Pascoletti di Alten all’ultimo Kafka MeetUp non è da poco. Proprio per questo parliamo di Proof of Kafka, una prova di performance, ma anche una ricerca di soluzioni intelligenti per lo streaming.
I requisiti
Si tratta di un cliente con requisiti molto stringenti, a partire dalla garanzia di delivery: una volta che il messaggio è stato ricevuto da Kafka, bisogna avere la certezza che non venga perso. Questo implica la configurazione dell’invio sincrono per i producers, forzandoli ad aspettare un “ack” da tutte le repliche “in-sync” (ISR). Emerge poi l’esigenza di stabilire quanti nodi servano per sopportare il fallimento di almeno due nodi del cluster, sacrificando ovviamente il throughput del sistema.
Il trade-off
Questo trade-off in particolare rischia di contrapporsi a un’ulteriore richiesta da parte del cliente stesso, che si aspetta un rate di 100 messaggi al secondo. Un cluster minimale (3 semplici nodi) è in grado di garantire queste performance, con il vincolo stringente sulla garanzia di delivery? Con quanti consumatori e quante partizioni per il topic, per evitare che si accumuli lag?
I test e un'euristica
I test sono stati effettuati con un produttore in grado di produrre messaggi ad un rate “tunabile”, in modo da sollecitare il cluster in maniera incrementale, e consumatori che verificassero l’integrità dei dati (tra cui, l’ordinamento stretto rispetto all’emittente del dato e senza perdita di messaggi, anche all’aumentare del carico). Parte dei test presentati ha incluso lo spegnimento improvviso di un broker, per verificare che il carico fosse sopportabile anche in caso di fault.
I ragazzi di Alten ci hanno proposto anche una comoda euristica per stimare il dimensionamento dello storage che rispetti un vincolo di 12 ore di retention dei dati, sempre imposto dal cliente.
Apache Kafka, in fondo, è un layer molto sottile sul filesystem, proprio per evitare di aggiungere overhead inutile e garantire bassa latenza ed alto throughput per le applicazioni di stream processing.
Se non avete partecipato all’ultimo #KafkaMeetUpMilan, in fondo alla pagina trovate la registrazione dell’evento, per scoprire tutti i risultati di questo “Proof of Kafka”: buona visione!