Apache Kafka: messaggistica distribuita per l'era dei dati

Apache Kafka introduce un sistema di messaggistica distribuito basato su log append-only, partizionamento, consumer group e retention configurabile per trattare i dati come flusso continuo.

Open SourceNetworking Open SourceApache KafkaMessagingStreamingDistributed Systems

Da LinkedIn al mondo open source

Apache Kafka nasce all’interno di LinkedIn per risolvere un problema concreto: gestire i flussi di dati generati da centinaia di milioni di eventi al giorno — visualizzazioni di pagine, aggiornamenti di profili, metriche operative — e renderli disponibili in tempo reale a decine di sistemi diversi. I sistemi di messaggistica esistenti, come ActiveMQ o RabbitMQ, sono progettati per code di messaggi tradizionali: consegna punto-a-punto o publish-subscribe con eliminazione del messaggio dopo il consumo. LinkedIn ha bisogno di qualcosa di diverso: un sistema che tratti i dati come un flusso continuo e li conservi per essere riletti da più consumatori indipendenti.

Il progetto, sviluppato da Jay Kreps, Neha Narkhede e Jun Rao, viene rilasciato come open source e donato alla Apache Software Foundation.

Un log distribuito come fondamento

L’architettura di Kafka si basa su un concetto semplice: il log append-only. Ogni messaggio pubblicato su un topic viene aggiunto in coda a un file di log e identificato da un offset sequenziale. I messaggi non vengono cancellati dopo la lettura: rimangono disponibili per un periodo definito dalla retention configurata, che può essere di ore, giorni o indefinita.

Ogni topic è suddiviso in partizioni distribuite su più nodi del cluster, chiamati broker. Il partizionamento consente la scalabilità orizzontale: più partizioni significano più throughput, perché produttori e consumatori possono operare in parallelo su partizioni diverse. La replica delle partizioni su broker diversi garantisce la tolleranza ai guasti.

Consumer group e disaccoppiamento

I consumatori si organizzano in consumer group. All’interno di un gruppo, ogni partizione è assegnata a un solo consumatore, garantendo che ogni messaggio venga elaborato una sola volta dal gruppo. Gruppi diversi leggono indipendentemente dallo stesso topic, ciascuno mantenendo il proprio offset. Questo modello permette di avere contemporaneamente un sistema di analytics in tempo reale, un processo di indicizzazione e un servizio di notifiche che leggono tutti gli stessi dati senza interferire tra loro.

Il produttore pubblica messaggi senza sapere chi li consumerà. Il consumatore legge dal log al proprio ritmo, senza che il broker debba gestire lo stato della consegna. Il disaccoppiamento è completo: produttori e consumatori non devono essere attivi simultaneamente.

Dati come flusso

Kafka cambia la prospettiva sulla messaggistica: i dati non sono messaggi da recapitare e dimenticare, ma un flusso persistente da cui ogni sistema attinge ciò che serve, quando serve. Per le organizzazioni che generano volumi significativi di eventi — log applicativi, metriche, transazioni — Kafka fornisce un’infrastruttura su cui costruire pipeline di dati affidabili e scalabili.

Link: kafka.apache.org

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi